http://my.csdn.net/my/album/detail/1658630#1658630
ACCESS数据库中建立的表
http://my.csdn.net/my/album/detail/1658630#1658632
txt文本中的数据格式,红色标记部分是想要导入到数据库表中的内容。
Private Sub InputDelay_Click()
Dim cnn As ADODB.Connection
Set cnn = New ADODB.Connection
cnn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=VisssimData.mdb"
cnn.ConnectionTimeout = 30
cnn.OpenDim sSql As String
Dim fileRoute, vlrFilePath As String
Dim id, TIME, NO, Car, CarType, Delay As String
Dim x As Integer
 fileRoute = Form2仿真文件选择.SimFileRoute.Text
  If fileRoute = "" Then
    Beep
    MsgBox "请指定仿真文件路径", vbExclamation + vbOKOnly, "提示"
    Exit Sub
 End If
 x = InStr(fileRoute, ".")
 vlrFilePath = Left$(fileRoute, x - 1) + ".vlr"
 Open vlrFilePath For Input As #1
   Do While Not EOF(1)
    Input #1, TIME, NO, Car, CarType, Delay
    sSql = "insert into CompileDelay(ID,TIME, NO, Car, CarType, Delay) values (ID,TIME , TrimNO ,Car,CarType ,Delay)"
    cnn.Execute (sSql)
    Loop
    Close #1
    MsgBox "完成"
    Set cnn = Nothing
End Subaccess数据库vb

解决方案 »

  1.   

    总是提示insert into 语句有错误,想求大神指教怎么才能把数据成功导入啊
      

  2.   

    sSql = "insert into CompileDelay(ID,TIME, NO, Car, CarType, Delay) values (ID,TIME , TrimNO ,Car,CarType ,Delay)" 时间类型值格式必须是 #日期时间值#
    字串类型            '字串值'
      

  3.   

    另外,你这个sql将变量名当作变量值处理了,必须进行值提取,并转换为文本
      

  4.   


    不好意思啊,我是新手,还说不是很明白您的意思。
    意思是说,我必须先把txt中的数值提取之后,再赋值给表吗,谢谢
      

  5.   

    sSql = "insert into CompileDelay(ID,TIME, NO, Car, CarType, Delay) values (ID,TIME , TrimNO ,Car,CarType ,Delay)" 比如说,ID=123
    那么你要存入数据库是123,而不是ID这两个字母,那么你在执行之前,就需要将ID转换为123
      

  6.   

    1,ssql=" insert into 表名(字符型字段,数值型字段,日期型字段) values('"& 字符型变量 &"',"& 数值型变量 &",#"& 日期型变量 &"#)"
    2,time是系统关键字,建议不要用为表名与字段名使用,一定要用则需要用括号:
       insert into CompileDelay(ID,[TIME], NO, Car, CarType, Delay)
      

  7.   

    SQL 命令是作为字符串传递给数据库引擎的。你所引用的变量值,必须通过转码变为字符串的一部分:sSql = "insert into CompileDelay(ID, [TIME], NO, Car, CarType, Delay) values (" & ID & ",#" & Format(TIME, "yyyy-mm-dd HH:nn:ss") & "#,'" & TrimNO & "','" & Car & "','" & CarType "'," & Delay & ")"其中,数字不加引号,字符加单引号,日期加井号。因为不知道你的数据表域类型,猜测地给出一个例子。自己调整一下。
      

  8.   

    按照您的方法,但是会出现“类型不匹配”的错误。现在我把txt文本里的数据分别放到6个数组中,想通过数组来给表的属性赋值。但是还是会出现错误。数据库表里面的属性,现在都是数字类型的值。Private Sub InputDelay_Click()
    Dim cnn As ADODB.Connection
    Set cnn = New ADODB.Connection
    cnn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=VisssimData.mdb"
    cnn.ConnectionTimeout = 30
    cnn.OpenDim sSql As String
    Dim fileRoute, vlrFilePath As String
    'Dim ID, TIME, NO, Car, CarType, Delay As String
    Dim x As Integer
     fileRoute = Form2仿真文件选择.SimFileRoute.Text
      If fileRoute = "" Then
        Beep
        MsgBox "请指定仿真文件路径", vbExclamation + vbOKOnly, "提示"
        Exit Sub
     End If
     x = InStr(fileRoute, ".")
     vlrFilePath = Left$(fileRoute, x - 1) + ".vlr"
     
     
     Dim y As Integer
     y = 0
     Dim yy As Integer
     yy = 0
     Dim a As Integer
     a = 0
     Dim w As Integer
     w = 0
     Dim z As Integer
     z = 0
     Dim l() As String
     Dim tempstr As String
     
      Open vlrFilePath For Input As #2
     Do While Not EOF(2)
     Line Input #2, tempstr
      y = y + 1
     If InStr(tempstr, "时间;") Then
       y = 0
     End If
     Loop
     Close #2
     'yy = y
     
     ReDim ID1(y - 1) As Integer
     ReDim TIME1(y - 1) As Double
     ReDim NO1(y - 1) As Integer
     ReDim Car1(y - 1) As Integer
     ReDim CarType1(y - 1) As Integer
     ReDim Delay1(y - 1) As Double
     
     Open vlrFilePath For Input As #2
     Do While Not EOF(2)
     Line Input #2, tempstr
     a = a + 1
     If InStr(tempstr, "时间;") Then
       w = a
     End If
     If w > 0 And a > w Then
       l = Split(tempstr, ";")
       z = z + 1
       ID1(z - 1) = z
       TIME1(z - 1) = Trim(l(0))
       NO1(z - 1) = Trim(l(1))
       Car1(z - 1) = Trim(l(2))
       CarType1(z - 1) = Trim(l(3))
       Delay1(z - 1) = Trim(l(4))
      
     End If
       
    Loop
    Close #2
       
     'Open vlrFilePath For Input As #1
      ' Do While Not EOF(1)
        'Input #1, ID, TIME, NO, Car, CarType, Delay
        'sSql = "insert into CompileDelay(id, [TIME], NO, Car, CarType, Delay) values (   ID1  ,  TIME1  , NO1  ,  Car1  ,  CarType1  ,  Delay1  )"
        sSql = "insert into CompileDelay(id, [TIME], NO, Car, CarType, Delay) values (" & ID1 & "," & TIME1 & "," & NO1 & "," & Car1 & ", " & CarType1 & "," & Delay1 & ")"
        cnn.Execute (sSql)
       ' Loop
        'Close #1
        MsgBox "完成"
        Set cnn = Nothing
    End Sub