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

مشكلة the command or action 'GoToRecord' isn't available now Accde Database


إذهب إلى أفضل إجابة Solved by jjafferr,

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

قام بنشر

السلام عليكم .. اخوانى الافاضل عندى مشكلة غريبة واتمنى سعة الصدر لطول الموضوع نسبيا , المشكلة كما العنوان تحدث فى قاعدة بيانات 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 محاولات وممكن متحصلش من الاساس , اعتذر مرة اخرى لطول الموضوع واتطلع للمناقشة مع الاساتذة .. دمتم بخير

قام بنشر

وعليكم السلام 🙂

 

ولو اننا نحاول نضرب هدف في الظلام ، ولكن الله يسهل 🙂

جرب هذا التعديل في الكود الاصل:

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 🙂

 

جعفر

قام بنشر
9 دقائق مضت, jjafferr said:

ولو اننا نحاول نضرب هدف في الظلام ، ولكن الله يسهل 🙂

 

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

قام بنشر (معدل)

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

Capture.PNG

Capture2.PNG

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

جرب هاي ، اخذتهم من الاستعلام

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

 

قام بنشر
1 دقيقه مضت, jjafferr said:

جرب هاي ، اخذتهم من الاستعلام


 

جربتها بالفعل حدث هذا الخطأ Capture3.PNG.997130098fc69f660fcecb3a0d3169e3.PNG

 

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


    Loop
    

 Lsql.MoveNext
    Loop

 

قام بنشر
3 دقائق مضت, Amr Ashraf said:

فحذفت Lsql

لا يمكنك حذف هذا ، فهو الاساس !!

 

14 دقائق مضت, jjafferr said:

الاسماء اللي على يمين علامة = ، رجاء تأخذ اسمها الصحيح من النموذج المستمر

مو اسم الحقل ، وانما اسم مصدر بيانات الحقل

  • Like 1
قام بنشر (معدل)
9 دقائق مضت, jjafferr said:

مو اسم الحقل ، وانما اسم مصدر بيانات الحقل

الحقول UnBound واسماءها كما تفضلت بكتابتها ماذا تقصد بمصدر بيانات الحقل خلينا فى الانجليزى العربى عندى بيؤدى لالتباس احيانا 😄

الاسماء صحيحة كما تفضلت بكتابتها

1075399165_Capture5.PNG.0e29db6f900a591e520dcab1a6ae2f52.PNG

ولكن بتظهر الخطأ الاول

 Capture4.PNG.69068c44cc4be47a7e7f18aa98380503.PNG

تم تعديل بواسطه Amr Ashraf
قام بنشر
3 دقائق مضت, jjafferr said:

 

الاسماء سليمة

 Capture6.PNG.49d060cc2dca1b05ec3c2c6c940f6f5f.PNG

 

وفى الكود مثلا

Capture7.PNG.1e22790a6eb74886631a4819d125a075.PNG

هوا ده الجزء المستمر اما اللى فوق ده فى الهيدر 

قام بنشر
الان, jjafferr said:

لا T1 مو صحيح ، وانما الصحيح هو item ، يعني جرب:


!MaterialName = Lsql!Item

 

فهمت قصدك تمام هجرب

قام بنشر
3 دقائق مضت, jjafferr said:

لا T1 مو صحيح ، وانما الصحيح هو item ، يعني جرب:


 

رجعنا لنفس المشكلة الاولى 

Capture8.PNG.bd3d2b4b127db821886580e15859399a.PNG

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

 

قام بنشر

هل الحقل PONumber او T2 موجود في النموذج المستمر؟

واذا موجود ، هل قيمته تتغير ، اذا الجواب ان قيمته لا تتغير ، اكتب السطر هكذا :

!PONumber = me.T7

 

وبغض النظر عن الحقل اعلاه ، خلينا نشوف اذا الكود شغال صح اصلا ، وعلشان الحبايب ، هذه الحقول اللي فيها مشكلة ، اوقف عمل سطرها مؤقتا 🙂

  • Like 1
قام بنشر
1 دقيقه مضت, jjafferr said:

هل الحقل PONumber او T2 موجود في النموذج المستمر؟

 

لا غير مذكور, موجود فقط فى الهيدر لأن النموذج المستمر مصدره مختلف ولا يذكر فيه رقم PoNumber 

