Amr Ashraf قام بنشر مارس 3, 2021 قام بنشر مارس 3, 2021 السلام عليكم .. اخوانى الافاضل عندى مشكلة غريبة واتمنى سعة الصدر لطول الموضوع نسبيا , المشكلة كما العنوان تحدث فى قاعدة بيانات Accde فى نموذج مستمر Continuous Form مصدره كالتالى : SELECT Bom.productcode, Bom.code, Bom.Item, Bom.cons, Bom.BomNumber, [Item Names].Type, Bom.Remarks FROM [Item Names] INNER JOIN Bom ON [Item Names].code = Bom.code WHERE (((Bom.productcode)=Forms!FrmNewPo!t0) And ((Bom.BomNumber)=Forms!FrmNewPo!Bom)); المشكلة تحدث عند ضغط زر الامر بالكود التالى : Private Sub Command204_Click() DoCmd.OpenForm "Robot" DoCmd.GoToRecord , , acNewRec Forms![Robot]![PONumber] = Me.T7 Forms![Robot]![productcode] = Me.t0 Forms![Robot]![OrderQty] = Me.T3 Forms![Robot]![zdate] = Me.T6 Forms![Robot]![Mold] = Me.Mold Forms![Robot]![Machine] = Me.Machine Forms![Robot]![Status] = Me.Status Forms![Robot]![ProductBomNum] = Me.Bom DoCmd.Close Dim sql As DAO.Recordset Set sql = CurrentDb.OpenRecordset("TblPoMaterials", dbOpenDynaset) DoCmd.SetWarnings False DoCmd.GoToRecord , , acFirst 'بداية المشكلة من هذا السطر For m = 1 To T8 With sql .AddNew !PONumber = T7 !MaterialCode = Code1 !MaterialName = T1 !ProductionDate = T6 !Shift = "none" !cons = T2 !AdditionPercent = Text324 !MaterialType = Text300 !OrderQty = T3 .Update End With DoCmd.GoToRecord , , acNext Next m MsgBox "Done", vbInformation, "Saved successfully" DoCmd.SetWarnings True t0 = "" T6 = "" T7 = "" T3 = "" T10 = "" T10 = "" Status = "" BomCombo = "" Me.ComboMachine = "" Me.ComboMold = "" Mold = "" Machine = "" T216 = "" Me.Requery بالنسبة لأول جزء من الكود مهمته الحاق البيانات فى جدول ما والجملة Sql لالحاق جزء التفاصيل Detail من النموذج الى جدول اخر ,, عند حدوث المشكلة يتم الحاق جزء الهيدر "مهمة النموذج Robot" اما بالنسبة للتفاصيل فلا تضيف حتى السطر الاول منها وبالتالى شككت فى سطر فى الكود بجواره ملاحظه .. قلت اجرب طريقة تانية بدل جملة SQL وقمت بعمل استعلام الحاق مهمته نفس مهمة جملة Sql وكود كالتالى : INSERT INTO TblPoMaterials ( PONumber, MaterialCode, MaterialName, Cons, MaterialType, ProductionDate, Shift, AdditionPercent, OrderQty ) SELECT [Forms]![FrmNewPo]![T7] AS Expr1, [Forms]![FrmNewPo]![Code1] AS Expr2, [Forms]![FrmNewPo]![T1] AS Expr3, [Forms]![FrmNewPo]![T2] AS Expr6, [Forms]![FrmNewPo]![Text300] AS Expr8, [Forms]![FrmNewPo]![T6] AS Expr4, "none" AS Expr5, [Forms]![FrmNewPo]![Text324] AS Expr7, [Forms]![FrmNewPo]![T3] AS Expr9; فاصبح الكود خلف زر الامر بالشكل التالى : Private Sub Command204_Click() DoCmd.OpenForm "Robot" DoCmd.GoToRecord , , acNewRec Forms![Robot]![PONumber] = Me.T7 Forms![Robot]![productcode] = Me.t0 Forms![Robot]![OrderQty] = Me.T3 Forms![Robot]![zdate] = Me.T6 Forms![Robot]![Mold] = Me.Mold Forms![Robot]![Machine] = Me.Machine Forms![Robot]![Status] = Me.Status Forms![Robot]![ProductBomNum] = Me.Bom DoCmd.Close DoCmd.SetWarnings False DoCmd.GoToRecord , , acFirst For m = 1 To T8 DoCmd.OpenQuery "QryAppendMat2" DoCmd.GoToRecord , , acNext Next m MsgBox "Done", vbInformation, "Saved successfully" DoCmd.SetWarnings True t0 = "" T6 = "" T7 = "" T3 = "" 'T5 = "" T10 = "" T10 = "" Status = "" BomCombo = "" Me.ComboMachine = "" Me.ComboMold = "" Mold = "" Machine = "" T216 = "" Me.Requery ولكن استمرت المشكلة ومش عارف المشكلة من ايه بالتحديد وعندى مجموعة ملاحظات , المشكلة مش بتحصل فى القاعدة Accdb مع جداول مرتبطة او مدمجة فى القاعدة قبل فصلها ولكن بتحصل مع Accde فقط المشكلة ممكن تحصل وممكن متحصلش بنفس الظروف وبنفس البيانات يعنى لو حصلت المشكلة وكررت العملية تانى بعد غلق وفتح النموذج ممكن العملية تشتغل تمام بدون اى مشكلة يعنى المشكلة مش سببها حقول فارغة او اختلاف فى نوعية البيانات . حذفت صورة المشكلة بالخطأ ولكن اتذكر ان فيها جزء In Design View يعنى ان النموذج ممكن يكون فى وضع التصميم ازاى فى قاعدة Accde مش عارف بس ممكن يكون تذكرى اللى خاطئ فهلتزم بالنقط اللى متأكد منها . المشكلة ممكن تحصل مرة كل 5 محاولات وممكن تحصل 2 كل 5 محاولات وممكن متحصلش من الاساس , اعتذر مرة اخرى لطول الموضوع واتطلع للمناقشة مع الاساتذة .. دمتم بخير
jjafferr قام بنشر مارس 3, 2021 قام بنشر مارس 3, 2021 وعليكم السلام 🙂 ولو اننا نحاول نضرب هدف في الظلام ، ولكن الله يسهل 🙂 جرب هذا التعديل في الكود الاصل: Private Sub Command204_Click() DoCmd.OpenForm "Robot" DoCmd.GoToRecord , , acNewRec Forms![Robot]![PONumber] = Me.T7 Forms![Robot]![ProductCode] = Me.t0 Forms![Robot]![OrderQty] = Me.T3 Forms![Robot]![zdate] = Me.T6 Forms![Robot]![Mold] = Me.Mold Forms![Robot]![Machine] = Me.Machine Forms![Robot]![Status] = Me.Status Forms![Robot]![ProductBomNum] = Me.Bom DoCmd.Close Dim sql As DAO.Recordset Dim Lsql As DAO.Recordset Set sql = CurrentDb.OpenRecordset("TblPoMaterials", dbOpenDynaset) Set Lsql = Me.RecordsetClone 'DoCmd.SetWarnings False 'DoCmd.GoToRecord , , acFirst 'بداية المشكلة من هذا السطر 'For m = 1 To T8 Do Until Lsql.EOF With sql .AddNew !PONumber = Lsql!PONumber !MaterialCode = Lsql!MaterialCode !MaterialName = Lsql!MaterialName !ProductionDate = Lsql!ProductionDate !Shift = "none" !cons = Lsql!cons !AdditionPercent = Lsql!Text324 !MaterialType = Lsql!Text300 !OrderQty = Lsql!OrderQty .Update End With Lsql.MoveNext Loop 'DoCmd.GoToRecord , , acNext sql.Close: Set sql = Nothing Lsql.Close: Set Lsql = Nothing 'Next m MsgBox "Done", vbInformation, "Saved successfully" 'DoCmd.SetWarnings True t0 = "" T6 = "" T7 = "" T3 = "" T10 = "" T10 = "" Status = "" BomCombo = "" Me.ComboMachine = "" Me.ComboMold = "" Mold = "" Machine = "" T216 = "" Me.Requery واذا حصلت على نسختين من السجل الاول ، فممكن حذف كل الاسطر قبل السطر Dim 🙂 جعفر
Amr Ashraf قام بنشر مارس 3, 2021 الكاتب قام بنشر مارس 3, 2021 9 دقائق مضت, jjafferr said: ولو اننا نحاول نضرب هدف في الظلام ، ولكن الله يسهل 🙂 استاذى الفاضل تقدر تحلها معصوب العينين هههههه ... هجرب واوافيك بالنتيجة تشرفت بمرورك
Amr Ashraf قام بنشر مارس 3, 2021 الكاتب قام بنشر مارس 3, 2021 (معدل) حدث الخطأ التالى استاذنا ... لو محتاج قاعدة البيانات احاول اجهزها ليك تجرب عليها ولكن فيها الكثير من التفاصيل والحقول المطلوب ملئها وقد تؤدى الى التشتيت لذلك ارفقت الاكواد فقط @jjafferr تم تعديل مارس 3, 2021 بواسطه Amr Ashraf
jjafferr قام بنشر مارس 3, 2021 قام بنشر مارس 3, 2021 الاسماء اللي على يمين علامة = ، رجاء تأخذ اسمها الصحيح من النموذج المستمر 1
jjafferr قام بنشر مارس 3, 2021 قام بنشر مارس 3, 2021 جرب هاي ، اخذتهم من الاستعلام Private Sub Command204_Click() DoCmd.OpenForm "Robot" DoCmd.GoToRecord , , acNewRec Forms![Robot]![PONumber] = Me.T7 Forms![Robot]![ProductCode] = Me.t0 Forms![Robot]![OrderQty] = Me.T3 Forms![Robot]![zdate] = Me.T6 Forms![Robot]![Mold] = Me.Mold Forms![Robot]![Machine] = Me.Machine Forms![Robot]![Status] = Me.Status Forms![Robot]![ProductBomNum] = Me.Bom DoCmd.Close Dim sql As DAO.Recordset Dim Lsql As DAO.Recordset Set sql = CurrentDb.OpenRecordset("TblPoMaterials", dbOpenDynaset) Set Lsql = Me.RecordsetClone 'DoCmd.SetWarnings False 'DoCmd.GoToRecord , , acFirst 'ÈÏÇíÉ ÇáãÔßáÉ ãä åÐÇ ÇáÓØÑ 'For m = 1 To T8 Do Until Lsql.EOF With sql .AddNew !PONumber = Lsql!T7 !MaterialCode = Lsql!Code1 !MaterialName = Lsql!T1 !ProductionDate = Lsql!T6 !Shift = "none" !cons = Lsql!T2 !AdditionPercent = Lsql!Text324 !MaterialType = Lsql!Text300 !OrderQty = Lsql!T3 .Update End With Lsql.MoveNext Loop 'DoCmd.GoToRecord , , acNext sql.Close: Set sql = Nothing Lsql.Close: Set Lsql = Nothing 'Next m MsgBox "Done", vbInformation, "Saved successfully" 'DoCmd.SetWarnings True t0 = "" T6 = "" T7 = "" T3 = "" T10 = "" T10 = "" Status = "" BomCombo = "" Me.ComboMachine = "" Me.ComboMold = "" Mold = "" Machine = "" T216 = "" Me.Requery
Amr Ashraf قام بنشر مارس 3, 2021 الكاتب قام بنشر مارس 3, 2021 1 دقيقه مضت, jjafferr said: جرب هاي ، اخذتهم من الاستعلام جربتها بالفعل حدث هذا الخطأ فحذفت Lsql واشتغلت ولكن هناك مشكلتين .. اول مشكلة بتكرر الالحاق ثانى مشكلة بتاخد اول سطر فقط فى التفاصيل .. يعنى اعتقد هذا السطر لا يعمل بالشكل المطلوب Loop Lsql.MoveNext Loop
jjafferr قام بنشر مارس 3, 2021 قام بنشر مارس 3, 2021 3 دقائق مضت, Amr Ashraf said: فحذفت Lsql لا يمكنك حذف هذا ، فهو الاساس !! 14 دقائق مضت, jjafferr said: الاسماء اللي على يمين علامة = ، رجاء تأخذ اسمها الصحيح من النموذج المستمر مو اسم الحقل ، وانما اسم مصدر بيانات الحقل 1
Amr Ashraf قام بنشر مارس 3, 2021 الكاتب قام بنشر مارس 3, 2021 (معدل) 9 دقائق مضت, jjafferr said: مو اسم الحقل ، وانما اسم مصدر بيانات الحقل الحقول UnBound واسماءها كما تفضلت بكتابتها ماذا تقصد بمصدر بيانات الحقل خلينا فى الانجليزى العربى عندى بيؤدى لالتباس احيانا 😄 الاسماء صحيحة كما تفضلت بكتابتها ولكن بتظهر الخطأ الاول تم تعديل مارس 3, 2021 بواسطه Amr Ashraf
Amr Ashraf قام بنشر مارس 3, 2021 الكاتب قام بنشر مارس 3, 2021 3 دقائق مضت, jjafferr said: الاسماء سليمة وفى الكود مثلا هوا ده الجزء المستمر اما اللى فوق ده فى الهيدر
jjafferr قام بنشر مارس 3, 2021 قام بنشر مارس 3, 2021 لا T1 مو صحيح ، وانما الصحيح هو item ، يعني جرب: !MaterialName = Lsql!Item 1
Amr Ashraf قام بنشر مارس 3, 2021 الكاتب قام بنشر مارس 3, 2021 الان, jjafferr said: لا T1 مو صحيح ، وانما الصحيح هو item ، يعني جرب: !MaterialName = Lsql!Item فهمت قصدك تمام هجرب
Amr Ashraf قام بنشر مارس 3, 2021 الكاتب قام بنشر مارس 3, 2021 3 دقائق مضت, jjafferr said: لا T1 مو صحيح ، وانما الصحيح هو item ، يعني جرب: رجعنا لنفس المشكلة الاولى Private Sub Command204_Click() DoCmd.OpenForm "Robot" DoCmd.GoToRecord , , acNewRec Forms![Robot]![PONumber] = Me.T7 Forms![Robot]![productcode] = Me.t0 Forms![Robot]![OrderQty] = Me.T3 Forms![Robot]![zdate] = Me.T6 Forms![Robot]![Mold] = Me.Mold Forms![Robot]![Machine] = Me.Machine Forms![Robot]![Status] = Me.Status Forms![Robot]![ProductBomNum] = Me.Bom DoCmd.Close Dim sql As DAO.Recordset Dim Lsql As DAO.Recordset Set sql = CurrentDb.OpenRecordset("TblPoMaterials", dbOpenDynaset) Set Lsql = Me.RecordsetClone 'DoCmd.SetWarnings False 'DoCmd.GoToRecord , , acFirst 'EIC?E C??O??E ?? ??C C???? 'For m = 1 To T8 Do Until Lsql.EOF With sql .AddNew !PONumber = Lsql!T7 !MaterialCode = Lsql!code !MaterialName = Lsql!Item !ProductionDate = Lsql!T6 !Shift = "none" !cons = Lsql!cons !AdditionPercent = Lsql!Remarks !MaterialType = Lsql!Type !OrderQty = Lsql!Nz(Nz([T2], 0) * Nz([T3], 0), 0) .Update End With Lsql.MoveNext Loop 'DoCmd.GoToRecord , , acNext sql.Close: Set sql = Nothing Lsql.Close: Set Lsql = Nothing 'Next m MsgBox "Done", vbInformation, "Saved successfully" 'DoCmd.SetWarnings True t0 = "" T6 = "" T7 = "" T3 = "" T10 = "" T10 = "" Status = "" BomCombo = "" Me.ComboMachine = "" Me.ComboMold = "" Mold = "" Machine = "" T216 = "" Me.Requery End Sub
biskra قام بنشر مارس 3, 2021 قام بنشر مارس 3, 2021 (معدل) سؤال فضولي ما سبب تكرار الحقل T10 في الكود تم تعديل مارس 3, 2021 بواسطه biskra
jjafferr قام بنشر مارس 3, 2021 قام بنشر مارس 3, 2021 هل الحقل PONumber او T2 موجود في النموذج المستمر؟ واذا موجود ، هل قيمته تتغير ، اذا الجواب ان قيمته لا تتغير ، اكتب السطر هكذا : !PONumber = me.T7 وبغض النظر عن الحقل اعلاه ، خلينا نشوف اذا الكود شغال صح اصلا ، وعلشان الحبايب ، هذه الحقول اللي فيها مشكلة ، اوقف عمل سطرها مؤقتا 🙂 1
Amr Ashraf قام بنشر مارس 3, 2021 الكاتب قام بنشر مارس 3, 2021 1 دقيقه مضت, jjafferr said: هل الحقل PONumber او T2 موجود في النموذج المستمر؟ لا غير مذكور, موجود فقط فى الهيدر لأن النموذج المستمر مصدره مختلف ولا يذكر فيه رقم PoNumber 2 دقائق مضت, biskra said: سؤال فضولي خطأ منى ههههه وعشان مش بيسبب اخطاء مخدتش بالى منها 3 دقائق مضت, jjafferr said: وبغض النظر عن الحقل اعلاه ، خلينا نشوف اذا الكود شغال صح اصلا ، وعلشان الحبايب ، هذه الحقول اللي فيها مشكلة ، اوقف عمل سطرها مؤقتا 🙂 الحقل اعلاه هوا الحقل الاساسى اللى بيتربط عليه كل شئ لن يقبل الجدول اى شئ بدونه ههههه
Amr Ashraf قام بنشر مارس 3, 2021 الكاتب قام بنشر مارس 3, 2021 (معدل) استاذى الفاضل @jjafferr تفضل القاعدة الاساسية محذوف منها غير الضرورى .. راجع رسائلك الخاصة فضلاً تم تعديل مارس 3, 2021 بواسطه jjafferr تم حذف المرفق بعد انزاله ، حسب طلب صاحب الموضوع
أفضل إجابة jjafferr قام بنشر مارس 3, 2021 أفضل إجابة قام بنشر مارس 3, 2021 تفضل يا سيدي 🙂 With sql .AddNew !PONumber = Me.T7 !MaterialCode = Lsql!code !MaterialName = Lsql!Item !ProductionDate = Me.T6 !Shift = "none" !cons = Lsql!cons !AdditionPercent = Lsql!Remarks !MaterialType = Lsql!Type !OrderQty = Nz(Lsql!cons, 0) * Nz(Me.T3, 0) .Update End With جعفر 1
Amr Ashraf قام بنشر مارس 3, 2021 الكاتب قام بنشر مارس 3, 2021 10 دقائق مضت, jjafferr said: تفضل يا سيدي 🙂 جزاك الله خير استاذنا ... معلش ضيعت سهرتك ههههههه .. ناقص حاجة مشرحتش المشكلة سببها كان ايه وليه كانت GotoRecord بتسبب مشكلة فى Accde وليس Accdb .. جزاك الله خير .. وهجرب مطولا بعد التعديلات ولو فيه مشكلة لا قدر الله هفتح موضوع جديد .. بارك الله فى صحتك
jjafferr قام بنشر مارس 3, 2021 قام بنشر مارس 3, 2021 هذا ليس جوابا على سؤالك: فكرة docmd.gotoRecord movenext ثقيلة على البرنامج ، ورجاء تجرب التالي: اعمل نموذج مستمر لجدول فيه 100 او 1000 سجل ، ثم استعمل حلقة For Next وادخل فيها docmd.gotoRecord movenext ، ستجد ان الاكسس توقف عن العمل (طبعا هو شغال ، بس يبين انه مشغول جدا) ، ولا تحصل على رسالى Not Responding اعلى البرنامج !! ومثل ما يقول المثل العماني : الباب اللي يجيك منه ريح ، سدّه واستريح 🙂 جعفر 1
Amr Ashraf قام بنشر مارس 4, 2021 الكاتب قام بنشر مارس 4, 2021 10 ساعات مضت, jjafferr said: فكرة docmd.gotoRecord movenext ثقيلة على البرنامج ، ورجاء تجرب التالي: حقيقة ومجربة بالفعل بس لم اكن اعرف لها بديل .. جزاك الله خير .. بالنسبة للبرنامج بعد التجربة لأكثر من مرة وجدت ان اول مرة فقط اللى بيعمل الحاق لجدول TblPoMaterials المسئولة عنه جملة الSQL يعنى حضرتك جرب اعمل 5 اوامر شغل ورا بعض بدون غلق النموذج وستجد المشكلة .. فضلاً الق نظرة على المرفق @jjafferr New Code JJ.accdb
jjafferr قام بنشر مارس 4, 2021 قام بنشر مارس 4, 2021 جال هذا الخطأ في خاطري البارحة بعد ان اغلقت الكمبيوتر ، ونسيته اليوم 😁 اخبرك المشكلة ، والحل: لما تفتح النموذج ، وتشغل الكود ، احنا قلنا للكود: 1. اقرأ البيانات الى نهايتها (EOF (End of File ، 2. بعد ان يقرأ السجل ، ينتقل الى السجل التالي MoveNext ، الى ان يصل الى نهاية البيانات (السجل الاخير) ، ويتم الحاق البيانات ، الآ لما ننقر على زر الحفظ مرة اخرى : 1. يريد ان يقرأ البيانات الى نهايتها ، ولكنه اصلا وصل الى نهايتها من المرة السابقة ، فيتخطى عملية الحفظ ، ولا يحفظ شيء !! اذن ، يجب ان (نضيف هذا السطر) ونخبر الكود: 3. بأن قبل البدأ في عملية الالحاق ، اذهب الى بداية البيانات (السجلات) ، ثم قم بتطبيق الكود 🙂 . جعفر 1
biskra قام بنشر مارس 4, 2021 قام بنشر مارس 4, 2021 على الرابط مناقشة لنفس المشكلة تقريبا و فيه في آخر الموضوع يمكن يسهم في حل المشكلة Move to next record until EOF
Amr Ashraf قام بنشر مارس 4, 2021 الكاتب قام بنشر مارس 4, 2021 7 دقائق مضت, biskra said: على الرابط مناقشة لنفس المشكلة تقريبا و فيه في آخر الموضوع يمكن يسهم في حل المشكلة Move to next record until EOF جارى الاطلاع يا غالى مشكور على مرورك
الردود الموصى بها
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.