SQL INSERT INTO VALUE 语句使用带有变量的 SELECT 语句
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>
select 将 return 所有具有您给定编号的任务,每个任务都标有您的公司变量。所有这些都将被插入到您的 table 中。
如果您可以轻松地在 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
我有 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>
select 将 return 所有具有您给定编号的任务,每个任务都标有您的公司变量。所有这些都将被插入到您的 table 中。
如果您可以轻松地在 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