我有一个操作数据库的模块
为什么用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
为什么用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
解决方案 »
- 为何 VB6 呼叫 UnmapViewOfFile () 总是不成功
- 問一下VB讀取http網頁文件的代碼
- VB中的问题?
- 求FTP的上传而且有进度条的源程序
- 初学问题~~
- ■■■字符串处理
- 难题!(100分) 问题解决后马上结帐
- 怎样一次删除所有Html标记!在线。。。
- 拔号连接COPYFILE一个问题
- 急!我用VB自带的做安装程序,出现错误: 由于未找到文件 'C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msftqws.pdw\$(DLLSelfRegisterEx)',它不能被注册
- 查询与连接
- 将表格导出到EXCEL中后,如何控制行高 和 单元格的边框显示方式?
insert/update/delete时好象没有返回值啊?
rst.locktype=adLockOptimistic
rst.Open Trim(sql), mycon, adOpenKeyset, adLockOptimistic
Set ExecuteSQL = rst
你没有设定LOCKTYPE,它默认的类型不能更新
再有就是要想返回记录集,执行了update/insert/delete之后再用select才能得到
更新后的结果,它是不会直接反回记录集的
尽量不要使用goto
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
将你传递的变量贴出来看看,也许是你的update语句错了
不要也想select一样用这样的语句:set rst=executesql(select语句)
应当 execute (update语句)
就是说update时不要把结果赋值给变量,因为update时没有返回结果。
更新后的结果,它是不会直接反回记录集的