【问题标题】:SQL INSERT INTO VALUE statement using a SELECT statement with a variable使用带有变量的 SELECT 语句的 SQL INSERT INTO VALUE 语句
【发布时间】:2017-11-09 13:15:51
【问题描述】:

我有 2 张桌子:

  • Tbl_Task - 拥有一个进程的所有任务(TaskNum 是唯一的。TaskName 是我要写入 Tbl_Proc 的内容)

  • Tbl_Proc - 将为客户保存每个任务的状态

创建新客户时,我使用关闭事件时的表单将每个任务从 Tbl_Task 写入 Tbl_Proc。我正在使用表单中的客户名称来完成 Tbl_Proc 中的记录。

我的想法是使用一个整数来增加 TaskNum 并将任务编号 TaskName 分配给 Tbl_Proc[ProcTaskName]。然后遍历所有任务编号。如您所见,我一直坚持使用整数变量。

这就是我所拥有的。我可以成功写入公司名称,但无法获取 ProcTaskName:

Private Sub Form_Close()
    On Error GoTo Err_Form_Close

    Dim strCompany As String
    Dim sqls As String
    Dim x As Integer

    strCompany = Me![CoName]
    'MsgBox strCompany
    x = 1

    sqls = "INSERT INTO Tbl_Proc(ProcCo, ProcTaskName)" & _
                    "VALUES ('" & strCompany & "', SELECT TaskName FROM Tbl_Task WHERE TaskNum=""" & x & """)"
    DoCmd.RunSQL sqls
'This works - "VALUES ('" & strCompany & "', 'cat')"

Exit_Form_Close:
    Exit Sub

Err_Form_Close:
    MsgBox Err.Description
    Resume Exit_Form_Close

End Sub

【问题讨论】:

标签: sql ms-access vba ms-access-2013


【解决方案1】:

如果我理解你的要求正确,你希望你的 sql 看起来像这样:

INSERT INTO Tbl_Proc(ProcCo, ProcTaskName)
    SELECT <yourCompanyVariable>, TaskName 
    FROM Tbl_Task 
    WHERE TaskNum=<whateverItIsYouHaveHere>

选择将返回具有您给定编号的所有任务,每个任务都标有您的公司变量。所有这些都将插入到您的表中。

如果您可以轻松地在 tbl_task 中定义您想要的所有内容,例如where defaultTasks = 1,您可以在一个查询中插入您需要的所有任务,而无需循环。

【讨论】:

    【解决方案2】:

    感谢非常需要的裤子的输入人... :) 我在 Tbl_Tasks [TaskDefault] 中添加了另一列,并将所有值设为 1。 以下代码适用于 Microsoft Access 2013 VBA 模块。

    sqls = "INSERT INTO Tbl_Proc(ProcCo, ProcTaskName)" & _
            "SELECT '" & strCompany & "', TaskName " & _
            "FROM Tbl_Task WHERE TaskDefault=1"
    DoCmd.RunSQL sqls
    

    【讨论】:

      猜你喜欢
      • 2012-10-18
      • 1970-01-01
      • 2011-12-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-19
      • 2023-03-06
      • 2014-02-07
      相关资源
      最近更新 更多