【发布时间】:2021-10-17 06:26:46
【问题描述】:
我有三张桌子:
tbl拒绝 RejectionID, Period, TescoYear, TescoWeek, RejectionDate, Packsize, TPNB, TPND, BatchCode, ProductID
tblReason ReasonID, ReasonDesc, Quantity, CasesInspected, InspectedPacks, PercentageAffected, Display until
tblRejectionReason RejectionReasonID(自动编号)、RejectionID、ReasonID
想法是可以添加拒绝,并且可以添加拒绝的原因。
RejectionReason 表的用途是因为拒绝可以有多个拒绝理由。
我只是想插入在 tblRejection 和 tblReason 中创建的 ID 作为每个表各自主键的外键值。
testSQL1 和 testSQL2 工作正常。但是testSQL3并没有将两个表的主键值作为外键值插入到链接表中。
谁能告诉我 testSQL3 有什么问题?
Dim testSQL1 As String
Dim testSQL2 As String
Dim testSQL3 As String
testSQL1 = "INSERT INTO tblRejection (period, tescoyear, tescoweek, rejectiondate, packsize, TPNB, TPND, batchcode, productID) VALUES ('x','xxxx','xx','xxxxx','xxxxx','xxxxxxx','xxxxxx','xxxxxx',1);"
testSQL2 = "INSERT INTO tblReason (reasondescription, quantity, casesinspected, inspectedpacks, affectedpacks, percentageaffected, displayuntil) VALUES ('zzzzzzz',20,100,50,20,'xxxx','xxxxxx');"
testSQL3 = "INSERT INTO tblRejectionReason (rejectionid, reasonid) " & _
'"SELECT tblrejection.rejectionid, tblreason.reasonid " & _
'"FROM tblReason " & _
'"INNER JOIN (tblRejection INNER JOIN tblRejectionReason ON tblRejection.RejectionID = tblRejectionReason.RejectionID) " & _
'"ON tblReason.ReasonID = tblRejectionReason.ReasonID;"
Debug.Print testSQL1
DoCmd.RunSQL testSQL1
Me.Refresh
Debug.Print testSQL2
DoCmd.RunSQL testSQL2
Me.Refresh
Debug.Print testSQL3
DoCmd.RunSQL testSQL3
Me.Refresh`
【问题讨论】:
-
为什么使用 VBA 和 SQL 而不是绑定表单?为什么使用静态值的 SQL?
-
我首先使用静态值进行测试。我有一个表单,用户将填写并通过文本框和组合框将静态值替换为表单中的值