بحث مخصص من جوجل فى أوفيسنا
![]()
Custom Search
|
-
Posts
384 -
تاريخ الانضمام
-
تاريخ اخر زياره
نوع المحتوي
المنتدى
مكتبة الموقع
معرض الصور
المدونات
الوسائط المتعددة
كل منشورات العضو nssj
-
بعد التجارب والمحاولات المتعددة تم الوصول للمطلوب بحمد الله، في الجانبين: الإضافة والنقل وفي الملف المرفق خلاصة التجارب والمحاولات هذا وقد فرقت في التعامل بين الجدول الرئيسي الكبير (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
-
الإخوة الكرام .. عندي حقل نصي (NASS) وكنت أجرب البحث عن السجل التالي الذي يتضمن كلمة معينة باستخدام Dim txtsearch As String txtsearch = Me![tx1] 'DoCmd.SearchForRecord , "", acNext, "[NASS] = '" & txtsearch & "'" DoCmd.SearchForRecord , "", acNext, "[NASS] like " & "'" & txtsearch & "'" & "" ولم تنجح التجربة إلا إذا كان الحقل يحتوي على هذه الكلمة فقط، يعني إذا كان المطلوب البحث عن (محمد) فلا يجدها بهذه الطريقة إذا كانت ضمن كلام آخر، يجدها فقط إذا كانت هي فقط في حقل (NASS) ما هي الصيغة الصحيحة للوصول للمطلوب، أم أنه لا يمكن أداء هذه المهمة باستخدام هذه الطريقة ؟
-
بعد عدة تجارب تمكنت من فعل المطلوب: تغيير طريقة عرض النموذج دون إغلاق النموذج والذهاب لوضع التصميم .. ولأنه في طريقة عرض ورقة البيانات لا تظهر الأزرار جعلت العودة لطريقة عرض النموذج بالنقر المزدوج وأضفت لهذه التجارب زرا لجعل النموذج ملئ الشاشة وزرا آخر للعودة للوضع السابق والأمور التي لم أستطع فعلها: 1- عدم إظهار رسالة حفظ التغييرات عند الإغلاق بالطريقة العادية، فأنا أريد الخروج دون حفظ التغييرات في طريقة العرض، كل ما استطعت فعله أن يجعله يخرج بدون رسالة الحفظ عند الخروج بالكبس على زر خاص تم إنشاؤه لهذا الغرض 2- عدم إظهار ورقة الخصائص في طريقة عرض ورقة البيانات 3- الانتقال إلى عرض ورقة البيانات إذا كان النموذج ملئ الشاشة ونتيجة تجاربي في الملف المرفق .. وكوني تمكنت من فعل المطلوب لا يعني بالضرورة أن الطريقة التي اتبعتها هي الطريقة الصحيحة .. هي مجرد محاولات تنتظر التقييم من أهل الخبرة FormView.accdb
-
جزاك الله خيرا أخي الكريم جعفر .. لكن بصراحة لما شفت الأكواد قلت لحالي: ياااااه .. كل هذا عشان تعرض النموذج بهالطريقة .. وكان مالها الطريقة الافتراضية 😅 وكنت متخوف من الكود في حدث عند التحميل ، لأن لكل نموذج أكواد خاصة فيه عند التحميل وخفت تتعارض الأكواد أو يتسبب في بطء الفتح لكن بعد التطبيق هديت أعصابي 🙂 .. وما لاحظت بطء في فتح النماذج لكن في الطريقة الثانية كانت تخرج رسالة برقم (2450) عند فتح النموذج الثاني بطريقة عادية وليس من خلال النموذج الآخر .. وتمت معالجة المشكلة بإضافتها للكود If Err.Number = 2145 Or Err.Number = 2450 Then وختاما .. بحكم خبرتك أخي الكريم: بأي الطريقتين تنصحني، أنا بنظرتي السطحية أميل للطريقة الثانية لأن عدد أسطر الكود فيها أقل، وأنا مش قادر أتخلص من فكرة إنو قلة عدد أسطر الكود يعني إنو أسرع وأقل تعقيدا
-
جزاك الله خيرا أخي الكريم محمد أبوعبدالله .. ولكن في هذه الطريقة إشكاليتان: 1- فبعد استخدامها ولو لمرة واحدة: فعند فتح النموذج الآخر بشكل عادي يفتح على السجل المخزن في الذاكرة، وتجاوزت هذه الإشكالية بأن أضفت في آخر الكود i = 0 ثم رأيت مشاركة الأخ jjafferr.. وطريقته ليست فيها هذه الإشكالية لكن تبقى الإشكالية الثانية في الطريقتين 2- النماذج المطلوب التطبيق عليها ليست في وضع منبثق، وأنا أفضل أن تفتح عند الطلب بهذا الكود بشكل منبثق أو مربع حوار، دون تغيير خصائص النموذج، لذلك استخدمت في الكود (acDialog) والخطأ مني منذ البداية كان ينبغي أن أرفق ملفا للتطبيق عليه .. فهذا هو الملف، مع العلم أني بعد إجراء المزيد من التجارب عدلت على الكود ليصبح DoCmd.OpenForm "FRM2", acNormal, , , , acDialog [Forms]![Frm2].Recordset.FindFirst "[ID]=" & ID ولكن أصبحت تخرج هذه الرسالة فهل هذا يعني أن علي أن أصرف النظر عن قضية فتح النموذج المستدعى بهذه الطريقة في وضع منبثق، وأكتفي بأن يفتح بطريقته الافتراضية ؟ OpenForm.accdb
-
الإخوة الكرام .. إذا كنت في سجل معين في نموذج (FRM1) وأردت فتح نموذج آخر (FRM2) على نفس الموضع من خلال هذا الكود DoCmd.OpenForm "FRM2", acNormal, , "[ID]=" & ID, , acDialog يفتح هذا السجل فقط ولا يمكنني الانتقال بين السجلات حتى أزيل عامل التصفية فهل من طريقة لجعله يؤدي نفس المهمة ولكن بدون فلترة يعني وكأنني فتحت النموذج يدويا ثم طلبت الانتقال للسجل المطلوب
-
الإشكالية الثانية (إظهار حاصل مجموع القوائم) تم حلها بحمد الله، فخلال بحثي وصلت للصايغة الصحيحة لهذا الغرض وهي: DCount(""*"", ""[TAB]"", ""[TYPE1]>0"") بقي الإشكال الأول: وهو الصياغة الصحيحة لإحضار المجموع من خلال العلاقة بين جدولين: عدد (MSNO) من جدول (Tab_Msaneed) التابع لهذه القوائم (Lvl1 – lvl2 – lvl3 – lvl4) من خلال العلاقة بين الجدولين (Tab_Msaneed) (TAB_Msaneed_list) أجريت عدة محاولات .. كانت تخرج لي رسالة وفي الصياغة الأخيرة المذكورة سابقا أصبحت الرسالة ما هي الصياغة الصحيحة للكود، أم أنه لا بد من استخدام الاستعلام الخارجي ؟
-
إشكالات طارئة !!! أجريت تعديلا بسيطا على هذه الطريقة: استبدلت استعلام التحديث بهذه العبارة في حدث عند التحميل 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
-
مساعدة في كود حذف عدة سجلات بعد نسخها إلى جدول آخر
nssj replied to nssj's topic in قسم الأكسيس Access
أحسن الله إليك أخي الكريم .. تم المطلوب بحمد الله وبما أن هذه من المرات القليلة التي يتم فيها المطلوب من أول تعديل ولم ندخل في دوامة التعديل على التعديل بسبب أنني لم أوضح المطلوب كما ينبغي 🙄 .. فلا بأس من سؤال عالماشي 😁 لاحظت في هذا الكود والذي قبله أنك استخدمت هذا الأمر لزيادة السرعة Me.Painting = False Me.Painting = True وأنا أستخدم عادة DoCmd.Echo False DoCmd.Echo True ويظهر لي أنهما يؤديان نفس المهمة .. فهل الأمر كذلك أم يوجد بينهما فرق في الأداء والسرعة -
الإخوة الكرام .. في الملف المرفق كود لحذف سجل أو عدة سجلات، بعد نسخها لجدول آخر وهو يعمل معي بشكل جيد والحمد لله لكن توجد مشكلة .. أرجو أن تكون بسيطة وهو أنه بسبب استخدام (Requery) يرجع لأول الملف والموضع المطلوب أن يرجع إليه، هو قبل أول حديث تم حذفه ففي هذا المثال إذا تم تحديد عدة سجلات لحذفها أولها رقمه (42) فالمطلوب أن يرجع لأول حديث قبله وهو (38) Delete.accdb
-
تنفيذ الأمر في السجلات التي يتم تحديدها بالفأرة فقط
nssj replied to nssj's topic in قسم الأكسيس Access
أحسن الله إليك أخي الكريم .. تم المطلوب بحمد الله -
تنفيذ الأمر في السجلات التي يتم تحديدها بالفأرة فقط
nssj replied to nssj's topic in قسم الأكسيس Access
أحسن الله إليك أخي الكريم .. وكالعادة: أولا: أخذت وقتاً حتى استوعبت ما قمت به أخي الكريم 🙄 ثانيا: بعد الاستيعاب – وكالعادة – لا بد من ممارسة هوايتي المفضلة: التعديل على الأكواد 😁 وهذه المرة من المرات القلييييلة التي تنجح فيها تجاربي دون أن أثقل عليك وعلى الإخوة الكرام وخلاصة التجارب: 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) وقد أحتاج لتنفيذ أمر على عدة سجلات متتالية يتم تحديدها بالفأرة فكان ظني أن أستخدم هذه العبارة الشرطية لتنفيذ الأمر في السجلات المحددة لكن ما فهمته الآن أنه لا بد من وجود مربع اختيار لتنفيذ المهام على السجلات المحددة هل ما فهمته صحيح أخي الكريم ؟ -
تنفيذ الأمر في السجلات التي يتم تحديدها بالفأرة فقط
nssj replied to nssj's topic in قسم الأكسيس Access
أحسن الله إليك أخي الكريم .. يبدو أن الموضوع ليس سهلا كما كنت أظن أنا كنت أظن أن الأمر سيتم بصياغة الجملة التي بعد (WHERE) بمعني أن تكون هناك جملة أو صيغة تميز السجلات التي تم تحديدها بالفأرة لينفذ عليها الأمر وأنا كنت أنوي استخدام هذه الجملة لتنفيذ أوامر أخرى مثل (حذف سجلات تم تحديدها بالفأرة) وغير ذلك، أحيانا على مربع (MOVEX) وأحيانا على مربع (SelectX) -وهو غير موجود في النموذج المرفق لأنه للتجربة فقط- وذلك حسب طبيعة الكود ومهمته لكن .. إذا كان الأمر لا يتم إلا بهذه الطريقة، بوضع الأمر في الفورم نفسه، فهل من طريقة لجعل تنفيذه بعد الكبس على الزر، فلا أريد كلما تم تحديد سجل أو عدة سجلات أن يقوم الكود بالعمل فورا وتبقى إشكالية لو كان المطلوب تطبيق الأمر على المربع الآخر (SelectX) عند الحاجة لذلك في مهمة أخرى -
تنفيذ الأمر في السجلات التي يتم تحديدها بالفأرة فقط
nssj replied to nssj's topic in قسم الأكسيس Access
أخي الكريم .. يبدو أني لم أوضح المطلوب بشكل جيد 😐 المطلوب في هذه الصورة أن يضع الكود علامة صح في المربع في السجلات الأربع التي تم تحديدها والكود الذي تفضلت به يضع (صح) في بقية السجلات هذا بعد أن أضع أنا فيها علامة (صح) -
الإخوة الكرام .. المطلوب تنفيذ هذا الأمر CurrentDb.Execute "UPDATE [TAB] SET [TAB].[MoveX] = Yes" في السجلات التي يتم تحديدها بالفأرة فقط وليس في كل السجلات select.accdb
-
مساعدة في استعراض السجلات حسب القوائم المنسدلة المتفرعة
nssj replied to nssj's topic in قسم الأكسيس Access
تم المطلوب بحمد الله .. انطلاقا من الكود الذي تفضلت به أخي الكريم، وبعد عدة تجارب، مع التعديل على جدول (DATA_list) وإضافة خانة (الكل) ، أصبحت النتائج تظهر بالشكل المطلوب .. وهذا الملف بعد آخر التجارب والإضافات Msaneed List 9.rar -
مساعدة في استعراض السجلات حسب القوائم المنسدلة المتفرعة
nssj replied to nssj's topic in قسم الأكسيس Access
أحسن الله لك أخي الكريم .. النتيجة أفضل بكثير وتم تجاوز مشكلة تغيير البيانات في الجدول بعد أن تذكرت شيئا سمعته في بعض الفيديوهات من النت، فجعلت القوائم (غير منضم) وتم الأمر لكن بقيت قضية استعراض الكل عند جعل القائمة فارغة تظهر المشكلة إذا كانت كل القوائم ممتلئة: فإذا أردت استعراض بعضها، مثلا (الرجال – حرف الراء) فلا يكفي أن أفرغ القائمتين الأخريين، بل لا بد من إلغاء التصفية أولا ثم إعادة اختيار (الرجال) ثم اختيار (حرف الراء) فهل من طريقة لجعل الفلترة تعتبر الفراغ في أي خانة يعني إظهار الكل في هذه الخانة مع اعتبار بقية الخانات يعني بمجرد تفريغ الخانة الأولى يستعرض النتائج حسب بقية الخانات سواء كانت (مسانيد أو مبهمات أو مراسيل) وعند تفريغ الخانة الثالثة تظهر كل النتائج باعتبار (الرجال – حرف الراء) سواء كانت أسماء أو كنى ، مسانيد أو مبهمات أو مرسلات .. وهكذا -
مساعدة في استعراض السجلات حسب القوائم المنسدلة المتفرعة
nssj replied to nssj's topic in قسم الأكسيس Access
جزاك الله خيرا أخي الكريم د.كاف يار .. لكن لا تزال هناك بعض الملاحظات: 1- لم تكن النتائج الدقيقة في كل مرة لكن بعد التعديل التالي على الكود أصبحت النتائج دقيقة varFilter = (varFilter) & "[LVL1] lIKE " & LVL1 & "" varFilter = (varFilter + " and ") & "[LVL2] lIKE " & LVL2 & "" varFilter = (varFilter + " and ") & "[LVL3] lIKE " & LVL3 & "" varFilter = (varFilter + " and ") & "[LVL4] lIKE " & LVL4 & "" 2- هل بالإمكان أن تخرج النتائج حتى لو كانت بعض الخيارات فارغة، يعني إذا أردت أن أعرف نتيجة (النساء – حرف السين) فقط، تخرج .. (مبهمات – الكنى – حرف العين) .. (مراسيل – حرف الدال) وهكذا ولأني أحب التجارب حاولت بوضع عدة احتمالات مثل If IsNull(LVL1) And IsNull(LVL4) Then ولكن ليس دائما تخرج النتيجة المطلوبة 3- عند تغيير الخيارات تتغير البيانات في السطر الأول من الجدول ومن تجاربي أيضا أنني حاولت أن أجعل النتائج تخرج عبر استعلام ظنا مني أن البيانات لن تتغير في الجدول، ولكنها تغيرت وفي الملف المرفق نتيجة تجاربي التي لم تنجح 😁 Msaneed List 7.rar -
مساعدة في استعراض السجلات حسب القوائم المنسدلة المتفرعة
nssj replied to nssj's topic in قسم الأكسيس Access
🤔 😐 🤔 -
الإخوة الكرام .. في الملف المرفق جدول (TAB_Msaneed_list) وهو فهرس للمسانيد (Tab_Msaneed)، وهو فهرس من أربع مستويات، ويأخذ بياناته باستعلامات بوساطة جدول (DATA_list)، كما يظهر في النموذج (Frm_Msaneed_list) وهذه الطريقة في عمل الفهرس كانت بناء على توجيهات أحد الإخوة، ولكن انقطع الاتصال معه، وأنا الآن في (حيص بيص 🙄) والمشكلة التي واجهتها هي في عرض قائمة المسانيد المطلوبة حسب القوائم المختارة فإذا أردت مثلا استعراض مسانيد حرف (الجيم) من كنى الرجال، أقوم باختيار هذه الخيارات من القوائم، فتعرض النتيجة في النموذج الفرعي (Fsub_Msaneed) ولكن .. لا تظهر النتائج معي إلا بالتنقل بين السجلات .. يعني علي أن أنتقل بين السجلات حتى تظهر النتيجة المطلوبة في حين أنني إذا قمت بتغيير الاختيارات من القوائم تتغير البيانات في الجدول المصدر (TAB_Msaneed_list) بدل أن تتم عملية الانتقال، لذلك فعلت خاصية التأمين لهذه القوائم حتى لا تتغير البيانات أعرف أنني ارتكبت عدة أخطاء .. ويمكن أكون (خبصت الدنيا 😁) لكن هذا أفضل ما استطعت الوصول إليه حسب معلوماتي 😐 Msaneed List.rar
-
الحمد لله .. بعد عدة تجارب تم الوصول للمطلوب باستعلام واحد وهذه التجارب الناجحة -وإن كانت قليلة- تشعرني إنو في أمل جزاك الله خيراً أخي الكريم وأحسن إليك