?????????????????!!奇怪的问题 100分求解

cfanliang 2003-12-12 08:21:59
我有一个操作数据库的模块
为什么用SELECT语句时可以,UPDATE不行呢。更新不了数据库




Public Function ExecuteSQL(ByVal sql As String) As ADODB.Recordset
Dim mycon As ADODB.Connection
Dim rst As ADODB.Recordset
Set mycon = New ADODB.Connection
mycon.ConnectionString = connstring
mycon.Open
Dim stokens() As String
On Error GoTo exectuesql_error
stokens = Split(sql)
If InStr("INSER,DELETE,UPDATE", UCase(stokens(0))) Then
mycon.Execute sql
Else
Set rst = New ADODB.Recordset
rst.Open Trim(sql), mycon, adOpenKeyset, adLockOptimistic
Set ExecuteSQL = rst
End If
exectuesql_exit:
Set rst = Nothing
Set mycon = Nothing
Exit Function
exectuesql_error:
Resume exectuesql_exit
End Function


Public Function connstring() As String
connstring = "provider=Microsoft.Jet.OLEDB.4.0;Data source =" & App.Path & "/xs.mdb"

End Function
...全文
17 10 打赏 收藏 举报
写回复
10 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
taosihai1only 2003-12-14
执行了update/insert/delete之后再用select才能得到
更新后的结果,它是不会直接反回记录集的
  • 打赏
  • 举报
回复
IT服务 2003-12-13
我就知道用ACCESS数据库时,如果原来是NULL值,则UPDATE语句不起做用.
  • 打赏
  • 举报
回复
zjcxc 2003-12-13
代码本身没有错,估计是你传递的参数不正确.

你单步调试一下.
  • 打赏
  • 举报
回复
yoki 2003-12-13
这段代码看过好几次了,好像是某本书上的
将你传递的变量贴出来看看,也许是你的update语句错了
  • 打赏
  • 举报
回复
vileboy 2003-12-13
这是那些狗屁书上抄来的吧,我也有这样的书,害人不浅,开始可害苦了我,现在我不用他了,自己用写执行语句。
  • 打赏
  • 举报
回复
vileboy 2003-12-13
你在update时
不要也想select一样用这样的语句:set rst=executesql(select语句)
应当 execute (update语句)
就是说update时不要把结果赋值给变量,因为update时没有返回结果。
  • 打赏
  • 举报
回复
zhizhi625 2003-12-12
'打开记录集,有返回值
Function OpenTable(sel As String) As ADODB.Recordset
Dim rds As New ADODB.Recordset
rds.CursorLocation = adUseClient
rds.Open sel, conn
Set OpenTable = rds
End Function

'执行一句插入,删除,更新的SQL语句
Sub ExectueSQL(strsql As String)
Dim Cmd As New ADODB.Command
Set Cmd.ActiveConnection = conn
On Error Resume Next
conn.BeginTrans
Cmd.CommandText = strsql
Cmd.Execute
If conn.Errors.Count = 0 Then
conn.CommitTrans
Else
conn.RollbackTrans
End If
Set Cmd = Nothing
End Sub
  • 打赏
  • 举报
回复
ucipl 2003-12-12
把recordset 改成command对象吧
再有就是要想返回记录集,执行了update/insert/delete之后再用select才能得到
更新后的结果,它是不会直接反回记录集的
尽量不要使用goto
  • 打赏
  • 举报
回复
dlycz 2003-12-12
Set rst = New ADODB.Recordset
rst.locktype=adLockOptimistic
rst.Open Trim(sql), mycon, adOpenKeyset, adLockOptimistic
Set ExecuteSQL = rst
你没有设定LOCKTYPE,它默认的类型不能更新
  • 打赏
  • 举报
回复
txlicenhe 2003-12-12
Function 换成 sub 是不是更好一些啊?
insert/update/delete时好象没有返回值啊?
  • 打赏
  • 举报
回复
相关推荐
发帖
数据库(包含打印,安装,报表)
加入

1199

社区成员

VB 数据库(包含打印,安装,报表)
申请成为版主
帖子事件
创建了帖子
2003-12-12 08:21
社区公告
暂无公告