VB6访问更新查询不更新表

时间:2017-12-04 16:15:03

标签: sql ms-access vb6 access-vba

我正在尝试按顺序将数字添加到do循环中的作业编号的字段中。我的代码没有破坏,但它没有将记录添加到表中。代码是在按下访问表单按钮更新记录时调用的函数中编写的。以下是我的代码:

Dim NumofBatches As Integer
    NumofBatches = [Batches]
    Dim startnum As Integer
    startnum = 1
    Dim jobnum As String
    jobnum = [JobNumber]

    Do While startnum <= NumofBatches
        Dim mynumString As String
        mynumString = startnum
        DoCmd.RunSQL "INSERT INTO Production (CardCode,JobItemNo,JobIndex,DrawingRef,DRDescription,[CreationDate],Quantity,FinishDate,LastLocation,DateLastMoved) VALUES ('" & jobnum & mynumString & "', ItemNumber, JobNumber, DrawingRef, DRDescription, [CreationDate], Quantity, FinishDate, LastLocation, DateLastMoved)"
        startnum = startnum + 1
    Loop

我意识到我会有重复的字段行,除了我想要实现的cardcode字段。 cardcode字段应该在jobnumber的每一行中是连续的。例如,100011,100012,其中10001是作业编号,它依次添加1,2等。

1 个答案:

答案 0 :(得分:2)

你有几个问题。第一个是在SQL语句的INSERT部分的字段列表中。除非您的Production表中有一列名为&#34; CardCode + mynumString&#34; (如果你这样做的话,它必须有方括号,因为它有一个空格和一个符号)它不会起作用。在INSERT INTO <TableName>之后的括号内,您必须列出要插入的表中的列名。首先修复目标列名称。

接下来,您有一个SELECT语句作为您要插入的值的来源。除非您在表格中找到所需的值,否则您应该使用VALUES列表:

INSERT INTO <TableName> (Col1, Col2, ...) VALUES (Val1, Val2, ...)

最后一个问题是您必须将变量连接到SQL字符串中。我将假设[Text90]是一个带有CardCode值的控件,并且您希望将它与mynumString连接起来。这看起来像这样:

DoCmd.RunSQL "INSERT INTO Production (Col1, Col2, ...) VALUES ('" & [Text90] & mynumString & "', Val2, ...)"

请注意,您必须在引用的SQL字符串之外解析您的值,并将该值连接到字符串中,并使用SQL字符串中的单引号将所有内容设置为关闭。

我觉得使用变量构建这样的动态SQL字符串很方便,然后执行它:

DoCmd.RunSQL mySQLVariable

如果在调试期间检查变量,或者只是使用Debug.Print将值转储到即时窗口,那么在变量中使用SQL字符串可以更容易地发现串联中的错误。