执行追加查询不执行任何操作
我有一个奇怪的问题,出于某种原因,它刚刚抬起了丑陋的头。我有一个用于在tblWorkOrder中添加/编辑/删除记录的表单。保存记录后,将检查tblServiceRecord中的伴随记录是否存在,如果不存在(如第一次保存/输入tblWorkOrder中的记录一样),它将执行查询(qryCreateSR)。
几个星期前,它工作得很好。我对此没有任何问题,但是后来我更新了tblServiceRecord以添加几个新列,现在它根本不起作用。但是,查询的SQL不会描述任何这些新列,更不用说tblWorkOrder中的任何特定信息了。因此,我不完全确定该错误是如何产生的。
这是SQL:
public function getWebsiteId()
{
$websiteId = $this->_storeManager->getWebsite()->getWebsiteId();
return $websiteId;
}
这是命令按钮后面的代码:
INSERT INTO tblServiceRecord ( WorkOrderID )
SELECT Forms![frmWorkOrders].Form![txtID];
删除警告抑制后,我遇到一个密钥冲突问题。
不知道是什么原因导致键冲突。我检查了我的表,有问题的两个表是Private Sub cmdSave_Click()
If DCount("*", "[tblServiceRecord]", "[WorkOrderID] = " & [Forms]![frmWorkOrders].[Form]![txtID]) > 0 Then
Else
DoCmd.SetWarnings False
DoCmd.OpenQuery "qryCreateSR"
End If
DoCmd.RunCommand acCmdSaveRecord
DoCmd.GoToRecord , "", acNewRec
Me.lstWorkOrders.Requery
Me.lstWorkOrders.Value = ""
Me.txtComments.Value = ""
cmdSave_Click_Exit:
Exit Sub
cmdSave_Click_Err:
MsgBox Error$
Resume cmdSave_Click_Exit
End Sub
和tblWorkOrder
。两者都没有记录,我压缩了数据库,将链接字段(在tblServiceRecord
中引用了tblServiceRecord
,其中字段tblWorkOrder
)设置为相同的数据类型(数字),并将子表设置为索引(否)。
以防万一有人想看一下数据库本身,这里是一个链接:
https://drive.google.com/open?id=1_T-G9fyYQYjH3-YBe4PXhbBDTKNmY3ce
答案 0 :(得分:2)
尝试将当前记录保存为表格形式(通过设置Me.Dirty = False
),在之前,将记录插入到另一个表中。由于您尝试插入与父表相关的子表,因此在父表中必须具有对应的(保存的)记录。当您在表单中创建新条目时,表中首先不存在该条目,直到第一次保存它为止。
Private Sub cmdSave_Click()
Me.Dirty = False ' Or DoCmd.RunCommand acCmdSaveRecord <==== Save here
If DCount("*", "[tblServiceRecord]", "[WorkOrderID] = " & [Forms]![frmWorkOrders].[Form]![txtID]) = 0 Then
DoCmd.SetWarnings False
DoCmd.OpenQuery "qryCreateSR"
End If
'Removed: DoCmd.RunCommand acCmdSaveRecord <==== instead of here
DoCmd.GoToRecord , "", acNewRec
Me.lstWorkOrders.Requery
Me.lstWorkOrders.Value = ""
Me.txtComments.Value = ""
cmdSave_Click_Exit:
DoCmd.SetWarnings True
Exit Sub
cmdSave_Click_Err: // This code will never run, since a "On Error Goto cmdSave_Click_Err" is missing
MsgBox Error$
Resume cmdSave_Click_Exit
End Sub