当前位置:编程学习 > VB >>

盼!如何将Access一个表的内容复制到另个表中?

我这两个表的字段名一样,且都是字符型,不同的地方是源表的字段长度大于目标表的字段长度。各位大侠能不能给点代码? --------------------编程问答-------------------- 现在我是这样做的:
Dim rssbb As New ADODB.Recordset
rssbb.Open "insert into sbb select byk.xh,byk.ksh,byk.xxdm,byk.xxmc,byk.xm,byk.xb,byk.zyh,byk.xz,byk.dqszj,byk.xxxs,byk.bxlx,byk.pycc,byk.pyccsx,byk.rxrq,byk.csrq,byk.sfzh,byk.byrq,byk.bjyjl,byk.zsbh,byk.xzxm,byk.bz from byk order by xh", database, adOpenKeyset, adLockOptimistic, 1
出错提示为:"字段太小不能接受所要添加的数据的值,试着插入或粘贴较少的数据。" --------------------编程问答-------------------- 用两个数据集,循环插入,插入时根据长度截取 --------------------编程问答-------------------- 能不能给点代码? --------------------编程问答-------------------- 或者你的QQ号 --------------------编程问答-------------------- 一、出现这个错误表示你的目标数据表中某些字段长度不够,你应该先检查一下两个表的字段。
二、长度符合后,还要判断目标数据表与源数据表(即你的SQL中的字段列表)的字段个数、类型是否一致。
做了以上两点,应该没问题。 --------------------编程问答-------------------- 对啦,你说源表的字段长度大于目标表,如果不想修改目标表的字段长度,那么你必须保证目标表的字段能存放下使用Trim截取空格后的数据,否则,必须修改目标表的长度。 --------------------编程问答-------------------- 下面是部分代码,仅供参考,是把adojnb表插入adojna表 
Dim lngCount As Integer 
Dim a, b, i As Integer 
Dim excel As String 

        With ADOjnb 
                If .State = adStateOpen Then 
                     Set .ActiveConnection = Nothing 
                    .Close 
                End If 

              .ActiveConnection = ADOsdb 
              .CursorLocation = adUseClient        '这里一定要写aduseclient,我试了另外几种都不行 
              .CursorType = adOpenStatic 
              .LockType = adLockOptimistic 
              .Open "SELECT * From db order by 序号", Options:=adCmdText 
        End With 


        If sfile = "" Then 
        MsgBox "您选择的EXCEL表不存在,请重新导入!", vbInformation, "抱歉!" 
        Exit Sub 
        End If 

        a = 1 
        For i = 1 To 50 
            a = InStr(a, sfile, "\") 
            If a = 0 Then 
                excel = Mid(sfile, b) & sheet 
                Exit For 
            End If 
            a = a + 1 
            b = a 
        Next 
         
        With ADOjna 
            If .RecordCount > 0 Then 
                .MoveFirst 
                .Find "bm ='" & excel & "'" 
                If .EOF = False Then 
                    If .Fields("bm").Value = excel Then 
                        MsgBox "该表已经被添加,请您选择另一张表!", vbInformation, "抱歉!" 
                        Exit Sub 
                    End If 
                End If 
            End If 
        End With 
         

        ADOjnb.MoveFirst 
         
        Do Until ADOjnb.EOF 
         
         

            ADOjna.AddNew 

             
             
            ADOjna![序号] = IIf(IsNull(ADOjnb![序号]), "", ADOjnb![序号]) 
            ADOjna![客户名称] = IIf(IsNull(ADOjnb![用户姓名]), "", ADOjnb![用户姓名]) 
            ADOjna![地区或受理局] = IIf(IsNull(ADOjnb![地区名称]), "", ADOjnb![地区名称]) 

            ADOjna![固定电话] = IIf(IsNull(ADOjnb![上网帐号]), "", ADOjnb![上网帐号]) 
            ADOjna![联系电话] = IIf(IsNull(ADOjnb![联系电话]), "", ADOjnb![联系电话]) 
            ADOjna![登记编号] = IIf(IsNull(ADOjnb![BSS业务流水号]), "", ADOjnb![BSS业务流水号]) 
            ADOjna![送货地址] = IIf(IsNull(ADOjnb![地址]), "", ADOjnb![地址]) 

            ADOjna![宽带类型] = IIf(IsNull(ADOjnb![宽带类型]), "", ADOjnb![宽带类型]) 
            ADOjna![受理时间] = IIf(IsNull(ADOjnb![受理时间]), "", ADOjnb![受理时间]) 
            ADOjna![受理工号] = IIf(IsNull(ADOjnb![受理工号]), "", ADOjnb![受理工号]) 
            ADOjna![机型] = IIf(IsNull(ADOjnb![机型]), "", ADOjnb![机型]) 

            ADOjna![机型序列号] = IIf(IsNull(ADOjnb![机型序列号]), "0", ADOjnb![机型序列号]) 
            ADOjna![显示器] = IIf(IsNull(ADOjnb![显示器]), "", ADOjnb![显示器]) 
            ADOjna![显示器序列号] = IIf(IsNull(ADOjnb![显示器序列号]), "0", ADOjnb![显示器序列号]) 
            ADOjna![送货时间] = IIf(IsNull(ADOjnb![送货时间]), "1999-1-1", ADOjnb![送货时间]) 

            ADOjna![安装情况] = IIf(IsNull(ADOjnb![安装情况]), "", ADOjnb![安装情况]) 
            ADOjna![原由] = IIf(IsNull(ADOjnb![原由]), "", ADOjnb![原由]) 
            ADOjna![完工时间] = IIf(IsNull(ADOjnb![完工时间]), "", ADOjnb![完工时间]) 
            ADOjna![安装工程师] = IIf(IsNull(ADOjnb![安装工程师]), "", ADOjnb![安装工程师]) 

            ADOjna![满意度] = IIf(IsNull(ADOjnb![满意度]), "", ADOjnb![满意度]) 
            ADOjna![地区] = IIf(IsNull(ADOjnb![地区]), "", ADOjnb![地区]) 
            ADOjna![其它] = IIf(IsNull(ADOjnb![其它]), "", ADOjnb![其它]) 
            ADOjna![bm] = IIf(IsNull(excel), "", excel) 
            ADOjna![excel] = IIf(IsNull(Mid(sfile, b)), "", Mid(sfile, b)) 
            ADOjna![sheet] = IIf(IsNull(sheet), "", sheet) 
             
            If ADOjnb![机型] = "g2006cn" Or ADOjnb![机型] = "g2016cn" Or ADOjnb![机型]  <> "" Then 
                ADOjna![zjs] = 1 
            Else 
                ADOjna![zjs] = 0 
            End If 
             
            If ADOjnb![显示器] = "hpvs17e" Or ADOjnb![显示器] = "hpmx705" Or ADOjnb![显示器] = "hpmx705e" Or ADOjnb![显示器]  <> "" Then 
                ADOjna![xsqs] = 1 
            Else 
                ADOjna![xsqs] = 0 
            End If 


            ADOjna.UpdateBatch 
            ADOjnb.MoveNext 
             
             
        Loop 
         
            With ADOjna 
                    If .State = adStateOpen Then 
                         Set .ActiveConnection = Nothing 
                        .Close 
                    End If 

                  .ActiveConnection = ADOsdb 
                  .CursorLocation = adUseClient        '这里一定要写aduseclient,我试了另外几种都不行 
                  .CursorType = adOpenStatic 
                  .LockType = adLockOptimistic 
                  .Open "SELECT * From dnhzb order by 序号", Options:=adCmdText 
            End With 
         
--------------------编程问答-------------------- 这个简单啊,网上搜一下就得到答案了. --------------------编程问答-------------------- 关注 接分 --------------------编程问答-------------------- 类似的问题在 http://topic.csdn.net/u/20080424/10/e065abfa-222b-461a-81bf-fa1990fb742f.html 中的7楼已经回答过了,你看过回复没有?
补充:VB ,  数据库(包含打印,安装,报表)
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,