如题

解决方案 »

  1.   

    插入多条数据可以用批量更新记录集!!
    不过ACCESS处理百万条数据的能力值得怀疑~~~~~rs.Open "SELECT * FROMT TABLENAME", cn, adOpenKeyset, adLockBatchOptimistic
    rs.AddNew
    '插入数据
    rs.UpdateBatch '可以插入多条之后一起更新!
      

  2.   

    我是这样写的,结果运行时提示:实时错误“3704”:如果对象已关闭,则不允许执行应用程序所要求的操作。
    Dim strconn As String
    Dim conn As adodb.Connection
    Dim rssave As adodb.Recordset
    Set conn = New adodb.Connection
    strconn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + App.Path + "\test.mdb;Persist Security Info=False"
    conn.Open strconn
    Set rssave = New adodb.Recordset
    str ="insert into 表1 (一,二,三) values (a,b,c)"
    大循环
    {
    rssave.Open str, conn, adOpenKeyset, adLockBatchOptimistic
    rssave.AddNew '<-----此处
    }
    If MsgBox("保存", vbYesNo) = vbYes Then
            rssave.UpdateBatch
    End If
      

  3.   

    Dim strconn As String
    Dim conn As adodb.Connection
    Dim rssave As adodb.Recordset
    Set conn = New adodb.Connection
    strconn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + App.Path + "\test.mdb;Persist Security Info=False"
    conn.Open strconn
    Set rssave = New adodb.Recordset
    str ="insert into 表1 (一,二,三) values (a,b,c)"
    大循环
    {
    conn.execute str
    }
      

  4.   

    Leftie(左手,为人民币服务) ,这样就没批量更新了啊?
      

  5.   

    就是Leftie(左手,为人民币服务)那样,不用返回值会快些.
    在循环内执行
    str ="insert into 表1 (一,二,三) values (a,b,c)"'这个是在循环内改变的
    conn.execute str
      

  6.   

    不过我也怀疑ACCESS处理百万条数据的能力.
    楼主为何不用SQL SERVER呢?
      

  7.   

    str ="SELECT * FROM  表1"
    大循环
    {
    rssave.Open str, conn, adOpenKeyset, adLockBatchOptimistic
    rssave.AddNew '<-----此处
    rssave!a = "一"
    rssave!b = "二"
    rssave!c = "三"}
    If MsgBox("保存", vbYesNo) = vbYes Then
            rssave.UpdateBatch
    End If
      

  8.   

    cnn.BeginTrans 
    {
    插入数据的大循环

    If MsgBox("保存", vbYesNo) = vbYes Then
       cnn.CommitTrans     
    else
       cnn.RollbackTrans 
    endif
      

  9.   

    cuizm(射天狼) 这回是提示打开错误了实时错误“3705”,
     jtkk() 用事务是可以快一些,但还是需要几个小时,这可能是ACCESS本身的限制吧?(<---我乱猜的)。
    另外,我在ACCESS的一个表中写入65883条记录,文件大小达到1.99G的时候就报错了,难道ACCESS连10万条记录都不能存》(vb6、win98)
      

  10.   

    //文件大小达到1.99G的时候就报错了ACCESS文件太大了,先给它压缩一下
      

  11.   

    1.99G?是2G的单文件容量限制吧!它是FAT32文件系统,单文件最大的容量上限,没办法克服,换成NTFS文件系统就没这个限制了。
      

  12.   

    cuizm(射天狼) 这回是提示打开错误了实时错误“3705”,
    //我已经测试通过了,没有问题啊,你是什么系统,ACCESS版本多少?!
      

  13.   

    2G是单个Mdb上限,加索引后,我试验过1000万的数据。在数据库自身操作还是可以的,通过程序接口会慢些。但几百万数据的=查询是没问题的。我的输入法是采用ACCESS,600万记录条数。打字上屏的速度很快,不比一般输入法几万条的数据慢。
    Acess会因为操作变大,删除数据也不会变小。所以必须用其自带 压缩和修复功能就变小很多。
      

  14.   

    好象ACCESS里没好的方法,以前用过OleDB里的IRowsetFastLoad,但好象只有SQL SERVER支持
      

  15.   

    我在WINDOWS2000及OFFICE2000上试没有问题!!你的ADO版本是多少!?
      

  16.   

    microsoft ado data control 6.0 (oledb)
      

  17.   

    frankwong(黄梓钿--宝贝女儿会逗人开心了) ,关键是写文本都要很长的时间啊
      

  18.   

    批更新最好使用切断记录集:客户端游标CursorLocation=adUseClient
    记录集打开参数使用
    CursorType adOpenStatic
    LockType adLockBatchOptimisticstr ="SELECT * FROM 表1 where 1=2" '不需要修改数据,只需得到空的记录集
    rssave.Open str, conn, adOpenStatic, adLockBatchOptimistic
    打开记录集后,将ActiveConnection属性设为Nothing,断开与数据库的连接然后循环添加记录
    添加完成后rssave.ActiveConnection=strconn'先重新连接数据库
    rssave.UpdateBatch'把本地记录集缓存中的数据更新到数据库
      

  19.   

    以上适用于SQLServer,忘记是Access了~