nssj قام بنشر ديسمبر 10, 2021 قام بنشر ديسمبر 10, 2021 الإخوة الكرام .. المطلوب تنفيذ هذا الأمر CurrentDb.Execute "UPDATE [TAB] SET [TAB].[MoveX] = Yes" في السجلات التي يتم تحديدها بالفأرة فقط وليس في كل السجلات select.accdb
jjafferr قام بنشر ديسمبر 10, 2021 قام بنشر ديسمبر 10, 2021 وعليكم السلام 🙂 استخدم هذا الكود للحقول المختارة: UPDATE TAB SET TAB.MOVEX = -1 WHERE ((Not (TAB.MOVEX)=[Forms]![FRM2]![MOVEX])); ويمكنك استخدام UPDATE TAB SET MOVEX = -1 WHERE Not MOVEX=[Forms]![FRM2]![MOVEX] وفي صيغة الكود CurrentDb.Execute "UPDATE TAB SET MOVEX = -1 WHERE Not MOVEX=" & [Forms]![FRM2]![MOVEX] جعفر 1
nssj قام بنشر ديسمبر 10, 2021 الكاتب قام بنشر ديسمبر 10, 2021 أخي الكريم .. يبدو أني لم أوضح المطلوب بشكل جيد 😐 المطلوب في هذه الصورة أن يضع الكود علامة صح في المربع في السجلات الأربع التي تم تحديدها والكود الذي تفضلت به يضع (صح) في بقية السجلات هذا بعد أن أضع أنا فيها علامة (صح)
jjafferr قام بنشر ديسمبر 10, 2021 قام بنشر ديسمبر 10, 2021 تفضل 🙂 لا نستخدم الزر ، وانما نستخدم زر مسك الفأرة : Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) 'https://stackoverflow.com/a/1670110 'https://stackoverflow.com/a/18793073 'Me.SelHeight = to specify or determine the number of selected rows 'Me.SelTop = to specify or determine which row (record) is topmost in the current selection Dim i As Integer Dim rst As dao.Recordset Set rst = Me.RecordsetClone If Me.SelHeight = 0 Then Exit Sub rst.MoveFirst ' Move to the first selected record. rst.Move Me.SelTop - 1 'its slow to refresh, so don't show it Me.Painting = False For i = 1 To Me.SelHeight rst.Edit rst![MOVEX] = -1 rst.Update rst.MoveNext Next i Me.SelHeight = 0 'unSelect the Records Me.Painting = True 'show the Records values End Sub جعفر 1423.select.accdb.zip 2
nssj قام بنشر ديسمبر 10, 2021 الكاتب قام بنشر ديسمبر 10, 2021 أحسن الله إليك أخي الكريم .. يبدو أن الموضوع ليس سهلا كما كنت أظن أنا كنت أظن أن الأمر سيتم بصياغة الجملة التي بعد (WHERE) بمعني أن تكون هناك جملة أو صيغة تميز السجلات التي تم تحديدها بالفأرة لينفذ عليها الأمر وأنا كنت أنوي استخدام هذه الجملة لتنفيذ أوامر أخرى مثل (حذف سجلات تم تحديدها بالفأرة) وغير ذلك، أحيانا على مربع (MOVEX) وأحيانا على مربع (SelectX) -وهو غير موجود في النموذج المرفق لأنه للتجربة فقط- وذلك حسب طبيعة الكود ومهمته لكن .. إذا كان الأمر لا يتم إلا بهذه الطريقة، بوضع الأمر في الفورم نفسه، فهل من طريقة لجعل تنفيذه بعد الكبس على الزر، فلا أريد كلما تم تحديد سجل أو عدة سجلات أن يقوم الكود بالعمل فورا وتبقى إشكالية لو كان المطلوب تطبيق الأمر على المربع الآخر (SelectX) عند الحاجة لذلك في مهمة أخرى
أفضل إجابة jjafferr قام بنشر ديسمبر 11, 2021 أفضل إجابة قام بنشر ديسمبر 11, 2021 تفضل 🙂 قبل الاختيار ، سترى ان لون زر "الغي الاختيار" لونه اسود . وعند الاختيار ، سيتحول لونه الى الاحمر ، ليحذرك بأنه هناك اختيار سابق تم تخزينه في المتغير TempVars!tmpVars_DoIn ، وتم الافصاح عن هذا المتغير في اعلى كود النموذج ، حتى يمكنه اضافة القيم: Dim tmpVars_DoIn as TempVars وكلما تختار سجلات اخرى ، فإن المتغير يضيف هذه السجلات الى المتغير . هذا الكود يقوم بإضافة ارقام الحقل TNO (يمكنك اختيار اي حقل يدل على رقم السجل) الى المتغير ، بحيث يكون المتغير يحتوي على مصفوفة بهذه الطريقة: 34 ,33 , 13 ,12 , 0 Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) 'Me.SelHeight = to specify or determine the number of selected rows 'Me.SelTop = to specify or determine which row (record) is topmost in the current selection Dim i As Integer Dim rst As dao.Recordset Set rst = Me.RecordsetClone rst.MoveFirst If Me.SelHeight = 0 Then Exit Sub ' Move to the first selected record. rst.Move Me.SelTop - 1 For i = 1 To Me.SelHeight TempVars!tmpVars_DoIn = TempVars!tmpVars_DoIn & ", " & rst![TNO] 'add the selected TNO to tmpVars_DoIt rst.MoveNext Next i 'show the selected in the Form 'اذا لا تريد تحديث النموذج، اوقف عمل السطر التالي Call TempVars_Use_Click 'change the button color, so that the user know somwthing is selected already Me.TempVars_Clear.ForeColor = vbRed 'Debug.Print TempVars!tmpVars_DoIn End Sub . ولما تريد استخدام اياستعلام (انا استعملت الكود الذي وضعته انت) ، يمكنك استخدام الكود التالي المحتوي على البيانات التي تم تحديدها : Mid(TempVars!tmpVars_DoIn, 3) . هذا كود زر الغي التحديد: Private Sub TempVars_Clear_Click() TempVars!tmpVars_DoIn = 0 'change the color to black, indicating nothing is selected Me.TempVars_Clear.ForeColor = vbBlack End Sub . وهذا كود استخدم سجلات التحديد Private Sub TempVars_Use_Click() 'remove the initial comma 'TempVars!tmpVars_DoIn = Mid(TempVars!tmpVars_DoIn, 3) CurrentDb.Execute "UPDATE TAB SET MOVEX = -1 WHERE TNO In (" & Mid(TempVars!tmpVars_DoIn, 3) & ")" 'show the selected in the Form 'اذا لا تريد تحديث النموذج، اوقف عمل السطر التالي Me.Requery End Sub . جعفر 1423.1.Record Selector.accdb.zip 1
nssj قام بنشر ديسمبر 11, 2021 الكاتب قام بنشر ديسمبر 11, 2021 أحسن الله إليك أخي الكريم .. وكالعادة: أولا: أخذت وقتاً حتى استوعبت ما قمت به أخي الكريم 🙄 ثانيا: بعد الاستيعاب – وكالعادة – لا بد من ممارسة هوايتي المفضلة: التعديل على الأكواد 😁 وهذه المرة من المرات القلييييلة التي تنجح فيها تجاربي دون أن أثقل عليك وعلى الإخوة الكرام وخلاصة التجارب: 1- جعلت الكود الذي في الفورم لا يعمل إلا بعد الكبس على زر معين If Me.SelHeight = 0 Or Me.TempVars_Clear.Caption = "no" Then Exit Sub 2- تمكنت من جعله عند الطلب يطبق أكثر من مهمة متعاكسة، مهمة على (MOVEX) ومهمة مختلفة على (SelectX) .. .. If Me.com1.Enabled = True Then Call com1_Click ElseIf Me.TempVars_Use.Enabled = True Then Call TempVars_Use_Click End If ولتجنب موضوع نسيان التحديد وتركه جعلت في أول كل كود منهما If TempVars!tmpVars_DoIn = 0 Then Exit Sub وفي آخره TempVars!tmpVars_DoIn = 0 والأمور بحمد الله تمام .. فبارك الله فيك أخي الكريم ولكن قبل ختام الموضوع عندي استفسار أخير: كونك أخي الكريم جعلت الجملة الشرطية التي تحدد متى يتم تنفيذ الكود بهذه الصيغة CurrentDb.Execute .. … .. WHERE TNO In (" & Mid(TempVars!tmpVars_DoIn, 3) & ")" هذا يعني أنه من غير الوارد أن يتم الأمر كما كنت أظن، يعني جملة شرطية ( WHERE .. .. ..) تعتمد فقط على السجلات التي يتم تحديدها بالفأرة دون الحاجة إلى مربع اختيار هذا لأن عندي عدة جداول ليس فيها مربع اختيار (SelectX) وقد أحتاج لتنفيذ أمر على عدة سجلات متتالية يتم تحديدها بالفأرة فكان ظني أن أستخدم هذه العبارة الشرطية لتنفيذ الأمر في السجلات المحددة لكن ما فهمته الآن أنه لا بد من وجود مربع اختيار لتنفيذ المهام على السجلات المحددة هل ما فهمته صحيح أخي الكريم ؟
jjafferr قام بنشر ديسمبر 11, 2021 قام بنشر ديسمبر 11, 2021 59 دقائق مضت, nssj said: أخذت وقتاً حتى استوعبت ما قمت به أخي الكريم 🙄 في الواقع انا اتعمد ان اجعل الكود سلس وبسيط ومقسّم الى عدة اسطر ، وذلك لهدف ان تكون البرمجه مرنه لتغييرات المبرمج ، واحاول الابتعاد عن اختزال الكود قدر المستطاع 🙂 بالنسبة لإختيار السجلات في جملة Where ، عندك عدة اختيارات ، منها مربع الاختيار (نعم/لا) ، ومنها اي حقل له رقم/قيمة فريدة تدل على السجل ، لهذا السبب ، ترى اني استخدمت النوعين معا ، فبالاضافة الى قيم الحقل TNO (في مصفوفة في الكود) ، فقد قمت بإختيار مربع الاختيار MoveX (في الجدول) كذلك ، ويمكنك استعمال النوعين خارج النموذج ، وحتى عند اغلاق النموذج ، فقيمة TempVars!tmpVars_DoIn تكون موجودة طوال فترة عمل البرنامج ، الى ان يتم غلق البرنامج ، او اعطاء قيمة اخرى للمتغير ، او حذف بياناته. جعفر 3
nssj قام بنشر ديسمبر 11, 2021 الكاتب قام بنشر ديسمبر 11, 2021 أحسن الله إليك أخي الكريم .. تم المطلوب بحمد الله
Moosak قام بنشر ديسمبر 11, 2021 قام بنشر ديسمبر 11, 2021 17 ساعات مضت, jjafferr said: سؤال يغرد خارج السرب عمي جعفر @jjafferr .. 😁 كيف تعمل هذيلا الصور المتحركة ؟ بأي برنامج ؟
jjafferr قام بنشر ديسمبر 11, 2021 قام بنشر ديسمبر 11, 2021 منذ ساعه, nssj said: تم المطلوب بحمد الله الحمدلله 🙂 48 دقائق مضت, Moosak said: كيف تعمل هذيلا الصور المتحركة ؟ بأي برنامج ؟ وعليكم السلام اخوي موسى 🙂 جعفر
Moosak قام بنشر ديسمبر 11, 2021 قام بنشر ديسمبر 11, 2021 3 ساعات مضت, jjafferr said: وعليكم السلام اخوي موسى 🙂 سلام الله ورحمة تغشاك يا فارسنا الهمام 🙂✋🏻 1
الردود الموصى بها
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.