اذهب الي المحتوي
أوفيسنا

مناقشة .. هل يمكن ان يستدعى الاستعلام بيانات خاطئة ؟


Amr Ashraf
إذهب إلى أفضل إجابة Solved by ابو جودي,

الردود الموصى بها

السلام عليكم .. اخوانى الافاضل 

صادفتنى اليوم مشكلة غريبة مع استعلام حدثت من قبل ولكن لم اوليها اهتماما .. فلنفترض ان لدى استعلام مصدر بياناته استعلام آخر الذى بدوره مصدر بياناته استعلام ثالث وهكذا يعنى مثلا 4 او 5 طبقات من استعلامات يعتمدون على بعض تدريجيا حتى الوصول الى استعلام يعطى النتيجة المطلوبة .. الاستعلام الاخير اخرج نتائج خاطئة اليوم وعند غلقه وفتحه اعطى النتائج الصحيحة وكأن شيئا لم يكن .. مع العلم نفس الظروف وبدون تغيير فى اى بيانات فقط اخرج معلومات خاطئة اغلقته ثم فتحته مجددا فأظهر النتائج المفترض اظهارها . كيف يمكن ان يحدث ذلك ؟ 

ملاحظات :

1-القاعدة مقسمة وقاعدة البيانات على الشبكة المحلية .

2-النتائج المفترض اظهارها فى الاستعلام تعتمد بشكل كبير على تجميع القيم واظهار اول و آخر واكبر سجل او تاريخ وهكذا .

3-الاستعلام المشار اليه هو مصدر بيانات نموذج Datasheet ومنه استعرض البيانات , وايضا مصدر لتقارير احيانا تعطى نفس المشكلة ولكن نادراً.

4-المشكلة نادرة ممكن تحدث كل 500 مرة مرة واحدة .

فقط لمعرفة حجم الاستعلامات التى نتحدث عنها انظر االاكواد ..

الدرجة الاولى

SELECT TblPoDtls.ID, TblPoDtls.PONumber, TblPoDtls.ProductCode, TblPoDtls.OrderQty, TblPoDtls.Mold, TblMolds.MoldDescription, TblPoDtls.Machine, TblProducts.ProductName, TblPoDtls.Status, ([OrderQty]-Nz([SumOfAcceptedProduct],0)) AS Remains, TblPoDtls.Zdate, TblMolds.[24HProduct], Round([Remains]/[24HProduct],2) AS DaysRemains, IIf([DaysRemains]>1,"تحت التشغيل",IIf([DaysRemains]<=0,"زيادة","اوشك على الانتهاء")) AS Remark, IIf([Status]<>"منتهى",IIf([Status]<>"منتهى+محمل",IIf([DaysRemains]>0,Format(Date()+[DaysRemains],"dd/mm/yyyy"),""))) AS EndDate, Sum(TblProduction.AcceptedProduct) AS SumOfAcceptedProduct, Sum(TblProduction.RejectedProduct) AS SumOfRejectedProduct, Sum(TblProduction.TotalProduction) AS SumOfTotalProduction
FROM (TblMolds INNER JOIN (TblProducts INNER JOIN TblPoDtls ON TblProducts.ProductCode = TblPoDtls.ProductCode) ON TblMolds.Mold = TblPoDtls.Mold) LEFT JOIN TblProduction ON TblPoDtls.PONumber = TblProduction.PONumber
GROUP BY TblPoDtls.ID, TblPoDtls.PONumber, TblPoDtls.ProductCode, TblPoDtls.OrderQty, TblPoDtls.Mold, TblMolds.MoldDescription, TblPoDtls.Machine, TblProducts.ProductName, TblPoDtls.Status, TblPoDtls.Zdate, TblMolds.[24HProduct]
ORDER BY TblPoDtls.ID, TblPoDtls.Zdate;

الدرجة الثانية

