使用ADODB Recordset更新logging

我需要在Excel VBA中更新logging集。 我从CSV中提取数据并使用文本驱动程序连接到文件。 这是我的连接到文件,logging集和更新代码。

Dim con As New ADODB.Connection Dim rs As New ADODB.Recordset con.Open "Driver={Microsoft Text Driver (*.txt; *.csv)};Dbq=C:\Users\jasons\Documents\sl;Extensions=csv;" rs.Open "SELECT *, 0 As item FROM Pct.csv where [Sku No] in ('123455','123456')", con, adOpenDynamic, adLockOptimistic rs.MoveFirst Do Until rs.EOF rs.Fields(0) = 2 rs.MoveNext Loop 

但我不断收到以下错误消息在rs.MoveNext行。

-2147467259- [查询expression式'(item = Pa_RaM001 AND St​​yle Code = Pa_RaM002 AND Sku No = Pa_RaM003')中的[Microsoft] [ODBC Text Driver]语法错误(缺less运算符)。

当我删除循环,并更新为第一个logging

 rs.MoveFirst rs.Fields(0) = 2 

那么它的工作。 我在网上看了一些例子,但是我看不出我做错了什么。 我将不胜感激任何帮助。

您可以使用以下方法使用ADODB生成CSV文件。 更新CSV文件是一个非常糟糕的主意。 我认为ALTER TABLE也是不可能的。 所以这个方法会用新的字段创build一个新的临时表。 然后复制旧表中的数据并设置新字段的数据。 最后将临时表交换为CSV文件。

 Sub ADODB_CSV() Dim con As New ADODB.Connection con.Open "Driver={Microsoft Text Driver (*.txt; *.csv)};Dbq=C:\Users\jasons\Documents\sl;Extensions=csv;" On Error Resume Next con.Execute "DROP TABLE temp.csv" On Error GoTo 0 con.Execute "CREATE TABLE temp.csv (item integer, [Style Code] text, [Sku No] text)" con.Execute "INSERT INTO temp.csv (item, [Style Code], [Sku No]) SELECT 0, [Style Code], [Sku No] FROM Pct.csv WHERE [Sku No] NOT IN ('123455','123456')" con.Execute "INSERT INTO temp.csv (item, [Style Code], [Sku No]) SELECT 2, [Style Code], [Sku No] FROM Pct.csv WHERE [Sku No] IN ('123455','123456')" con.Execute "DROP TABLE Pct.csv" con.Execute "CREATE TABLE Pct.csv (item integer, [Style Code] text, [Sku No] text)" con.Execute "INSERT INTO Pct.csv SELECT * FROM temp.csv" con.Execute "DROP TABLE temp.csv" con.Close End Sub