配置:vb6.0  access2003,windows xp
1,在vb中更新access中的数据操作。语句如下:strSql = "update DispatcherInfo set Password = '" & Trim(txtPwdNew.Text) & "'  where DispatcherNumber ='" & Trim(txtDispatcherID.Text) & "'"
与sqlserver连接操作正常。但是与access连接操作报错为:UPDATE 语句的语法错误。Microsoft JET Database Engine。一开始我认为是否是因为Trim(txtPwdNew.Text)类型是string,而类型不匹配的问题。但是我把txtPwdNew.Text改用成int类型的变量的时候仍然报这个错误。另外我还考虑是否是'" & Trim(txtPwdNew.Text) & "'的引用方式出错!我改用过几种方式:#" & Trim(txtPwdNew.Text) & "#
," & Trim(txtPwdNew.Text) & ",还是报一样的错误!
2,我还想知道如果vb中的数据类型在sql语句的条件查询的时候与access表的的数据类型不一致的时候,除了更改数据类型还有什么方法?
谢谢大家!

解决方案 »

  1.   

    strSql = "update DispatcherInfo set Password = '" & Trim(txtPwdNew.Text) & "'  where DispatcherNumber ='" & Trim(txtDispatcherID.Text) & "'"
    问题应该出在条件处吧,DispatcherNumber 是不是数字?
    如是数字,就改为:
    strSql = "update DispatcherInfo set Password = '" & Trim(txtPwdNew.Text) & "'  where DispatcherNumber =" & Trim(txtDispatcherID.Text)
      

  2.   

    myhgyp(也许是这样的,信不信由你) 说得对,如果DispatcherNumber 是数字,就不用''引起来了:
    strSql = "update DispatcherInfo set Password = '" & Trim(txtPwdNew.Text) & "'  where DispatcherNumber =" & Trim(txtDispatcherID.Text) 
      

  3.   

    DispatcherNumber 这个是数字。我试了改成strSql = "update DispatcherInfo set Password = '" & Trim(txtPwdNew.Text) & "'  where DispatcherNumber =" & Trim(txtDispatcherID.Text) 但是还是报一样的错误,即:UPDATE 语句的语法错误。Microsoft JET Database Engine  谢谢二位!我想知道'" & Trim(txtPwdNew.Text) & "'有没有问题?
      

  4.   

    把Trim(txtPwdNew.Text) 改为:"Trim('" & txtPwdNew.Text & "') " 试试
      

  5.   

    不行!trim()里面需要字符串。
      

  6.   

    数据库执行的是SQL语句,与VB里的数据类型没有关系。你把SQL语句输出来,到数据库的查询分析器执行一下。====================
    免费的学习交流网站,欢迎大家访问!
    http://www.j2soft.cn/
    http://j2soft.008.net/
      

  7.   

    语句看起来是没错的,你仔细看看都写对了没有,表名称是否为DispatcherInfo ,两个列名称也都写对了没有(Password ,DispatcherNumber )
      

  8.   

    与你的Access数据库对比,是否都写对了呢
      

  9.   

    单步调试结果是:strsql="update DispatcherInfo set Password='1' where DispatcherNumber=1"
    放在access里面也是能够执行正确!所以名称应该都是正确的!
    1,我认为这条sql语句在在sql 和在access里面运行。可以使用同一条语句!
    2,数据类型不一致我是指:DispatcherNumber ='" & Trim(txtDispatcherID.Text) & "'"中因为DispatcherNumber 是数字字段类型,而txtDispatcherID.Text是string类型。
    3,DispatcherNumber 字段类型是”数字“。Password字段类型是”文本“。
      

  10.   

    是不是与 ACCESS 的连接出了问题,
    用 Provider=Microsoft.Jet.OLEDB.4.0 试试……
      

  11.   

    我用的就是connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\\MDispatch_Ex.mdb;Persist Security Info=False"。与access连接应该没有问题,因为其他的查询语句都可以执行!
      

  12.   

    password='1'也不行?
    我的意思是说是不是你给password赋的字符串太长了。
      

  13.   

    没有!我给password的赋植只是一个’1‘。所以应该不是这个问题!
      

  14.   

    该问题已由:changechange(http://access911.net 是我的个人网站,欢迎光临) ( )解决!原因是password是jet 4.0的保留字!谢谢各位!