SELECT TblPoDtls.Machine, PO_FollowUp2.Zdate, PO_FollowUp2.ID, TblPoDtls.PONumber, TblPoDtls.Mold, PO_FollowUp2.Status AS S, PO_FollowUp2.EndDate, PO_FollowUp2.MoldDescription, TblPoDtls.ActualEnd, TblProducts.ProductName, PO_FollowUp2.DaysRemains, PO_FollowUp2.SumOfAcceptedProduct, PO_FollowUp2.SumOfRejectedProduct, PO_FollowUp2.SumOfTotalProduction, PO_FollowUp2.[24HProduct], PO_FollowUp2.OrderQty, PO_FollowUp2.Remark, PO_FollowUp2.ProductCode, Nz(Sum(IIf([Year]=Year(Date()),[In])),0) AS YearAdd, Nz(Sum(IIf([Year]=Year(Date()),[Out])),0) AS YearRel, QryPoProductionTillNow.SumIn, QryPoProductionTillNow.SumOut, Nz([Mn],"لم ينتج") AS FirstProduction
FROM ((((TblPoDtls INNER JOIN PO_FollowUp2 ON TblPoDtls.PONumber = PO_FollowUp2.PONumber) INNER JOIN TblProducts ON (TblProducts.ProductCode = TblPoDtls.ProductCode) AND (PO_FollowUp2.ProductCode = TblProducts.ProductCode)) LEFT JOIN QryTransactions ON PO_FollowUp2.ProductCode = QryTransactions.Code) LEFT JOIN QryPoProductionTillNow ON PO_FollowUp2.PONumber = QryPoProductionTillNow.LastOfPONumber) LEFT JOIN QryFirstProductionDate2 ON PO_FollowUp2.PONumber = QryFirstProductionDate2.PONumber
WHERE (((PO_FollowUp2.Status)<>"تحت الدراسة"))
GROUP BY TblPoDtls.Machine, PO_FollowUp2.Zdate, PO_FollowUp2.ID, TblPoDtls.PONumber, TblPoDtls.Mold, PO_FollowUp2.Status, PO_FollowUp2.EndDate, PO_FollowUp2.MoldDescription, TblPoDtls.ActualEnd, TblProducts.ProductName, PO_FollowUp2.DaysRemains, PO_FollowUp2.SumOfAcceptedProduct, PO_FollowUp2.SumOfRejectedProduct, PO_FollowUp2.SumOfTotalProduction, PO_FollowUp2.[24HProduct], PO_FollowUp2.OrderQty, PO_FollowUp2.Remark, PO_FollowUp2.ProductCode, QryPoProductionTillNow.SumIn, QryPoProductionTillNow.SumOut, Nz([Mn],"لم ينتج")
HAVING (((PO_FollowUp2.Zdate) Between #1/1/2021# And #12/31/2022#))
ORDER BY TblPoDtls.Machine, PO_FollowUp2.Zdate, PO_FollowUp2.ID;

الدرجة الثالثة

SELECT Machines_FollowUp.كود_الماكينة, Machines_FollowUp.LastOfPONumber, Machines_FollowUp.LastOfMold, Machines_FollowUp.LastOfMoldDescription, Machines_FollowUp.LastOfProductName, Machines_FollowUp.LastOfS, Nz([LastOfEndDate],[LastOfActualEnd]) AS EndDate, Machines_FollowUp.Remark, Machines_FollowUp.LastOfSumOfAcceptedProduct, Machines_FollowUp.LastOfSumOfRejectedProduct, Machines_FollowUp.LastOfSumOfTotalProduction, Machines_FollowUp.LastOf24HProduct, Machines_FollowUp.LastOfDaysRemains, Machines_FollowUp.LastOfOrderQty, Machines_FollowUp.LastOfRemark, Machines_FollowUp.Expr1, Machines_FollowUp.LastOfProductCode, Machines_FollowUp.Blnc, Machines_FollowUp.LastOfYearAdd, Machines_FollowUp.LastOfYearRel, Machines_FollowUp.LastOfMn, Machines_FollowUp.LastOfSumOfIn, Machines_FollowUp.LastOfSumOfOut, Nz([AvgMonth2020],0) AS AvMonth2020, Nz([MaxMonth2020],0) AS MxMonth2020, Nz([MinMonth2020],0) AS MnMonth2020, Nz([ProducedLastQrt],0) AS ProducedLastQr, Nz([Q1-2020],0) AS Q12020, Nz([Q2-2020],0) AS Q22020, Nz([Q3-2020],0) AS Q32020, Nz([Q4-2020],0) AS Q42020, Nz([Total2020],0) AS All2020, Nz([Q1-2021],0) AS Q12021, Nz([Q2-2021],0) AS Q22021, Nz([Q3-2021],0) AS Q32021, Nz([Q4-2021],0) AS Q42021, Nz([AvgMonth2021]) AS AvMonth2021, Nz([MaxMonth2021],0) AS MxMonth2021, Nz([MinMonth2021],0) AS MnMonth2021, Nz([Total2021],0) AS All2021, Nz([Avgg],0) AS [Av2020-2021], Nz([Minn],0) AS [Min2020-2021], Nz([Maxx],0) AS [Max2020-2021]
FROM Machines_FollowUp LEFT JOIN QryProductionNoFilterSummary ON Machines_FollowUp.LastOfProductCode = QryProductionNoFilterSummary.ProductCode;

الدرجة الثالثة تعتمد على الثانية والتى بدورها تعتمد على الاولى .. مع العلم الاستعلام الاخير هو الذى اعطى نتائج غريبة وبعد فتحه مرة اخرى اعطى النتائج المتوقعة , ولكن بما أنه يعتمد على أكثر من استعلام قبله لم استطع تحديد ايهم سبب المشكلة .

فى انتظار آراء الاساتذة .. دمتم بخير

تم تعديل بواسطه Amr Ashraf
رابط هذا التعليق
شارك

  • أفضل إجابة
1 ساعه مضت, Amr Ashraf said:

السلام عليكم .. 
هل يمكن ان يستدعى الاستعلام بيانات خاطئة ؟

وعليكم السلام ورحمة الله وبركاته

طبعا الاستعلام كاستعلام لن يخطى فلن تأتيك منه الا النتائج المنطقية طبقا لأسلوب بنائه

ولكن لا تنسى وجود lag network والذى بدوره قد يسبب ظهور الأخطاء خاصة فى كبر حجم البيانات ومعالجتها فى الاستعلامات بالطرق المختلفة .. والله اعلم

  • Like 1
  • Thanks 1
رابط هذا التعليق
شارك

27 دقائق مضت, ابا جودى said:

ولكن لا تنسى وجود lag network والذى بدوره قد يسبب ظهور الأخطاء خاصة فى كبر حجم البيانات ومعالجتها فى الاستعلامات بالطرق المختلفة 

اولا عاش من شافك يا ابا جودى .. ثانيا نفس استنتاجى بالضبط ولذلك ذكرت ان البيانات نفسها على الشبكة بس كنت محتاج تأكيد للموضوع .. جزاك الله خير

رابط هذا التعليق
شارك

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

زائر
اضف رد علي هذا الموضوع....

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • اضف...

Important Information