我使用的Command对象对数据库进行更新操作,调试中提示Microsoft [ODBC Micrsosft Access Driver ] 参数不足,期待是 1请问各位高手问题出在哪里?

解决方案 »

  1.   

    点击调式,提示出错在Command.Execute行处
      

  2.   

    可能是SQL语句语法错误,建议把SQL语句显示出来看看
      

  3.   

    Private Sub ComUp_Click() '提交按钮
       Dim strSQLChang As String
       Dim lngAffected As Long
       Dim textNum As Integer
       Dim textLeng As Integer
       Dim textNam As String
       Dim textTyp As String
       
       Set cmdChange = New ADODB.Command
       Set cmdChange.ActiveConnection = gafcConnect
       
       textNum = Num.Text
       textNam = Nam.Text
       textTyp = Typ.Text
       textLeng = Leng.Text
               
       strSQLChang = "UPDATE tab_msg_from SET Field_name ='" + Trim(textNum) _
       + "', Field_type=" + Trim(textTyp) + ",Field_length ='" + Trim(textLeng) _
       + "'WHERE Serial_Num=" + Trim(textNum)
         
       cmdChange.CommandText = strSQLChang
       cmdChange.CommandType = adCmdText
       cmdChange.Execute
       
          
       End Sub
      

  4.   

    单步跟踪过了,SQL语句好象没问题
      

  5.   

    检查
    sql语句中你的表和相应的字段是否匹配
      

  6.   

    "' WHERE Serial_Num=" + Trim(textNum) 看看
      

  7.   

    字符串连接最好用&,把+替换成&试一下
    用+可能会和数字运算发生混淆
      

  8.   

    WHERE Serial_Num=" + Trim(textNum)没问题,我想是不是Execute语句需要加参数呢?
      

  9.   

    你的where和前面的语句连接处没有空格哦,问题可能就在这里
      

  10.   

    我把+都改为&号了,可还是报同样的错误,'WHERE 没有空格,因为格式是VB自己控制的
      

  11.   

    strSQLChang = "UPDATE tab_msg_from SET Field_name ='" + Trim(textNum) _
       + "', Field_type=" + Trim(textTyp) + ",Field_length ='" + Trim(textLeng) _
       + "'WHERE Serial_Num='"& Trim(textNum) &"'"后面的WHERE语句加了符号
      

  12.   

    这是我修改的语句:   
       strSQLChang = "UPDATE tab_msg_from SET Field_name ='" + Trim(textNam) _
       + "', Field_type=" + Trim(textTyp) + ",Field_length ='" + Trim(textLeng) _
       + "'WHERE Serial_Num='" & Trim(TextNum) & "'"运行后还是出现同样的错误,先谢谢楼上的各位细心解答,大家再帮忙看看
      

  13.   

    那你这样改看看
    strSQLChang = "UPDATE tab_msg_from SET Field_name ='" & Trim(textNam) & _
       "', Field_type=" & Int(textTyp) & ",Field_length ='" & Trim(textLeng) & _
       "' WHERE Serial_Num=" & Trim(TextNum) Field_name    是字符类型
    Field_type    是整数类型
    Field_length  是字符类型
    Serial_Num    是整数类型如果你的数据表 tab_msg_from 没有错,而字段名和字段类型都和我上面说的一样
    那上面的语句应该可以的
      

  14.   

    //因为格式是VB自己控制的
    "'WHERE Serial_Num='"是一个字符串常量,VB不可能控制的
    应该在where前面加空格的
      

  15.   

    cmdChange.CommandText = strSQLChang
    cmdChange.CommandType = adCmdText
    cmdChange.Execute'''cmdChange.Execute 后面没有执行语句吧,这样试试吧cmdChange.CommandText = strSQLChang
    cmdChange.CommandType = adCmdText
    cmdChange.Execute   strSQLChang
      

  16.   

    仔细核对过各项参数,和数据库一致,也在WHERE前面加了空格,还是出现“参数不足,期待是 1”的报错
      

  17.   

    可以给出 tab_msg_from 数据表结构吗?问题可能就在这
      

  18.   

    tab_msg_from 为access数据库表
    结构 :Serial_Num  数字
           Field_name  文本
           Field_type  文本
           Field_length数字
      

  19.   

    strSQLChang = "UPDATE tab_msg_from SET Field_name ='" & Trim(textNam) & _
       "', Field_type='" & Trim(textTyp) & "',Field_length ='" & Int(textLeng) & _
       "' WHERE Serial_Num=" & Trim(TextNum)
    你的textTyp是正确的变量吗?是不是"textType"?如果是对象最好用对象属性,如:
    textType.Text
      

  20.   

    textTyp在前面的代码中有,这是我自己定义的变量应该没问题啊?
      

  21.   

    引用:
    tab_msg_from 为access数据库表
    结构 :Serial_Num  数字
           Field_name  文本
           Field_type  文本
           Field_length数字
    ==============================================================================
    知道了,你看下面的语句行吗?strSQLChang = "UPDATE tab_msg_from SET Field_name ='" & Trim(textNam) & _
       "', Field_type='" & Trim(textTyp) & "',Field_length =" & Int(textLeng) & _
       " WHERE Serial_Num=" & Int(TextNum)Field_length 是数字,所以不能用 ' 号
    你看看可以吗?
      

  22.   

    呵呵,jidengda(爪哇狂) 真搞笑,呵呵
      

  23.   

    按照SupermanKing(人类) 的改法程序提示SQL语法出错?
      

  24.   

    strSQLChang = "UPDATE tab_msg_from SET Field_name ='" & Trim(textNam) _
       & "',Field_type='" & Trim(textTyp) & "',Field_length =" & Val(textLeng) _
       & " WHERE Serial_Num=" & Val(TextNum)
        gafcConnect
    '---gafcConnect.CursorLocation = adUseClient
    cmdChange.Execute
       
      

  25.   

    根据 GGL123() 修改后,提示出错:字符串的语法错误 在查询表达式 'aa',Field_length =6 WHERE Serial_Num=6'中。
      

  26.   

    谢谢各位,问题解决了,特别是 GGL123() 、 SupermanKing(人类) 、viena(维也纳nn-实心木头人石欠RUKYO)