缺少逗号错误通过access 2010 vba插入sql时出错

缺少逗号错误通过access 2010 vba插入sql时出错,sql,vba,ms-access,oracle11g,ms-access-2007,Sql,Vba,Ms Access,Oracle11g,Ms Access 2007,有史以来最奇怪的问题。我有一个sql insert语句,它在sql中正常工作。当我将sql放入vba时,它在我的电脑上运行得非常好。但是,它不工作,并显示sql错误:缺少逗号。问题出在哪里???我使用Access 2010 plus,其他人使用相同的Access版本并具有相同的ODB连接(DSN服务器)。一些代码示例: sql = "Driver={Microsoft ODBC for Oracle}; " & _ "CONNECTSTRING=(DESCRIPTI

有史以来最奇怪的问题。我有一个sql insert语句,它在sql中正常工作。当我将sql放入vba时,它在我的电脑上运行得非常好。但是,它不工作,并显示sql错误:缺少逗号。问题出在哪里???我使用Access 2010 plus,其他人使用相同的Access版本并具有相同的ODB连接(DSN服务器)。一些代码示例:

   sql = "Driver={Microsoft ODBC for Oracle}; " & _
        "CONNECTSTRING=(DESCRIPTION=" & _
        "(ADDRESS=(PROTOCOL=TCP)" & _
        "(HOST= ODB)(PORT=1520))" & _
        "(CONNECT_DATA=(SERVICE_NAME=ABTL))); uid=IN; pwd=XXX;"

  Set con = New ADODB.Connection
  Set rec = New ADODB.Recordset
  Set cmd = New ADODB.Command
  con.Open sql

        Set db = CurrentDb()
        Set rst = db.OpenRecordset(strSQL)

Do While Not rst.EOF

insetSQL = con.Execute(" INSERT INTO STOCK (PNM_AUTO_KEY, PN, DESCRIPTION, HISTORICAL_FLAG, qty_oh, qty_adj, qty_available, CTRL_NUMBER, CTRL_ID, receiver_number, rec_date, serial_number,pcc_auto_key, cnc_auto_key, loc_auto_key, whs_auto_key, unit_cost, adj_cost, stc_auto_key, visible_mkt, remarks, ifc_auto_key, exp_date, unit_price, tagged_by, tag_date, owner, PART_CERT_NUMBER,ORIGINAL_PO_NUMBER, SHELF_LIFE, CTS_AUTO_KEY, MFG_LOT_NUM, AIRWAY_BILL )" & _
                                    "  VALUES ( " & rst![minimumas] & ", '" & rst![pn] & "', '" & "FROM_SCRIPT" & "', '" & "F" & "'," & rst![qty_oh] & "," & rst![qty_oh] & "," & rst![qty_oh] & "," & "G_STM_CTRL_NUMBER.nextval" & "," & "1" & ", '" & rst![receiver_number] & "', " & " TO_DATE('" & rst![rec_date] & "','YYYY-MM-DD'), '" & rst![serial_number] & "'," & rst![pcc_auto_key] & "," & rst![cnc_auto_key] & "," & rst![loc_auto_key] & "," & rst![whs_auto_key] & "," & rst![unit_cost] & "," & rst![unit_cost] & "," & "1" & ",'" & "T" & "', '" & rst![remarks] & "'," & _
                                      "1" & ", " & " TO_DATE('" & rst![exp_date] & "','YYYY-MM-DD'), " & "0" & ",'" & rst![TAGGED_BY] & "', " & " TO_DATE('" & rst![tag_date] & "','YYYY-MM-DD'), '" & "" & "', '" & rst![PART_CERT_NUMBER] & "', '" & rst![ORIGINAL_PO_NUMBER] & "', '" & rst![SHELF_LIFE] & "', " & rst![CERT_SOURCE] & ", '" & rst![MFG_LOT_NUM] & "', '" & rst![AIRWAY_BILL] & "'" & " )")

Loop 

可能是字符串数据类型的某个rescordset字段的值包含逗号,但您没有将其视为字符串

乙二醇

要使上述代码正常工作,最小值不能包含任何逗号

您是否确定记录集中的所有字符串字段都已附加到SQL字符串中,并在其周围加了一个'

我们需要看到创建了sql字符串,这会导致错误。请按要求提供

