循环中使用SQL查询的自动化错误

曼恩

我正在尝试遍历一个包含相关信息的表,然后将其插入VFP9 .dbf表中。但是,我不断收到自动化错误('-2147217913(80040e07)')。第一次运行似乎很好,在出错之前一次将其插入到表中。每次注释掉代码的执行部分时,我都将其打印出字符串,但是SQL看起来很好。这是什么问题?

Dim conn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim sConnString As String

sConnString = "DSN=Visual FoxPro Tables;UID=;SourceDB=s:\accounting\db;SourceType=DBF;Exclusive=No;BackgroundFetch=Yes;Collate=Machine;Null=Yes;Deleted=Yes;"

Set conn = New ADODB.Connection
Set rs = New ADODB.Recordset
conn.Open sConnString

For i = 1 To [RawTable].Rows.Count
        vStatement = "dong!"
        vAccount = ActiveSheet.ListObjects("RawTable").DataBodyRange.Cells(i, ActiveSheet.ListObjects("RawTable").ListColumns("account").Index)
        vCardUser = ActiveSheet.ListObjects("RawTable").DataBodyRange.Cells(i, ActiveSheet.ListObjects("RawTable").ListColumns("card member").Index)
        vDate = ActiveSheet.ListObjects("RawTable").DataBodyRange.Cells(i, ActiveSheet.ListObjects("RawTable").ListColumns("date").Index)
        vDesc = ActiveSheet.ListObjects("RawTable").DataBodyRange.Cells(i, ActiveSheet.ListObjects("RawTable").ListColumns("description").Index)
        vAmount = ActiveSheet.ListObjects("RawTable").DataBodyRange.Cells(i, ActiveSheet.ListObjects("RawTable").ListColumns("amount").Index)

        MsgBox "INSERT INTO amex_dist (Statement,Account,Card_user,Date,Desc,Amount) VALUES ('" & vStatement & "','" & vAccount & "','" & vCardUser & "','" & vDate & "','" & vDesc & "'," & vAmount & ")"

        conn.Execute ("INSERT INTO amex_dist (Statement,Account,Card_user,Date,Desc,Amount) VALUES ('" & vStatement & "','" & vAccount & "','" & vCardUser & "','" & vDate & "','" & vDesc & "'," & vAmount & ")")
Next i
MsgBox "done :)", vbInformation
If CBool(conn.State And adStateOpen) Then conn.Close
Set conn = Nothing

编辑:这是表格的外观示例。

date       receipt  description card member account #          amount   account
07/01/2016          Purchase     Employee   XXXX-XXXXXX-XXXXX   9.95    41000-000-00
07/01/2016          Purchase     Employee   XXXX-XXXXXX-XXXXX   33      41000-000-00
06/29/2016          Purchase     Employee   XXXX-XXXXXX-XXXXX   64      41000-000-00
巴索德

Visual Foxpro不喜欢仅以String文字或数字系列形式接收日期尝试使用CTOD功能(日期字符),看看是否可以解决问题。Execute行应如下所示:

conn.Execute ("INSERT INTO amex_dist (Statement,Account,Card_user,Date,Desc,Amount) VALUES ('" & vStatement & "','" & vAccount & "','" & vCardUser & "',CTOD('" & vDate & "'),'" & vDesc & "'," & vAmount & ")")

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章