0

我正在尝试使用 Excel VBA 中的 SQL 将填充了数据的新行插入到一个简单的访问表中,并且无法克服第一个障碍。

我有一个名为“Test”的表,有四个字段;

  • ID [标识为主键的自动编号字段]

  • Text1 [文本字段]

  • YN1 [A 是/否字段]

  • No1 [长整型数字字段]

除了自动编号字段 (PK) 之外,没有设置任何关系或索引。所有字段都将“必填”设置为否,没有设置验证,也没有设置默认值。Text1 可以接受零长度。

我的VBA代码的业务端如下:

'Connection string.
    stcnt = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & stDBPath & stDBname

'Instantiate the ADO-objects
    Set cnt = New ADODB.Connection

'Open the connection for first Query
    With cnt
        .Open (stcnt) 'Open the connection.
        .CursorLocation = adUseClient 

'Test Data
T1 = "ABC123"
Y1 = -1
N1 = 17

        stSQL1 = "INSERT INTO Test(Text1, YN1, No1) " _
                & "VALUES(T1, Y1, N1)"

        .Execute (stSQL1)

    End With

    'Close connection
    cnt.Close

我的变量已适当调暗(Y1 作为布尔值)并且正确声明了路径/数据库名称。

在线上

 .Execute (stSQL1)

我收到错误消息“没有为一个或多个必需参数提供值”

我已经读到您可以省略 AutoNumber 字段及其值(我已经这样做了)。如果没有,有人可以给我包含这个的语法。以我有限的知识/研究,我也可能没有正确对待“YesNo”字段。再次感谢任何处理此问题的建议和语法。

Access 数据库位于我的硬盘驱动器上,无论在运行 VBA 代码时 Access 是打开还是关闭,我都会收到相同的错误。

直接粘贴到 Access 'SQL View' 窗口中的我的 SQL 语句运行良好,并在表测试中插入了正确填充的行。

请专家(尤其是使用正确的语法)帮助我克服这个问题,我们将不胜感激。

4

1 回答 1

3

因为 stSQL1 是一个字符串,所以编译器看不到您希望将变量 T1、Y1 和 No1 插入到字符串中。您需要自己构建字符串:

stSQL1 = "INSERT INTO Test(Text1, YN1, No1) " _
                & "VALUES('" & T1 & "'," & Y1 & "," & N1 & ")"

您需要在文本值周围放置一个单引号。

于 2013-07-24T22:28:05.327 回答