=========================================================

第2部分查看导致错误的SQL

替换

 insetSQL = con.Execute(
与 出错时继续下一步 strMySQl=当前在execute语句中使用的字符串 insetSQL=con.Execute(strMySQl) 如果错误号为0,则 停止 debug.print err.number,err.description debug.print strMySQl 如果结束

然后将即时窗口中打印的sql字符串发布到此站点


我还建议您将在您的计算机上生成的SQL字符串与其他计算机进行比较,以防出现奇怪的情况。

可能是字符串数据类型的某个rescordset字段的值包含逗号,但您没有将其视为字符串

乙二醇

要使上述代码正常工作,最小值不能包含任何逗号

您是否确定记录集中的所有字符串字段都已附加到SQL字符串中,并在其周围加了一个'

我们需要看到创建了sql字符串,这会导致错误。请按要求提供

=========================================================

第2部分查看导致错误的SQL

替换

 insetSQL = con.Execute(
与 出错时继续下一步 strMySQl=当前在execute语句中使用的字符串 insetSQL=con.Execute(strMySQl) 如果错误号为0,则 停止 debug.print err.number,err.description debug.print strMySQl 如果结束

然后将即时窗口中打印的sql字符串发布到此站点



我还建议您将在您的计算机上生成的SQL字符串与其他计算机进行比较,以防发生奇怪的事情。

您说它在VBA中工作得很好,但有一个错误。它能工作吗?除了当你做某事的时候?你能把它看起来像一个字符串吗。因此,我们可以看到是否有任何变量添加了导致问题的内容?看起来很长。我认为您应该尝试添加换行符/换行符。您好,vba代码在我的计算机上运行良好,但在其他计算机上不起作用,导致oracle错误缺少逗号。所以,如果这里的值是错误的,我的机器也不会工作。甚至尝试更改计算机区域设置,但不起作用您说它在VBA中工作得很好,但有一个错误。它能工作吗?除了当你做某事的时候?你能把它看起来像一个字符串吗。因此,我们可以看到是否有任何变量添加了导致问题的内容?看起来很长。我认为您应该尝试添加换行符/换行符。您好,vba代码在我的计算机上运行良好,但在其他计算机上不起作用,导致oracle错误缺少逗号。所以,如果这里的值是错误的,我的机器也不会工作。甚至尝试更改计算机区域设置,但都不起作用您好,vba代码在我的计算机上运行良好,但在其他计算机上不起作用,导致oracle错误缺少逗号。所以,如果这里的值是错误的,我的机器也不会工作。甚至试图更改计算机的区域设置,但在其他计算机引用同一ADO库时都不起作用?另一台计算机是否使用saem oracle帐户?oracle设置是否相同?生成的SQl文本是否相同?(您可以发布创建的SQl文本吗。)SQl文本发布在顶部,我使用它插入额外的列,具有相同ADO库的计算机使用相同的oracle帐户。可能是因为access版本吗?尽管我们确实安装了Office 2010 plus,但当我打开access时,它会显示在我的pc上access 2007-2010,而对于其他显示access 2010,access版本可能是问题所在,但在进一步考虑之前,我认为可以做进一步的调查-请参阅我的回答的第2部分发现问题!!!在DSN选项中也有区域设置,其中应确定浮点数的十进制符号。由于每台电脑的区域设置可能不同,因此在dsn中更改区域设置可以解决问题;)您好,该vba代码在我的计算机上运行良好,但在其他计算机上不起作用,导致oracle错误缺少逗号。所以,如果这里的值是错误的,我的机器也不会工作。甚至试图更改计算机的区域设置,但在其他计算机引用同一ADO库时都不起作用?另一台计算机是否使用saem oracle帐户?oracle设置是否相同?生成的SQl文本是否相同?(您可以发布创建的SQl文本吗。)SQl文本发布在顶部,我使用它插入额外的列,具有相同ADO库的计算机使用相同的oracle帐户。可能是因为access版本吗?尽管我们确实安装了Office 2010 plus,但当我打开access时,它会显示在我的pc上access 2007-2010,而对于其他显示access 2010,access版本可能是问题所在,但在进一步考虑之前,我认为可以做进一步的调查-请参阅我的回答的第2部分发现问题!!!在DSN选项中,也有区域性选项