2 دقائق مضت, biskra said:

سؤال فضولي

 

خطأ منى ههههه وعشان مش بيسبب اخطاء مخدتش بالى منها

3 دقائق مضت, jjafferr said:

وبغض النظر عن الحقل اعلاه ، خلينا نشوف اذا الكود شغال صح اصلا ، وعلشان الحبايب ، هذه الحقول اللي فيها مشكلة ، اوقف عمل سطرها مؤقتا 🙂

الحقل اعلاه هوا الحقل الاساسى اللى بيتربط عليه كل شئ لن يقبل الجدول اى شئ بدونه ههههه 

Capture9.PNG.0f31416eaedb40698d5dd5133359113f.PNG

قام بنشر (معدل)

استاذى الفاضل @jjafferr تفضل القاعدة الاساسية محذوف منها غير الضرورى .. راجع رسائلك الخاصة فضلاً

 

تم تعديل بواسطه jjafferr
تم حذف المرفق بعد انزاله ، حسب طلب صاحب الموضوع
  • أفضل إجابة
قام بنشر

تفضل يا سيدي 🙂

        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

 

جعفر

  • Thanks 1
قام بنشر
10 دقائق مضت, jjafferr said:

تفضل يا سيدي 🙂


 

جزاك الله خير استاذنا ... معلش ضيعت سهرتك ههههههه .. ناقص حاجة مشرحتش المشكلة سببها كان ايه وليه كانت GotoRecord بتسبب مشكلة فى Accde وليس Accdb .. جزاك الله خير .. وهجرب مطولا بعد التعديلات ولو فيه مشكلة لا قدر الله هفتح موضوع جديد .. بارك الله فى صحتك

قام بنشر

هذا ليس جوابا على سؤالك:

فكرة docmd.gotoRecord movenext ثقيلة على البرنامج ، ورجاء تجرب التالي:

اعمل نموذج مستمر لجدول فيه 100 او 1000 سجل ،

ثم استعمل حلقة For Next وادخل فيها docmd.gotoRecord movenext ، 

ستجد ان الاكسس توقف عن العمل (طبعا هو شغال ، بس يبين انه مشغول جدا) ، ولا تحصل على رسالى Not Responding اعلى البرنامج !!

ومثل ما يقول المثل العماني : الباب اللي يجيك منه ريح ، سدّه واستريح 🙂

 

جعفر

  • Thanks 1
قام بنشر
10 ساعات مضت, jjafferr said:

فكرة docmd.gotoRecord movenext ثقيلة على البرنامج ، ورجاء تجرب التالي:

 

حقيقة ومجربة بالفعل بس لم اكن اعرف لها بديل .. جزاك الله خير .. بالنسبة للبرنامج بعد التجربة لأكثر من مرة وجدت ان اول مرة فقط اللى بيعمل الحاق لجدول TblPoMaterials المسئولة عنه جملة الSQL يعنى حضرتك جرب اعمل 5 اوامر شغل ورا بعض بدون غلق النموذج وستجد المشكلة .. فضلاً الق نظرة على المرفق @jjafferr

New Code JJ.accdb

قام بنشر

جال هذا الخطأ في خاطري البارحة بعد ان اغلقت الكمبيوتر ، ونسيته اليوم 😁

اخبرك المشكلة ، والحل:

لما تفتح النموذج ، وتشغل الكود ، احنا قلنا للكود:

1. اقرأ البيانات الى نهايتها (EOF (End of File ، 

2. بعد ان يقرأ السجل ، ينتقل الى السجل التالي MoveNext ، الى ان يصل الى نهاية البيانات (السجل الاخير) ،

ويتم الحاق البيانات ،

الآ لما ننقر على زر الحفظ مرة اخرى :

1. يريد ان يقرأ البيانات الى نهايتها ، ولكنه اصلا وصل الى نهايتها من المرة السابقة ، فيتخطى عملية الحفظ ، ولا يحفظ شيء !!

 

اذن ، يجب ان (نضيف هذا السطر) ونخبر الكود:

3. بأن قبل البدأ في عملية الالحاق ، اذهب الى بداية البيانات (السجلات) ، ثم قم بتطبيق الكود 🙂
 

image.png.fb5a28778e4e9d0bb46ed4d9639e59da.png

.

جعفر

  • Thanks 1

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.

  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information