用ado的addnew将txt文本文件导入到一个空的oracle数据库的表中,为什么总报错“记录集不能为空,”
             难道如果这个表为空的话,就不能用这个方法吗?
              with rs
                 .addnew
                 .fields("text")="aaaaaaaaaaaa"
                 .update
              end with
         即使我把 ".addnew"这一行先注释掉,也是报同样的错。

解决方案 »

  1.   

    Set rs = New Recordset
     lssql = "Select * from table"
     With rs
    .CursorLocation = adUseClient
    .CursorType = adOpenDynamic
    .LockType = adLockOptimistic
    .Open lssql, con
    Open "c:\abcd.txt" For Input As #1
    End With
    While Not EOF(1)
    Line Input #1, lstr
    lsstr = Split(lstr, Chr(9))
       With rs
           .AddNew
             For i = 0 To UBound(lsstr)
           .Fields(i) = lsstr(i)
           .Update
            Next
       End With
      
    Wend
    Close #1
    效率可能不高,但能导入,文本文件是用空格分割的,要保证ORACLE的表的字段数和文本文件的是一样的!
      

  2.   

    错了,chr(9)是用制表符分割的,如果把lsstr = Split(lstr, Chr(9))换成lsstr = Split(lstr),就是空格分割!
      

  3.   

    thank you! 我也是这么做的,但是如果这个表为空的话就报错,但是如果这个表哪怕只有一条记录,就可以陆续的把数据逐条的导入。
      

  4.   

    我试过将表truncate掉再运行上面的代码没有报你说的错误呀!
    我用的是ORACLE8i,操作系统是AIX!
      

  5.   

    忘了说了,我要导入的这个字段是long类型的。
      

  6.   

    用clong函数转换一下看行不行!