Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql VB6 Access更新查询未更新表_Sql_Ms Access_Vb6_Vba - Fatal编程技术网

Sql VB6 Access更新查询未更新表

Sql VB6 Access更新查询未更新表,sql,ms-access,vb6,vba,Sql,Ms Access,Vb6,Vba,我试图在do循环中为作业编号的字段顺序添加一个编号。我的代码没有中断,但它没有将记录添加到表中。代码写入一个函数中,当按下访问表单按钮以更新记录时,该函数将被调用。下面是我的代码: Dim NumofBatches As Integer NumofBatches = [Batches] Dim startnum As Integer startnum = 1 Dim jobnum As String jobnum = [JobNumber] Do

我试图在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
Dim NumofBatches为整数
NumofBatches=[批次]
Dim startnum作为整数
startnum=1
Dim jobnum作为字符串
jobnum=[JobNumber]

当你有两个问题的时候就开始吧。第一个在SQL语句的INSERT部分的字段列表中。除非生产表中有一个名为“CardCode+mynumString”的列(如果有,则必须用方括号括起来,因为它有一个空格和一个符号),否则它将无法工作。在
INSERT INTO
后面的括号内,必须列出要插入的表中的列名。首先修复目标列名

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

INSERT INTO <TableName> (Col1, Col2, ...) VALUES (Val1, Val2, ...)
请注意,您必须解析带引号的SQL字符串之外的值,并将该值连接到该字符串中,然后在SQL字符串内使用单引号将所有这些设置为关闭

我发现使用变量构建这样的动态SQL字符串非常方便,然后将其执行为:

DoCmd.RunSQL mySQLVariable

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

您有几个问题。第一个在SQL语句的INSERT部分的字段列表中。除非生产表中有一个名为“CardCode+mynumString”的列(如果有,则必须用方括号括起来,因为它有一个空格和一个符号),否则它将无法工作。在
INSERT INTO
后面的括号内,必须列出要插入的表中的列名。首先修复目标列名

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

INSERT INTO <TableName> (Col1, Col2, ...) VALUES (Val1, Val2, ...)
请注意,您必须解析带引号的SQL字符串之外的值,并将该值连接到该字符串中,然后在SQL字符串内使用单引号将所有这些设置为关闭

我发现使用变量构建这样的动态SQL字符串非常方便,然后将其执行为:

DoCmd.RunSQL mySQLVariable

如果您在调试过程中检查变量,或者使用Debug.Print将值转储到即时窗口中,那么在变量中包含SQL字符串可以更容易地发现连接中的错误。

回答不错。一个小问题是,如果按顺序使用表中的所有列,则不必提供列名。(也许在Access中不是这样的?我忘了。)谢谢。我不再每天使用Access,所以我不确定,但如果源中的值列表或SELECT语句中提供了每列的值,那么IIRC应该可以跳过目标表上的列规范。确实可以省略列名,但只要表包含自动编号字段,或者即使是一个计算字段,或者得到一个额外的列,您的查询也会失败,因此提供它们是一种很好的做法。很抱歉,我回复晚了几天。我感谢您的回复。我的代码仍然无法与您的建议配合使用。我更新了问题中的代码以反映新的更改。我认为转换序列号以将其与字符串连接起来的方式可能有问题?您的INSERT语句指定了许多列,我认为您真的只希望一个值进入CardCode。在“值”组中,jobnum和mynumString后面的所有名称都将作为文字名称插入。这意味着语句将尝试将单词“DateLastMoved”放入DateLastMoved列。如果表单中有一个值包含DateLastMoved列中所需的日期,则还必须将该值连接到字符串的值部分。你必须对每一个专栏都这样做。回答得很好。一个小问题是,如果按顺序使用表中的所有列,则不必提供列名。(也许在Access中不是这样的?我忘了。)谢谢。我不再每天使用Access,所以我不确定,但如果源中的值列表或SELECT语句中提供了每列的值,那么IIRC应该可以跳过目标表上的列规范。确实可以省略列名,但只要表包含自动编号字段,或者即使是一个计算字段,或者得到一个额外的列,您的查询也会失败,因此提供它们是一种很好的做法。很抱歉,我回复晚了几天。我感谢您的回复。我的代码仍然无法与您的建议配合使用。我更新了问题中的代码以反映新的更改。我认为转换序列号以将其与字符串连接起来的方式可能有问题?您的INSERT语句指定了许多列,我认为您真的只希望一个值进入CardCode。在“值”组中,jobnum和mynumString后面的所有名称都将作为文字名称插入。这意味着语句将尝试将单词“DateLastMoved”放入DateLastMoved列。如果表单中有一个值包含DateLastMoved列中所需的日期,则还必须将该值连接到字符串的值部分。您必须为每一列执行此操作。