Public cnn As ADODB.Connection
Public Function exesql(ByVal sql As String) As ADODB.Recordset
Dim cnn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim stokens() As String
Set cnn = New ADODB.Connectioncnn.CursorLocation = adUseClient
stokens = Split(sql)
cnn.Open "provider=microsoft.jet.oledb.4.0;data source =" & App.Path & "\czp.mdb;jet oledb:database password=syf007"
If InStr("INSERT,DELETE,UPDATE", UCase$(stokens(0))) Then
cnn.Execute sql
Else
Set rs = New ADODB.Recordset
rs.Open Trim$(sql), cnn, adOpenStatic, adLockOptimistic
Set exesql = rs
End If
End Function
下面语句在sqlserver2000数据库中可执行而access中不行txtsql1 = "update pass set password='" & Trim(Text3.Text) & "' where yh='" & Trim(Combo1.Text) & "'"
 Call exesql(txtsql1)

解决方案 »

  1.   

    提示下标越界 “实时错误9”错误语句为 If InStr("INSERT,DELETE,UPDATE", UCase$(stokens(0))) Then
      

  2.   

    将stokens() redim 一下试试
      

  3.   

    出现这个错误应该跟数据库没有关系吧!你看看stokens(0)到底有没有数据啊!
      

  4.   

    看不出有问题,如果sql能执行说明sql句子没有问题,
    看看你的数据库是不是有什么问题
      

  5.   

    在通用段加上
    Option Base 0另,
    stokens = Split(sql," ")
      

  6.   

    楼上的方法不行提示字符串溢出指示在stokens = Split(sql," ")出错对于
    txtsql = "select * from pass where yh='" & Trim(Combo1.Text) & "'"
    call exesql(txtsql)却可以执行
    请大家继续解答