簡體   English   中英

使用帶有變量的 SELECT 語句的 SQL INSERT INTO VALUE 語句

[英]SQL INSERT INTO VALUE statement using a SELECT statement with a variable

我有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 看起來像這樣:

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

選擇將返回具有給定編號的所有任務,每個任務都標有您的公司變量。 所有這些都將插入到您的表中。

如果您可以輕松地在 tbl_task 中定義您想要的所有內容,例如where defaultTasks = 1您可以在一個查詢中插入您需要的所有任務,而無需循環。

感謝您提供非常想要的褲子... :) 我在 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM