数据库AAA中有2张表格,分别是DDD(商品信息表)和EEE(商品名录),EEE(商品名录表)中有Sysno(系统编号)和commno(商品编号)2个字段,系统编号单一对应一个商品编号。DDD(商品信息表)中有两个字段,Sysno(系统编号)和commname(商品名称)。。需求:从商品名称(DDD表中的commname)字段中,查找含有商品名录中商品编号(EEE-commno)的字段,并将相应的系统编号更新进入DDD表格相应位置。                 DDD                                              EEEsysno       commname                        sysno       commno(空)     三星NH004电视机                S01         NH004(空)     NH004 三星电视机               S02         MI001(空)     小米MI001电视机                         (空)     小米电视机 MI001                       (空)     三星电视机NH004                 (空)     MI001小米电视机                  自动将DDD的(空)字符段赋值Option Compare DatabaseSub Date_SysNoInput() Dim AAA As ADODB.ConnectionDim abc As ADODB.RecordsetSet AAA = CurrentProject.ConnectionSet abc = New ADODB.Recordsetabc.LockType = adLockBatchOptimisticabc.Open "EEE", AAA, , , adCmdTable Dim bl_sysno As StringDim bl_commno As StringDim sql As String Do While abc.EOF   bl_sysno = abc!SysNo   bl_commno = abc!CommNo   abc.MoveNext   sql = "UPDATE [DDD] SET [DDD].SysNo = "bl_sysno"WHERE ((([DDD].CommName)="bl_commno" Or ([DDD].CommName) Like "*bl_commno" Or ([DDD].CommName) Like "*bl_commno*" Or ([DDD].CommName) Like "bl_commno*"));"        DoCmd.RunSQL "sql"Loop abc.CloseAAA.CloseSet abc = NothingSet AAA = NothingEnd Sub

解决方案 »

  1.   

    来点建议:
    1、代码不能运行那是你的问题===>你必须让代码能够运行起来;
    2、代码运行起来后出现错误,标识出错的地点和错误提示;
    3、发代码的话,最好放在这里:你的代码,这样看起来舒服点。另外:在你的sql=....语句后面设置一个断点或添加一行 debug.print sql看看结果是什么....
      

  2.   

    他那句赋值语句明显是语法错误。
    在VB6中没有象C/C++、Java等语言中的“转义”字符,双引号是用来把“字符串括起来”的。
    如果要把双引号作为字符串的内容,可以用连续的两个双引号表示一个双引号,
    (这也许是VB6中唯一的“转义字符” )
    或者,把你的SQL语句中的双引号全部改用单引号。
      

  3.   

    看起来问题比较多,首先 Do While abc.EOF 这个语句就有问题,意思是当记录集指针到达末尾是才能进入Do循环,主页有意义吗?应该修改为 Do While Not abc.EOF,这样就是记录集指针没有到达末尾时进入Do循环,到达末尾后退出循环。abc.Open "EEE", AAA, , , adCmdTable 中EEE在哪里,AAA后面三个,号应该不对吧?EEE是连接数据表的字符串,没有EEE怎么连接?你的二个对象的声明好像是SP2以前的声明格式,在SP2以后就没有这样声明的,应该这样:
    Dim AAA As New ADODB.Connection
    Dim abc As New ADODB.Recordset就可以,不需要Set AAA = CurrentProject.Connection 等语句。
      

  4.   

    今天看了你的程序,问题非常多,肯定运行不起来,即就是运行起来,也是没有办法运行下去。
    首先你必须建立一个数据库,数据库中有二个数据表,DDD、EEE,没有数据库怎么运行?给你简单做一个:
    Dim AAA As New ADODB.Connection, ABC As New ADODB.Recordset, CDE As New ADODB.RecordsetSub KKK(AAA)
    AAA.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & App.Path & "\BBB1.accdb"
    AAA.Open
    End SubPrivate Sub Form_Load()
    Call KKK(AAA)
    CDE.Open "Select * From EEE", AAA, 3, 2
    Do While Not CDE.EOF
    ABC.Open "Select * From DDD WHERE commname LIKE '%" & CDE.Fields(2) & "%'", AAA, 3, 2
       Do While Not ABC.EOF
       ABC.Fields(1) = CDE.Fields(2)   '将EEE表中的commno的值存储到DDD表的sysno的相应字段中
       ABC.Update
       ABC.MoveNext
       Loop
    ABC.Close
    CDE.MoveNext
    Loop
    CDE.Close
    AAA.Close
    MsgBox "操作完成!"
    End Sub
    不是很复杂的,看图,左边是操作前的DDD表,右边是操作后的DDD表