把获取的数据集导出到mdb中去,看看是什么错误,请指点一下,谢谢Private Sub Export2Mdb(pRSet As ADODB.Recordset, sFileName As String)
  On Error GoTo ErrorHandler  pRSet.MoveFirst
  Dim pWrk As DAO.Workspace
  Set pWrk = DAO.DBEngine.Workspaces(0)
  Dim pDb As DAO.Database
  Set pDb = pWrk.CreateDatabase(sFileName, dbLangGeneral, dbEncrypt)
  Dim pTabDef As DAO.TableDef
  Set pTabDef = pDb.CreateTableDef("ExportMDB")
  Dim pField As DAO.Field
  Dim FieldType As String
  Dim I As Long
  For Each pField In pRSet.Fields
    Select Case pRSet.Fields(I).Type
      
      Case adNumeric, adInteger, adDecimal, adDouble, adSingle
        FieldType = "alter table exportmdb add column pField.Name NUMBER"
        Execute FieldType
      Case adVarChar, adChar
        FieldType = "alter table exportmdb add column pField.Name TEXT(" & pField.DefinedSize & ")"
        Execute FieldType
      Case adBSTR, adWChar, adVarWChar, adLongVarChar, adLongVarWChar
        FieldType = "alter table exportmdb add column pfield.Name TEXT(255)"
        Execute strAlter
      Case adDate, adDBDate, adDBTime, adDBTimeStamp
        FieldType = "alter table exportmdb add column pfield.Name DATETIME"
        Execute strAlter
      
      Case Else
        FieldType = "alter table exportmdb add column pfield.Name TEXT(255)"
        Execute strAlter
    End Select
  Next pField
  
  Dim rs As DAO.Recordset
  Dim db As DAO.Database
  Set db = OpenDatabase(strFileName)
  Set rs = db.OpenRecordset("SELECT * FROM exportmdb")
  While Not pRSet.EOF
    rs.AddNew
    For I = 0 To pRSet.Fields.Count - 1
        rs.Fields(I) = pRSet.Fields(I)
    Next
    rs.Update
    pRSet.MoveNext
  Loop  MsgBox "导出完毕!"
  Exit Sub
ErrorHandler:
  HandleError False, "Export2Mdb " & c_sModuleFileName & " " & GetErrorLineNumberString(Erl), Err.Number, Err.Source, Err.Description, 4
End Sub

解决方案 »

  1.   

    这个程序有无错误没有细看,但有一点是肯定的:效率不高。
    建议使用select ... into 'd:\a.mdb' 的方式。
      

  2.   

    楼主放到vb里执行一下不就知道有哪些错误了吗,这样光看我也是看不出错误。同意cqq_chen的,你这样打开记录集一条条的赋值效率比用SQL语句真的低上很多倍的,修改一下导入数据这部分吧。
      

  3.   

    不懂DAO,不过有语法错误
    While ...
       ......
    Loop应该:
    While ...
       ......
    Wend
      

  4.   

    或者改成
            DO WHILE Not pRSet.EOF
            LOOP
     也可以
    先将
    On Error GoTo ErrorHandler 注释掉然后在程序里执行,看在什么地方出错
      

  5.   

    对DAO不熟悉,只用ADO了,不过,有没有错误,自己调试不就知道了,况且也不复杂,很好改的
      

  6.   

    while  与 wend ,do 与loop对应!建义楼主用ADO
      

  7.   

    1.既然定义
    FieldType = "alter table exportmdb add column pfield.Name DATETIME"
            Execute strAlter如何下面出现
    Execute strAlter?
    2.For I = 0 To pRSet.Fields.Count - 1
            rs.Fields(I) = pRSet.Fields(I)
        Next
        rs.Update
    rs.Update 应该置于 FOR NEXT循环内
      

  8.   

    当然有错误:
    1 将所有的 strFieldType 改为 strAlter
    2 所有对 pField 的引用都放到括号外,如:
    strAlter = "alter table exportmdb add column " & pField.Name & " NUMBER"3 所有的 Execute 改为 pDb.Execute4 删除下列代码:
      Dim db As DAO.Database
      Set db = OpenDatabase(strFileName)
      并改下一句为:
      Set rs = pDb.OpenRecordset("SELECT * FROM exportmdb")
      

  9.   

    --------------------------------------
    2.For I = 0 To pRSet.Fields.Count - 1
            rs.Fields(I) = pRSet.Fields(I)
        Next
        rs.Update
    rs.Update 应该置于 FOR NEXT循环内
    --------------------------------------原来是对的。再仔细看看。