当用connection对象CNN.Execute一个SQL语句时提示"实时错误-2147217904(80040e10)至少一个参数没有被指定值".
我是将一个表中的数据导入另一个表时出现这个错误提示的,错误是因为目标表中的字段名与源表字段名不一致引起的,但我在模块中已经加入了错误处理语句,为什么不能拦截错误呢?

解决方案 »

  1.   

    Public Sub xx()
        On Error GoTo ExitHandler    ......
        Cnn.Execute strSQL
        .......    Exit Sub
    ExitHandler:
        Msgbox Err.Description
    End Sub
      

  2.   

    你的SQL 语句有问题 建议你 将勾建的SQL语句在ACCESS的设计器里 调试 调试
      

  3.   

    我知道SQL语句有问题,因为SQL语句中带有变量,当变量的值与SQL语句中的条件值不同时肯定会出错,但如何拦截这个错误呢?我的错误处理代码和你写的是一样的?我想知道如何拦截这个错误?
      

  4.   

    你设下断点试下,看那有问题
    我下面的代码可以实现
    Dim con As ADODB.Connection
    Dim rs As ADODB.Recordset
    Private Sub Form_Load()
        Set con = New Connection
        Set rs = New Recordset
        If connectiontodb = True Then
            Set rs = con.Execute("select * from PUBS")
            Set DataGrid1.DataSource = rs
        Else
            MsgBox "连接失败"
    End If
    End Sub
    Public Function connectiontodb() As Boolean
    On Error GoTo err
        con.ConnectionString = " Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=master;Data Source=(local)"    con.ConnectionTimeout = 25
        
        con.CursorLocation = adUseClient
       
        con.Open
        
        connectiontodb = True
        Exit Function
    err:
        connectiontodb = FalseEnd Function
      

  5.   

    可能SQL语句里面有   对象的值。如
    EXECUTE "INSERT INTO 表名  (A,B,C) VALUES ('"&TEXT1.TEXT &"',....)
    有TEXT1.TXT 这样肯定错误的,可以先用变量如
    SQL="INSERT INTO 表名  (A,B,C) VALUES ('"&TEXT1.TEXT &"',....)
    再 EXECUTE SQL
      

  6.   

    我是将temptable表中的数据导入xjb,SQL 语句是tempsql="insert into xjb select * from temptable where temptable.xh not in (select xh from xjb)" 然后cnn.execute(tempsql),如果temptable表中没有xh这一字段肯定出错,单步执行到cnn.execute(tempsql)报错,不会进入错误处理语句,那么应该在什么地方拦截这一错误呢?
      

  7.   

    在勾建的SQL语句 处设断 然后 将内容考出来 调试  要不你把代码帖出来
      

  8.   

    把勾建的SQL语句的内容粘出来