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

nssj

03 عضو مميز
  • Posts

    318
  • تاريخ الانضمام

  • تاريخ اخر زياره

كل منشورات العضو nssj

  1. الإخوة الكرام .. في الملف المرفق نموذج (3Frm) فيه نموذج فرعي (takhrij) لإدخال البيانات في حقل (takhrij) وأريد أن يكون إدخال البيانات فيه بثلاث طرق فقط: 1- الاختيار من قائمة منسدلة 2- القص واللصق 3- باستخدام كود عند النقر المزدوج ينقل القيمة المطلوبة من النموذج الرئيسي لذلك وضعت فيه هذا الكود حتى لا يتم الاستجابة لأبي كبسة في الكيبورد إلا أربع كبسات Private Sub takhrij_KeyDown(KeyCode As Integer, Shift As Integer) If (KeyCode = 13) Or (KeyCode = 9) Or (KeyCode = 8) Or (KeyCode = 46) Then KeyCode = KeyCode Else KeyCode = 0 End If End Sub لكن الكود لا يعمل في هذا النموذج الفرعي .. في حين أنه يعمل عند فتح النموذج (takhrij) لوحده فما هو الخطأ ؟؟ takhrij.accdb
  2. وهذا موضوع آخر هدية بسيطة : البحث بجزء من الكلمة داخل مربع التحرير بمجرد الكتابة comboBox
  3. يعني الموضوع وقف في الاخر على (نجمتين) بس الحق عليه برضو .. لو حكالي من أولها كان أعطيته عشر نجوم بس يخلصني 😂
  4. نعم .. طريقة البحث ممتازة، لا سيما وأنه يبحث داخل الـ (comboBox) نفسه وليس عبر مربع نص خارجي، ثم يخرج النتائج مع التغيير أثناء الكتابة وليس بعد التحديث أو عند الخروج أما بخصوص التنقل بين النتائج، فقد تمكنت بفضل الله من حل هذه المشكلة بوضع هذا الكود في حدث (عند مفتاح للأسفل) If KeyCode = 40 And Shift = 0 Or KeyCode = 38 And Shift = 0 Then G = 1 End If مع إضافة بسيطة في أول كود البحث كما في الملف المرفق فأصبح يتنقل بين النتائج باستخدام مفتاحي: للأعلى وللأسفل فأرجو أن يكون تصرفي هو الحل الصحيح ولدي ملاحظة أخرى بخصوص هذا الكود: فهو يبحث عن الحروف حتى لو كانت متتالية في أكثر من كلمة، وبالنسبة لي فالمطلوب البحث عن الحروف متتابعة أو متلاصقة في نفس الكلمة يعني عند طلب البحث عن (زج) تخرج النتائج بهذا الشكل والنتيجة الأخيرة غير مطلوبة بالنسبة لي، ولكنه يبحث عن الحروف المدخلة حتى إذا لم تكن متتابعة في نفس الكلمة، لذلك أخرج النتيجة الأخيرة لأنه وجد حرف (ز) في كلمة (زاهد) ثم وجد حرف (ج) في كلمة (للتجارة) وهذه الطريقة في البحث قد تناسب غيري بل قد تكون بغيته المنشودة، لكن بالنسبة لي فالنتيجة المطلوبة هي وتمكنت بفضل الله من الوصول إليها بعد عدة تجارب ومحاولات في حذف بعض أسطر الكود .. حذفتها من باب التجربة لأني بصراحة لا أعلم ماذا تعني ؟؟ 😅 فلست من أهل الاختصاص وإنما من أهل التجارب والمحاولات 🙂 ونتيجة هذه التجارب في نموذج (Search_combo 2) في نفس الملف المرفق، لعل أحد الإخوة من ذوي الخبرة ينظر فيه ويعطينا رأيه .. لأني عندما طبقت هذا الكود في قاعدة بياناتي واجهتني بعض المشاكل البسيطة في تظليل الكلمة المدخلة في مربع البحث .. فقد تكون هناك طريقة أفضل للوصول للمطلوب: البحث عن الحروف متتابعة في نفس الكلمة Search_inside_Combo X.accdb
  5. بصراحة أخي الكريم ابو جودي مو أنا اللي اخترت أفضل إجابة 🙂 .. مع إنو كنت ناوي أختارها أصلا 😁 من باب إنها كانت بداية الحل .. بس أنا أحيانا أتجنب اختيار أفضل إجابة عندما بشارك أكثر من أخ في الحل وكل الشكر والتقدير لك أخي الكريم وللأخ الكريم جعفر .. ولكل الإخوة الكرام في هذا المنتدي المبارك .. فقد استفدت منكم كثيرا كثيرا .. فبارك الله فيكم وأحسن إليكم
  6. باستعمال الإضافة التي تفضلت بها على الكود .. أصبح المؤشر يقف عند آخر الكلمة وأشكرك على النصيحة .. وسوف أعمل بها بعون الله
  7. الحمد لله .. زبطت أخيراً 😁 ولكن بما إن هذا يؤكد إن المشكلة عندي .. يمكن من كثرة التجارب والاختراعات اللي أكثرها (فاشلة .. 🙂) صار في إشي غلط عندي في خيارات وإعدادات أكسس .. إشي ما بيروح حتى بإزالة البرنامج وإعادة تحميله .. مع إني حريص إن كل التجارب تكون في الأكواد والاستعلامات وتصميم النماذج مش في خيارات البرنامج بس إيش هو (هذا الإشي الغلط) بلاش يعمل معي مشاكل تانية وتالثة و .. 🤔
  8. شيء محير فعلا 🤔 🙄.. جربت الملف على جهاز تاني عليه أوفس (365) والنتيجة تمام وحذفت الأوفس من جهازي ونزلت (2016) والنتيجة على جهازي نفسها: المؤشر في أول الحقل وحملت (2021) نفس النسخة اللي عندك والنتيجة نفسها .. يعني في مشكلة إعدادات أو خيارات جهازي لكن .. لما نزلت أوفس (2013) على جهازي: النتيجة تمام إشي محير ولا لأ ؟؟ المفروض إن الكود يعمل المطلوب بغض النظر عن نسخة الأوفس مش المشكلة في هذا الكود .. إذا بتنحل المشكلة بكبسة (END) الأمر هين .. لكن إذا ما عرفت السبب ممكن يتكرر الموال في كود تاني وثالث .. وحضرتي بحاول وبحاول وبطلب المساعدة .. والمشكلة مش في الكود .. المشكلة في مكان تاني مش معروف 🤔
  9. 😐 🙄 🤔 الغريب .. إني جربت الملف على جهاز ثاني عليه أكسس (2010) والنتيجة تمام أما على جهازي أكسس (2019) فمش تمام .. إيش يعني ؟؟؟ في مشكلة في نسخة الأكسس اللي عندي أو إنو في خيارات لازم أعدلها ؟؟
  10. نفس النتيجة 😟 أنا خايف تحكيلي إنو النتيجة عندك تمام وعندي مش تمام 🙄
  11. جزاك الله خيراً أخي الكريم .. لكن لا تزال المشكلة قائمة .. المؤشر يبقى في أول الكلمة ولا بد أن أكبس (End) حتى ينتقل لآخرها
  12. الإخوة الكرام .. في الملف المرفق مربع بحث (tx0) والمشكلة التي واجهتها هو أنه عند عدم وجود نتائج في البحث أريد أن يرجع المؤشر إلى آخر الحقل، وبعبارة أخرى إلى آخر كلمة البحث مع العلم أن فعلت خيار حاولت عدة محاولات .. لكن المؤشر مصر على أن يبقى في أول الكلمة .. هل من طريقة للتفاهم معه 🙂 SelStart.accdb
  13. بعد التجارب والمحاولات المتعددة تم الوصول للمطلوب بحمد الله، في الجانبين: الإضافة والنقل وفي الملف المرفق خلاصة التجارب والمحاولات هذا وقد فرقت في التعامل بين الجدول الرئيسي الكبير (TAB) والجداول الأخرى العادية، وهي في الملف المرفق (Tab_Msaneed) (TAB_RMZ) * في الجدول الرئيسي (TAB) اعتمدت على الكود الذي تفضل به الأخ (husamwahab) في الإضافة والنقل، لأني لاحظت أنه الأسرع في الملفات الكبيرة. لكن الأفضل إعادة الترقيم بين الحين والآخر، لذلك أدرجت كودا خاصا لهذا الغرض (mod_ReTno) - وبخصوص موضوع النقل، فيوجد فرق بين نقل سجل واحد خطوة واحدة للأمام أو الخلف، وبين نقل عدة سجلات متتابعة أو متفرقة ففي الحالة الأولى استخدمت أحد الأكواد التي أشار إليها الأخ الكريم (biskra) بعد أن حولته لوحدة نمطية (Mod_MoveRecord)، والتطبيق في النموذج المفرد (FRM1) أما في الحالة الثانية فقد استخدمت كود الأخ (husamwahab) ، وحتى الخطوات التي طلبتها في النقل، فقد وفقني الله لفعلها كلها بحمد الله، بعد تقليب النظر في مكتبة الأكواد التي عندي، وعدة مواضيع واستفسارات طرحتها في هذا المنتدى المبارك لم يبخل الإخوة الكرام في مساعدتي فيها - لكني لاحظت أن استخدام كود الأخ حسام في نقل أكثر من (10) سجلات دفعة واحدة قد ينتج عنه خلل في الترتيب، فاستخدمت كودا آخر لنقل عدد كبير من السجلات دفعة واحدة، لأن هذا الأمر قد أحتاجه أحيانا .. وكانت النتيجة جيدة بحمد الله وتطبيق هذه الأكواد في النموذج المستمر (FRM2) * كل ما سبق في الجدول الأساسي الكبير (TAB) أما في الجداول الأخرى، فبخصوص نقل السجلات فاكتفيت بكود النقل خطوة واحدة وبخصوص الإضافة فقد استلهمت من كود الأخ (kanory) فكرة كود مختصر يضيف سجلا جديدا بالترقيم العشري ويستدعي كود إعادة الترقيم في نفس الوقت، لأن كل هذه الإجراءات في الجداول العادية والمتوسطة لا تأخذ وقتا طويلا. وأيضا حولته لوحدة نمطية (Mod_ADDRecord) لاستخدامها في أي جدول مع مراعاة إضافة المفتاح الأساسي تلقائيا سواء كان ترقيما تلقائيا أو حقلا رقميا آخر. * وينبغي التنبيه أن كل هذه العمليات: الإضافة والنقل بمختلف الطرق والأكواد، وإعادة الترقيم، كلها تعتمد على حقل رقمي خاص موحد في جميع الجداول، واسمه (TNO) وهذ هو الملف، أضعه هنا لعل أحد الإخوة المختصين يجد سعة من الوقت لينظر فيه، فيعطيني بعض النصائح والتوجيهات والتصحيحات، فما قمت به مجرد تجارب ومحاولات متكررة من شخص غير مختص، ولا تسلم من ثغرات فإن لم يكن، فلعل أحد الإخوة وهو يبحث عن موضوع (إضافة ونقل السجلات) يجد هذا الملف ويستفيد منه ولو فائدة بسييييطة وختاما .. فقد وصلت بحمد الله لنتيجة مرضية في واحد من أكثر المواضيع أهمية بالنسبة لي وكل الشكر والتقدير للإخوة الذين ساعدوني ولم يبخلوا بالنصح والتوجيه والحمد لله أولا وآخرا Add&Remove Rrcords.rar
  14. الإخوة الكرام .. عندي حقل نصي (NASS) وكنت أجرب البحث عن السجل التالي الذي يتضمن كلمة معينة باستخدام Dim txtsearch As String txtsearch = Me![tx1] 'DoCmd.SearchForRecord , "", acNext, "[NASS] = '" & txtsearch & "'" DoCmd.SearchForRecord , "", acNext, "[NASS] like " & "'" & txtsearch & "'" & "" ولم تنجح التجربة إلا إذا كان الحقل يحتوي على هذه الكلمة فقط، يعني إذا كان المطلوب البحث عن (محمد) فلا يجدها بهذه الطريقة إذا كانت ضمن كلام آخر، يجدها فقط إذا كانت هي فقط في حقل (NASS) ما هي الصيغة الصحيحة للوصول للمطلوب، أم أنه لا يمكن أداء هذه المهمة باستخدام هذه الطريقة ؟
  15. بعد عدة تجارب تمكنت من فعل المطلوب: تغيير طريقة عرض النموذج دون إغلاق النموذج والذهاب لوضع التصميم .. ولأنه في طريقة عرض ورقة البيانات لا تظهر الأزرار جعلت العودة لطريقة عرض النموذج بالنقر المزدوج وأضفت لهذه التجارب زرا لجعل النموذج ملئ الشاشة وزرا آخر للعودة للوضع السابق والأمور التي لم أستطع فعلها: 1- عدم إظهار رسالة حفظ التغييرات عند الإغلاق بالطريقة العادية، فأنا أريد الخروج دون حفظ التغييرات في طريقة العرض، كل ما استطعت فعله أن يجعله يخرج بدون رسالة الحفظ عند الخروج بالكبس على زر خاص تم إنشاؤه لهذا الغرض 2- عدم إظهار ورقة الخصائص في طريقة عرض ورقة البيانات 3- الانتقال إلى عرض ورقة البيانات إذا كان النموذج ملئ الشاشة ونتيجة تجاربي في الملف المرفق .. وكوني تمكنت من فعل المطلوب لا يعني بالضرورة أن الطريقة التي اتبعتها هي الطريقة الصحيحة .. هي مجرد محاولات تنتظر التقييم من أهل الخبرة FormView.accdb
  16. جزاك الله خيرا أخي الكريم جعفر .. لكن بصراحة لما شفت الأكواد قلت لحالي: ياااااه .. كل هذا عشان تعرض النموذج بهالطريقة .. وكان مالها الطريقة الافتراضية 😅 وكنت متخوف من الكود في حدث عند التحميل ، لأن لكل نموذج أكواد خاصة فيه عند التحميل وخفت تتعارض الأكواد أو يتسبب في بطء الفتح لكن بعد التطبيق هديت أعصابي 🙂 .. وما لاحظت بطء في فتح النماذج لكن في الطريقة الثانية كانت تخرج رسالة برقم (2450) عند فتح النموذج الثاني بطريقة عادية وليس من خلال النموذج الآخر .. وتمت معالجة المشكلة بإضافتها للكود If Err.Number = 2145 Or Err.Number = 2450 Then وختاما .. بحكم خبرتك أخي الكريم: بأي الطريقتين تنصحني، أنا بنظرتي السطحية أميل للطريقة الثانية لأن عدد أسطر الكود فيها أقل، وأنا مش قادر أتخلص من فكرة إنو قلة عدد أسطر الكود يعني إنو أسرع وأقل تعقيدا
  17. جزاك الله خيرا أخي الكريم محمد أبوعبدالله .. ولكن في هذه الطريقة إشكاليتان: 1- فبعد استخدامها ولو لمرة واحدة: فعند فتح النموذج الآخر بشكل عادي يفتح على السجل المخزن في الذاكرة، وتجاوزت هذه الإشكالية بأن أضفت في آخر الكود i = 0 ثم رأيت مشاركة الأخ jjafferr.. وطريقته ليست فيها هذه الإشكالية لكن تبقى الإشكالية الثانية في الطريقتين 2- النماذج المطلوب التطبيق عليها ليست في وضع منبثق، وأنا أفضل أن تفتح عند الطلب بهذا الكود بشكل منبثق أو مربع حوار، دون تغيير خصائص النموذج، لذلك استخدمت في الكود (acDialog) والخطأ مني منذ البداية كان ينبغي أن أرفق ملفا للتطبيق عليه .. فهذا هو الملف، مع العلم أني بعد إجراء المزيد من التجارب عدلت على الكود ليصبح DoCmd.OpenForm "FRM2", acNormal, , , , acDialog [Forms]![Frm2].Recordset.FindFirst "[ID]=" & ID ولكن أصبحت تخرج هذه الرسالة فهل هذا يعني أن علي أن أصرف النظر عن قضية فتح النموذج المستدعى بهذه الطريقة في وضع منبثق، وأكتفي بأن يفتح بطريقته الافتراضية ؟ OpenForm.accdb
  18. الإخوة الكرام .. إذا كنت في سجل معين في نموذج (FRM1) وأردت فتح نموذج آخر (FRM2) على نفس الموضع من خلال هذا الكود DoCmd.OpenForm "FRM2", acNormal, , "[ID]=" & ID, , acDialog يفتح هذا السجل فقط ولا يمكنني الانتقال بين السجلات حتى أزيل عامل التصفية فهل من طريقة لجعله يؤدي نفس المهمة ولكن بدون فلترة يعني وكأنني فتحت النموذج يدويا ثم طلبت الانتقال للسجل المطلوب
  19. الإشكالية الثانية (إظهار حاصل مجموع القوائم) تم حلها بحمد الله، فخلال بحثي وصلت للصايغة الصحيحة لهذا الغرض وهي: DCount(""*"", ""[TAB]"", ""[TYPE1]>0"") بقي الإشكال الأول: وهو الصياغة الصحيحة لإحضار المجموع من خلال العلاقة بين جدولين: عدد (MSNO) من جدول (Tab_Msaneed) التابع لهذه القوائم (Lvl1 – lvl2 – lvl3 – lvl4) من خلال العلاقة بين الجدولين (Tab_Msaneed) (TAB_Msaneed_list) أجريت عدة محاولات .. كانت تخرج لي رسالة وفي الصياغة الأخيرة المذكورة سابقا أصبحت الرسالة ما هي الصياغة الصحيحة للكود، أم أنه لا بد من استخدام الاستعلام الخارجي ؟
  20. إشكالات طارئة !!! أجريت تعديلا بسيطا على هذه الطريقة: استبدلت استعلام التحديث بهذه العبارة في حدث عند التحميل CurrentDb.Execute "UPDATE TAB_RMZ SET TAB_RMZ.Total = DCount(""*"",""[TAB_RMZ_X]"",""[RMZno]="" & [RMZno])" وطبقت هذه الطريقة أيضا في جدول (Tab_Msaneed) والنتيجة تمام بحمد الله .. لكن حصلت معي بعض الإشكالات مع جدول (DATA_list) وهو الجدول الذي فيه كل القوائم، واجهتني مشكلتان: الأولى: لا مشكلة إذا كانت العلاقة بين جدولين كما هو الحال في قائمتي (نوع الحديث1) (نوع الحديث 2)، المشكلة إذا كانت العلاقة بين أكثر من جدولين، يظهر هذا في قوائم المسانيد: (LVL1) (LVL2) (LVL3) (LVL4) لم أستطع أن أجعل النتيجة تظهر بالطريقة السابقة (UPDATE TAB .. ..)، لأني لم أعرف كيف أصوغ العبارة، استطعت أن أحصل على النتيجة عبر استخدام استعلام (Q_Msaneed_List) .. فما هي الصياغة الصحيحة لعبارة التحديث ؟ 'CurrentDb.Execute "UPDATE [DATA_list] TAB_Msaneed_list INNER JOIN Tab_Msaneed ON TAB_Msaneed_list.ID = Tab_Msaneed.ID_MSA SET [DATA_list].TOTAL = DCount(""*"", ""[TAB_Msaneed_list]"", ""[lvl4]="" & [nom2]) WHERE (((DATA_list.NOM2)>0) AND ((DATA_list.NOM1)=6)) " ثانيا: في خانة (الكل) المطلوب إظهار حاصل مجموع القوائم التابعة له وليس عدد كل السجلات، يعني في الصورة: المفروض أن تكون النتيجة (3084) وليس (3087) .. لكن أيضا لا أعرف كيف تصاغ عبارة الكود !! CurrentDb.Execute "UPDATE [DATA_list] SET [DATA_list].TOTAL = DCount(""*"", ""[TAB]"", ""[TYPE1]="" & 1 and 2) WHERE (((DATA_list.NOM2)=0) AND ((DATA_list.NOM1)=1)) " Total.rar
  21. أحسن الله إليك أخي الكريم .. تم المطلوب بحمد الله وبما أن هذه من المرات القليلة التي يتم فيها المطلوب من أول تعديل ولم ندخل في دوامة التعديل على التعديل بسبب أنني لم أوضح المطلوب كما ينبغي 🙄 .. فلا بأس من سؤال عالماشي 😁 لاحظت في هذا الكود والذي قبله أنك استخدمت هذا الأمر لزيادة السرعة Me.Painting = False Me.Painting = True وأنا أستخدم عادة DoCmd.Echo False DoCmd.Echo True ويظهر لي أنهما يؤديان نفس المهمة .. فهل الأمر كذلك أم يوجد بينهما فرق في الأداء والسرعة
  22. الإخوة الكرام .. في الملف المرفق كود لحذف سجل أو عدة سجلات، بعد نسخها لجدول آخر وهو يعمل معي بشكل جيد والحمد لله لكن توجد مشكلة .. أرجو أن تكون بسيطة وهو أنه بسبب استخدام (Requery) يرجع لأول الملف والموضع المطلوب أن يرجع إليه، هو قبل أول حديث تم حذفه ففي هذا المثال إذا تم تحديد عدة سجلات لحذفها أولها رقمه (42) فالمطلوب أن يرجع لأول حديث قبله وهو (38) Delete.accdb
  23. أحسن الله إليك أخي الكريم .. تم المطلوب بحمد الله
  24. أحسن الله إليك أخي الكريم .. وكالعادة: أولا: أخذت وقتاً حتى استوعبت ما قمت به أخي الكريم 🙄 ثانيا: بعد الاستيعاب – وكالعادة – لا بد من ممارسة هوايتي المفضلة: التعديل على الأكواد 😁 وهذه المرة من المرات القلييييلة التي تنجح فيها تجاربي دون أن أثقل عليك وعلى الإخوة الكرام وخلاصة التجارب: 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) وقد أحتاج لتنفيذ أمر على عدة سجلات متتالية يتم تحديدها بالفأرة فكان ظني أن أستخدم هذه العبارة الشرطية لتنفيذ الأمر في السجلات المحددة لكن ما فهمته الآن أنه لا بد من وجود مربع اختيار لتنفيذ المهام على السجلات المحددة هل ما فهمته صحيح أخي الكريم ؟
×
×
  • اضف...

Important Information