我有两张桌子:
Tbl_Task - 具有进程的所有任务(TaskNum是唯一的.TaskName是我写给Tbl_Proc的东西)
Tbl_Proc - 将保留客户的每项任务的状态
创建新客户时,我正在使用close事件上的表单将每个任务从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
答案 0 :(得分:2)
如果我理解你的问题是正确的,你希望你的sql看起来像这样:
INSERT INTO Tbl_Proc(ProcCo, ProcTaskName)
SELECT <yourCompanyVariable>, TaskName
FROM Tbl_Task
WHERE TaskNum=<whateverItIsYouHaveHere>
选择将返回所有具有您给定号码的任务,每个任务都标有您的公司变量。所有这些都将插入到您的表中。
如果您可以轻松地在tbl_task中定义所需的所有内容,例如where defaultTasks = 1
,您可以在一个查询中插入所需的所有任务,而无需循环。
答案 1 :(得分:0)
感谢非常需要裤子的输入男人...... :) 我向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