如题。请各位帮忙,最好有示例语句。

解决方案 »

  1.   

    是使用vb的ado工具,用代码实现。
      

  2.   

    这个问题就是多字段记录的录入:
    Insert into sql value (a0,a1,a2,...).....
    dim sqlstr as string
    dim sqlstr1 as string
    dim i as integer
    for i=0 to 29
    if rs.rdocolumns(i).type then 'rs.rdoColumns(i)为数据库表的某一字段
       '字段类型为字符,在两边用引号括起来
       '函数NONULL()用于防止空值出现
       sqlstr=sqlsr&&"'"&&nonull(a(i))&&"',"
    else
       '字段类型为数字型
       sqlstr=sqlstr&&nonull(a(i))&&","
    end if
    next 
     '去掉最后一个逗号分隔符
     sqlstr=left(trim(sqlstr),len(trim(sqlstr))-1)
     'sqlstr1="insert into sql values("&&sqlstr&&")"
     ..... '执行插入语句
      

  3.   

    用循环语句来实现此功能。
    dim db as adodb.connection         '源数据源
    dim rs as adodb.recordset
    set db =new adodb.connection
    set rs =new adodb.recordset 
    dim sql as string
    db.open 数据源
    sql=记录集
    rs.open sql,db
    do while rs.eof
      dim db1 as adodb.connection         '目标数据源
      dim rs1 as adodb.recordset
      set db1 =new adodb.connection
      set rs1 =new adodb.recordset 
      dim sql1 as string
      db1.open 数据源
      sql1=记录集
    rs1.open sql1,db1,2,2                '目标数据源
    rs1.addnew
    rs1("目标标字段")=rs("源字段")
    rs1.update
    rs.movenext
    loop
      

  4.   

    谢谢各位:
        如果在同一个数据库中的两个表中,可以使用insert into ....select *  from ....来实现,速度应该是很快的。如果在不同数据库中的两个表中操作呢?比如:一个是access数据库,一个是sql server数据库。
        楼上提供的几种方法速度是不是较慢。我原来是用ado.addnew..... ado.update,一条一条来写入的,速度很慢。使用insert是不是就很快呢? 请各位指教。
      

  5.   

    mdbcn.CursorLocation = adUseClient
    mdbcn.ConnectionString = "DRIVER=Microsoft Access Driver (*.mdb);UID=admin;DBQ=" & inboxpath & dw & ".up"
    mdbcn.Open
    sn.Open "select * from aaa", mdbcn, adOpenDynamic, adLockOptimistic
    ProgressBar1.Max = sn.RecordCount + 12: DoEvents
    Do While Not sn.EOF
    xl1 = 0: xl2 = 0: xl3 = 0: xl4 = 0: yhid = 0
    dy.Open "select * from aaa where 编号='" & sn("编号") & "'", cn, adOpenDynamic, adLockOptimistic
    If Not dy.EOF Then
    yhid = IIf(IsNull(dy("顾客id")), 0, dy("顾客id"))
    End If
    sn1.Open "select * from bbb where id=" & sn("顾客id"), mdbcn, adOpenDynamic, adLockOptimistic
       If Not sn1.EOF Then
          '增加主管单位
             zgdwid = 0
        If sn1("主管单位id") > 0 Then
           sn2.Open "select * from bbb where id=" & sn1("主管单位id"), mdbcn, adOpenDynamic, adLockOptimistic
           If Not sn2.EOF Then
              dy2.Open "select * from bbb where 编号='" & sn2("编号") & "'", cn, adOpenDynamic, adLockOptimistic
               If dy2.EOF Then dy2.AddNew
                   For i = 1 To sn2.Fields.Count - 1
              dy2.Fields(i) = IIf(IsNull(sn2(dy2.Fields(i).Name)), Null, sn2(dy2.Fields(i).Name))
                   Next
                         dy2("管理单位id") = dwid
                         dy2.Update
                         zgdwid = dy2("id")
                         dy2.Close
                     End If
                     sn2.Close
                     End If
                        sn1.Open "select * from h_审验记录 where 车辆id=" & sn("id"), mdbcn, adOpenDynamic, adLockOptimistic
                        dy1.Open "select * from h_审验记录", cn, adOpenDynamic, adLockOptimistic
                        Do While Not sn1.EOF
                            dy1.AddNew
                            For i = 2 To sn1.Fields.Count - 1
                                dy1.Fields(i) = IIf(IsNull(sn1(dy1.Fields(i).Name)), Null, sn1(dy1.Fields(i).Name))
                            Next
                            dy1("车辆id") = clid
                            dy1.Update
                            sn1.Delete
                            sn1.MoveNext
                        Loop
                        dy1.Close: sn1.Close
      

  6.   

    还是手工的比较好一点
    或者是先把MDB
    的数据库转换成SQL
    然后再用insert语句插入到目标表中
      

  7.   

    看来都是一条一条的操作。使用ado.addonew...... ado.update 与使用insert从速度上来讲到底有多少差别?
      

  8.   

    实际情况是:在一个c/s结构的程序中,access是本地库,sql server是远程库(局域网),通过vb程序使用ado将access中的某个表的数据加到sql server中的某个表中。我原来使用adoRs.addnew,然后adoRs.update来实现,即使操作100条记录也要很长时间(可能跟网络速度有些关系,而且这种方法本来就很慢)。不知有没有更好的方法实现。关键是实现的速度。
      

  9.   

    SQL Server 中能够定义一些Data Transaction Service.
    定时自动更新
    不过大多用于数据库同步
      

  10.   

    看看这篇文章:http://www.csdn.net/develop/read_article.asp?id=18623
      

  11.   

    谢谢lihonggen0(李洪根,用.NET,标准答案来了)我的目的是插入数据,而且目标表中已经有数据,需要将目的表中的数据加入目标表中。将SQL SERVER表里的数据插入到Access表中-- ======================================================在SQL SERVER 里运行:insert into OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',  'Data Source=" c:\DB.mdb";User ID=Admin;Password=')...表名 (列名1,列名2)select 列名1,列名2  from  sql表 实例:insert into  OPENROWSET('Microsoft.Jet.OLEDB.4.0',    'C:\db.mdb';'admin';'', Test) select id,name from Test  INSERT INTO OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'c:\trade.mdb'; 'admin'; '', 表名)SELECT *FROM sqltablename上面是从sql server中把记录插入到access表中,反过来能否可行?
      

  12.   

    当然行了!!newtable是sql server里的一个表
    c:\trade.mdb里有一个bm表
    在查询分析器运行:insert into newtable(bmmc,bmno)SELECT bmmc,bmnoFROM OPENDATASOURCE ('Microsoft.Jet.OLEDB.4.0',       'Data Source="c:\trade.mdb";User ID=Admin;Password=' )...bm
      

  13.   


    象这样:insert into newtable(bmmc,bmno)SELECT bmmc,bmnoFROM OPENDATASOURCE ('Microsoft.Jet.OLEDB.4.0',       'Data Source="c:\trade.mdb";User ID=Admin;Password=' )...bm where bmno=1001
      

  14.   


    insert into newtable(bmmc,bmno)
    SELECT bmmc,bmnoFROM OPENDATASOURCE ('Microsoft.Jet.OLEDB.4.0',       'Data Source="c:\trade.mdb";User ID=Admin;Password=' )...bm where bmno=1001