मेरे पास तीन टेबल हैं:

tblअस्वीकृति अस्वीकृति आईडी, अवधि, टेस्को वर्ष, टेस्कोवीक, अस्वीकृति दिनांक, पैक आकार, टीपीएनबी, टीपीएनडी, बैचकोड, उत्पाद आईडी

tblकारण कारण आईडी, कारण विवरण, मात्रा, मामलों का निरीक्षण, निरीक्षण किए गए पैक, प्रतिशत प्रभावित, तब तक प्रदर्शित करें जब तक

tblRejectionReason अस्वीकृति कारण आईडी (ऑटोनंबर), अस्वीकृति आईडी, कारण आईडी

विचार यह है कि अस्वीकृति को जोड़ा जा सकता है और अस्वीकृति का कारण जोड़ा जा सकता है।

अस्वीकृति कारण तालिका का उद्देश्य यह है कि अस्वीकृति के कारण अस्वीकृति के कारण से अधिक हो सकते हैं।

मैं बस tblRejection और tblReason में बनाई गई आईडी को प्रत्येक तालिका की संबंधित प्राथमिक कुंजी से विदेशी कुंजी मानों के रूप में सम्मिलित करने का प्रयास कर रहा हूं।

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`
1
Grant Doole 14 अगस्त 2021, 12:08

2 जवाब

सबसे बढ़िया उत्तर

जॉइन का कोई मतलब नहीं है - उन्हें हटा दें। बस FROM tblReason, tblRejection की जरूरत है। यह अभिलेखों के कार्टेशियन संघ का कारण बनता है। आईडी फ़ील्ड की हर संभव जोड़ी बनाने के लिए प्रत्येक तालिका का प्रत्येक रिकॉर्ड अन्य तालिका के प्रत्येक रिकॉर्ड से संबद्ध होता है।

डुप्लिकेट जोड़े को रोकने के लिए tblRejectionReason में कंपाउंड इंडेक्स के रूप में रिजेक्शन आईडी और कारण आईडी फ़ील्ड सेट करें।

0
June7 14 अगस्त 2021, 10:46

मैं गया और अपने डेटाबेस को फिर से डिज़ाइन किया क्योंकि मैंने इसे अत्यधिक जटिल बना दिया था।

अब मेरे पास प्राथमिक और विदेशी कुंजी और एक फॉर्म और सबफॉर्म के साथ दो टेबल हैं।

कई से कई की जरूरत नहीं थी।

0
Grant Doole 2 सितंबर 2021, 18:31