1、我的数据库为ACCESS格式的数据库,库名为data,连接对象为database。其中有两个表,一个是byk表,另一个是sbb表。现在我想能过两个记录集完成将byk表中的数据全部插入到sbb中。这两个表主要是字段长度不一致。
2、现在我的代码如下:
Dim rssbb As New ADODB.Recordset
Dim rsbyk As New ADODB.Recordset
rsbyk.Open "select * from byk ", database, adOpenKeyset, adLockBatchOptimistic, 1
rssbb.Open "select * from sbb ", database, adOpenForwardOnly, adLockBatchOptimistic, 1
Do While Not rsbyk.EOF
Do While rssbb.EOF
rssbb.AddNew
rssbb.Fields("xh").Value = "123" 'Trim(rsbyk.Fields("xh").Value)
rssbb.Fields("ksh").Value = Trim(rsbyk.Fields("ksh").Value)
rssbb.Update
Loop
rsbyk.MoveNext
Loop
MsgBox "成功"
3、问题:现在程序不报错但sbb表中没有数据插入。
4、请各位大侠帮忙。一旦解决马上给分。

解决方案 »

  1.   


    Dim rssbb As New ADODB.Recordset 
    Dim rsbyk As New ADODB.Recordset 
    rsbyk.Open "select * from byk ", database, adOpenDynamic, adLockOptimistic, 1 
    rssbb.Open "select * from sbb ", database, adOpenDynamic, adLockOptimistic, 1 
    Do While Not rsbyk.EOF 
        rssbb.AddNew 
        rssbb.Fields("xh").Value = "123" 'Trim(rsbyk.Fields("xh").Value) 
        rssbb.Fields("ksh").Value = Trim(rsbyk.Fields("ksh").Value) 
        rssbb.Update 
        rsbyk.MoveNext 
    Loop 
    MsgBox "成功" 
      

  2.   

    Dim rsbyk As New ADODB.Recordset 
    dim i as long
    dim strsql as string
    rsbyk.Open "select * from byk ", database, adOpenKeyset,adlockreadonly
    for i=1 to rsbyk.recordcount
        strsql=" insert into sbb(xh,ksh) values('123','"& trim(rsbyk!ksh) &"')"
        database.execute strsql
        rsbyk.movenext
    next i
    rsbyk.close
    MsgBox "成功" 
      

  3.   

    将长的字段值赋给短的字段值应该根据长度用 Left 函数截短。比如
    database.Execute "INSERT INTO sbb SELECT xh, Left(ksh,3) FROM byk"
      

  4.   

    其实,如果你不对数据进行特别处理的话,用下面的方法直接插入多条记录会好一些database.Execute "insert into sbb (xh,ksh) select trim(xh),trim(ksh) from byk",,1