最多一行一行的insert into  了呀

解决方案 »

  1.   

    dim db As Database
    dim rs as recordset
    Dim strsql As String
    strsql = "select 表名.字段各 from 表名"
    rs1 = db.OpenRecordset(strsql, dbOpenDynaset)
    BeginTrans
    rs1.addnew
    rs1.fields(0)=实际内容‘rs1.field(0)指表中的第一个字段,实际内容的数据类型要同表中字段的类型相同
    ....
    rs1.Update
    CommitTrans
      

  2.   

    以下是我曾经用过的方法,你稍作修改就可以用(DAO方式)
    '--------------------------将文本转换为Access(宝康)----------------@@
    '文本文件名CAPTURED.REC,在转换时要去掉后缀
    'schema.ini为转换时必须的文件,与文本文件在同一目录下
    '此例中以空格作为分隔符,你可视需要修改。
    'CAPTURED.MDB为中间库,也可不要而直接在同一库内操作
      If UCase(Right(SourceFile, 12)) = "CAPTURED.REC" Then
        If Not Fso.FileExists(SourceFolder & "\CAPTURED.MDB") Then
          FileCopy App.Path & "\schema.ini", SourceFolder & "\schema.ini"
          FileCopy App.Path & "\设置信息.mdb", SourceFolder & "\CAPTURED.MDB"
          FileCopy SourceFile, SourceFolder & "\CAPTURED"                      '去掉扩展名
          
          Set SourceFile = Fso.GetFile(SourceFolder & "\CAPTURED")
          Set Ts = SourceFile.OpenAsTextStream(ForReading, TristateUseDefault)
          S = Ts.ReadAll                                                       '读取文件的内容
          Ts.Close
          For I = 8 To 1 Step -1
            S = Replace(S, Space(I), " ")                                      '将所有连续空格替换为单一空格
          Next
          Set Ts = SourceFile.OpenAsTextStream(ForWriting)
          Ts.Write S                                                           '写入文件
          Ts.Close
          
          Set Db = OpenDatabase(SourceFolder & "\CAPTURED.MDB")
          Set Tabel1 = Db.CreateTableDef("Temp")
          Tabel1.Connect = "Text;database=" & SourceFolder
          Tabel1.SourceTableName = "CAPTURED"
          Db.TableDefs.Append Tabel1
          Db.Execute "Select Temp.Number ,路口信息.路口名称,Temp.Date,Temp.Time,Temp.RedTime InTo Vehicle From Temp,路口信息 Where Temp.Roadnum=路口信息.路口代码"
          Db.TableDefs.Delete "Temp"
          Db.TableDefs.Delete "路口信息"
          Db.TableDefs.Delete "方向"
          Db.Close
          Kill SourceFolder & "\CAPTURED"
          Kill SourceFolder & "\schema.ini"
          Set SourceFile = Fso.GetFile(SourceFolder & "\CAPTURED.MDB")
          GoTo Here
        Else
          MsgBox "该数据已转换过", 16, "注意"
          Exit Sub
        End If
      End If
    --------------------------------------------------------------------
    schema.ini文件内容,从Col1开始为字段名,即文本文件的头一行内容
    [CAPTURED]
    ColNameHeader=True
    CharacterSet=OEM
    Format=Delimited( )
    Col1=Number Char Width 12
    Col2=Time Char Width 8
    Col3=Date Char Width 10
    Col4=RoadNum Char Width 14
    Col5=RedTime Char Width 3
    Col6=Speed Char Width 6
    Col7=Length Char Width 4
    Col8=Status Char Width 1
      

  3.   

    以下是我曾经用过的方法,你稍作修改就可以用(DAO方式)
    '--------------------------将文本转换为Access(宝康)----------------@@
    '文本文件名CAPTURED.REC,在转换时要去掉后缀
    'schema.ini为转换时必须的文件,与文本文件在同一目录下
    '此例中以空格作为分隔符,你可视需要修改。
    'CAPTURED.MDB为中间库,也可不要而直接在同一库内操作
      If UCase(Right(SourceFile, 12)) = "CAPTURED.REC" Then
        If Not Fso.FileExists(SourceFolder & "\CAPTURED.MDB") Then
          FileCopy App.Path & "\schema.ini", SourceFolder & "\schema.ini"
          FileCopy App.Path & "\设置信息.mdb", SourceFolder & "\CAPTURED.MDB"
          FileCopy SourceFile, SourceFolder & "\CAPTURED"                      '去掉扩展名
          
          Set SourceFile = Fso.GetFile(SourceFolder & "\CAPTURED")
          Set Ts = SourceFile.OpenAsTextStream(ForReading, TristateUseDefault)
          S = Ts.ReadAll                                                       '读取文件的内容
          Ts.Close
          For I = 8 To 1 Step -1
            S = Replace(S, Space(I), " ")                                      '将所有连续空格替换为单一空格
          Next
          Set Ts = SourceFile.OpenAsTextStream(ForWriting)
          Ts.Write S                                                           '写入文件
          Ts.Close
          
          Set Db = OpenDatabase(SourceFolder & "\CAPTURED.MDB")
          Set Tabel1 = Db.CreateTableDef("Temp")
          Tabel1.Connect = "Text;database=" & SourceFolder
          Tabel1.SourceTableName = "CAPTURED"
          Db.TableDefs.Append Tabel1
          Db.Execute "Select Temp.Number ,路口信息.路口名称,Temp.Date,Temp.Time,Temp.RedTime InTo Vehicle From Temp,路口信息 Where Temp.Roadnum=路口信息.路口代码"
          Db.TableDefs.Delete "Temp"
          Db.TableDefs.Delete "路口信息"
          Db.TableDefs.Delete "方向"
          Db.Close
          Kill SourceFolder & "\CAPTURED"
          Kill SourceFolder & "\schema.ini"
          Set SourceFile = Fso.GetFile(SourceFolder & "\CAPTURED.MDB")
          GoTo Here
        Else
          MsgBox "该数据已转换过", 16, "注意"
          Exit Sub
        End If
      End If
    --------------------------------------------------------------------
    schema.ini文件内容,从Col1开始为字段名,即文本文件的头一行内容
    [CAPTURED]
    ColNameHeader=True
    CharacterSet=OEM
    Format=Delimited( )
    Col1=Number Char Width 12
    Col2=Time Char Width 8
    Col3=Date Char Width 10
    Col4=RoadNum Char Width 14
    Col5=RedTime Char Width 3
    Col6=Speed Char Width 6
    Col7=Length Char Width 4
    Col8=Status Char Width 1
      

  4.   

    你可以用ADO的AddNew方法,或者是ADO的Connection对象的相关方法,当然后者必须对SQL语言相当熟悉才行,建议用Addnew方法。
    方法如下:
    从文本中读出一行(相关的文本操作函数可以在MSdN中找到)
    你的文本格式是采用^分割,那么就判别这一句中的“^”,两个这样符号之间的数据就是有用数据。
    然后用
    对象名.AddNew
    对象名.Fields("字段")=你要添加的数据
    最后使用Update更新。
    OK!
    注意在使用AddNew方法是要了解ADO对象的状态是否处于锁定状态,如果是就不能使用Addnew方法。
      

  5.   

    新建一个EXE工程,然后在工程内添加一个类模块 Class1:Option ExplicitDim inStrSource As String       '源字符串
    Dim inStrSeparator As String    '分隔符字符串
    Dim inCount As Integer          '子串数量
    Dim inSubString() As String     '子串数组
    Dim blnIsExecute As Boolean     '是否已拆分Private Sub Class_Initialize()  '初始化
        inStrSource = ""
        inStrSeparator = ""
        inCount = 0
        ReDim inSubString(0) As String
        inSubString(0) = ""
        blnIsExecute = False
    End SubPublic Property Get SourceString() As String
        SourceString = inStrSource
    End PropertyPublic Property Let SourceString(ByVal vStrSource As String)
        inStrSource = vStrSource
        blnIsExecute = False
    End PropertyPublic Property Get Separator() As String
        Separator = inStrSeparator
    End PropertyPublic Property Let Separator(ByVal vStrSeparator As String)
        If Len(vStrSeparator) <> 1 Then
            vStrSeparator = Left(vStrSeparator, 1)
        End If
        
        inStrSeparator = vStrSeparator
        blnIsExecute = FalseEnd PropertyPublic Function SubStringCount() As Integer
        If Not blnIsExecute Then Call Execute
        
        SubStringCount = inCount
    End Function
    Private Sub Execute()
        Dim intSubStrCount As Integer
        Dim intFirstSubLong As Integer
        Dim strRightString As String
        Dim inStrTemp As String
        
        inStrTemp = inStrSource & inStrSeparator
        
        '循环取值
        While Not Len(inStrTemp) = 0
            intFirstSubLong = InStr(1, inStrTemp, inStrSeparator)
            If Not IsNull(intFirstSubLong) Then
                intSubStrCount = intSubStrCount + 1
                
                '得到各子串值
                ReDim Preserve inSubString(intSubStrCount - 1)
                inSubString(intSubStrCount - 1) = Mid(inStrTemp, 1, intFirstSubLong - 1)
                
                inStrTemp = Mid(inStrTemp, intFirstSubLong + 1, Len(inStrTemp))
            End If
        Wend
        
        '得到子串数量
        inCount = UBound(inSubString()) + 1
        
        blnIsExecute = True
        
    End SubPublic Function SubString(Index As Integer) As String
        If Not blnIsExecute Then Call Execute
        SubString = inSubString(Index)
    End FunctionPublic Function U_Bound() As Integer
        If Not blnIsExecute Then Call Execute
        
        U_Bound = inCount - 1
    End FunctionPublic Function L_Bound() As Integer
        L_Bound = 0
    End Function
      

  6.   

    再在From1中添加如下代码:Option ExplicitPrivate Sub Form_Load()    Dim a As New Class1
            
        Dim fs As Object, ts As Object    Dim fileName As String
        
        Dim txtLine As String
        
        
        Dim cn As Object
        
        Set cn = CreateObject("ADODB.Connection")
        
        Dim sql As String
        
        With cn
            .ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Password=1234;User ID=Admin;Data Source=" & App.Path & "\data.mdb"
            .ConnectionTimeout = 30
            .CursorLocation = adUseClient
        End With
        
        
        
        '要读取的文件,文件每行格式固定为:单位编码^单位名称^单位行业编码^单位行业名称^行政区划编码
        fileName = App.Path & "\tmp.dat"
        
        Set fs = CreateObject("Scripting.FileSystemObject")
        Set ts = fs.OpenTextFile(fileName, ForReading, False)
            
        Do While ts.AtEndOfStream <> True
            txtLine = ts.ReadLine
            
            '处理字符串
            a.SourceString = txtLine
            a.Separator = "^"
            
            sql = sql & ";" & vbCrLf & _
                "Insert Into YourTable(单位编码,单位名称,单位行业编码,单位行业名称,行政区划编码) values(" & _
                "'" & a.SubString(0) & "','" & a.SubString(1) & "','" & a.SubString(2) & "'," & _
                "'" & a.SubString(3) & "','" & a.SubString(4) & "')"
        Loop
        ts.Close
        
        cn.Open    cn.Execute sql    cn.Close
        
        
    End Sub
      

  7.   

    这段代码是我现写的,没有测试,不过,应该不会有问题。good luck