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

nssj

03 عضو مميز
  • Posts

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

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

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

  1. It Takes | 41M:37.104S | To resolve | 9970 | Records Total Match is 4563 / 9970 Total Records ستتوقف تجاربي الآن لبعض المشاغل وبانتظار دالة حذف الأرقام بين قوسين .. إن أمكن حتى أعالج بعض الأمور في الملف لإجراء التجربة الكبرى على الملفات الرئيسية
  2. يبدو أننا أضفنا المشاركة في نفس الوقت بعد تجربة الملف الجديد فالحديث الأخير الذي لم تجده الدالة السابقة وجدته الدالة الجديدة 🙂
  3. أحسن الله إليك أخي الكريم أجريت تجربة على ملف كبير، والنتيجة أكثر من جيدة بحمد الله من حيث الوقت لم تأخذ إلا بضع دقائق والنتائج إلى الآن دقيقة .. ولا أزال في طور المراجعة العشوائية وكل الأخطاء التي وجدتها بسبب ما ذكرته سابقا من وجود بعض التعقيدات في الملف الرئيسي (TAB) أحد هذه التعقيدات يمكن تجاوزها بعملية استبدال في نص الجدول (TAB) وهي بسبب وجود ترقيمين في بعض الكتب، سواء كان الترقيم لطبعتين، أو ترقيم كلي للكتاب وترقيم خاص لبعض أجزائه، مثل: - مصنفات ابن البختري 237- (38) حدثنا محمد بن عبدك القزاز قال: حدثنا أبوبلال قال: حدثنا قيس بن الربيع - حديث شعبة لابن المظفر 213 - (153) حدثنا عبد الملك بن علي بن محمد بن مكرم - المخلصيات 1079- (60) حدثنا عبدالله قال: حدثنا حميد بن مسعدة الشامي فعند البحث عن كتاب (مصنفات ابن البختري) حديث رقم (38)، فستخرج النتيجة التالية: وليست هي النتيجة المطلوبة، النتيجة المطلوبة: * ولتجاوز هذا الأمر فأنا بحاجة إلى دالة منفصلة لحذف كل الأرقام التي تكون بين قوسين بشرط وجودها بعد [رقم& مسافة أو بدون مسافة& - & مسافة أو دون مسافة] يعني تصبح الأرقام السابقة كالتالي - مصنفات ابن البختري 237- حدثنا محمد بن عبدك القزاز قال: حدثنا أبوبلال قال: حدثنا قيس بن الربيع - حديث شعبة لابن المظفر 213 - حدثنا عبد الملك بن علي بن محمد بن مكرم - المخلصيات 1079- حدثنا عبدالله قال: حدثنا حميد بن مسعدة الشامي وأنا كنت أقوم بمثل هذه الإجراءات في وورد لوجود خاصية تسجيل الماكرو، أما في أكسس فلا أعرف كيف وأنا أفضل أن تكود في كود منفصل وليس ضمن الكود الذي يقوم بعملية البحث، لاحتمال أن أستخدمه في مجالات أخرى * أما الأحاديث التي لم يجدها -وهي قليلة- فكلها بسبب أخطاء في كتابة الأرقام في الملف، وهذا يدل على دقة الدالة بحمد الله ولكن استوقفني هذا الحديث الذي لم يجده فهل السبب وجود الرقم المطلوب (268) قبل وبعد الكتب في نفس الوقت .. على كل هذه حالة نادرة
  4. بارك الله فيك أخي الكريم بعد أن أضفت (المجمع) لقائمة الكتب كانت النتائج الخاطئة = 0 وجربت الكود على المجموعة القديمة التي بدأت بها هذا الموضوع وكانت النتائج الخاطئة = 0 وهذه نتيجة مبشرة بحمد الله وأنا الآن لدي بعض الأشغال خارج البيت ولا مجال للتجارب على الملفات الكبيرة الآن ولكن هل يساعد أن أعطيك قائمة بأسماء الكتب أنا عندي قائمة منفصلة بأسماء الكتب .. فيها أكثر (360) كتابا إلى الآن !! .. وهي في الملف المرفق BOOKSLIST.accdb
  5. عذرا أخي الكريم .. لم أنتبه لهذه المشاركة وهذه أحد التعقيدات الكبيرة بالنسبة لي .. فهناك مجموعة لا بأس بها من الكتب التخريج المعتمد فيها ليس على الرقم ، بل على الجزء والصفحة، والمشكلة أنه قد يكون في الصفحة الواحدة أكثر من حديث لذلك أنا في هذه المرحلة تركيزي سيكون على الكتب التي يكون التخريج فيها معتمدا على الأرقام فإذا انتهيت منها .. فلكل حادث حديث
  6. جزاك الله خيرا على اهتمامك لكن أنا رأيي إنو نركز أولا على مشكلة البحث عن الرقم بعد اسم الكتاب وليس قبله وإذا زبطت بعون الله .. نشوف الموضوع الثاني لكن .. أنا لما فكرت في موضوع حذف كل ما قبل اسم الكتاب هذا لأني مش من أهل الخبرة فهل موافقتك على هذه الطريقة تعني إنو ما في طريقة أخرى لتأدية المطلوب ؟؟ وإذا كنت تريد حذف ما قبل اسم الكتاب فهذا يعني أن الدالة ستنتج نص خاص للبحث عن كتاب (معجم ابن عساكر) وبعد الانتهاء منه تماما تنشئ نص آخر خاص للبحث عن (فوائد تمام) .. وهكذا لجميع الكتب ، لأنه توجد الكثير من الصفحات في (TAB) فيها أكثر من اسم كتاب كما هو ظاهر
  7. النتائج الخاطئة كانت (8) أصبحت بهذه الإضافة (6) وبالنسبة للوقت .. فيبدو أني أخطأت في التعبير .. مشكلتي كانت أن الدالة أخذت الكثير من الوقت عدة ساعات ولم تتوقف .. مما أجبرني على إيقافها .. يعني أنها (علقت) 🙂 إذا كانت بشكل سليم فعندي استعداد أن أترك الجهاز عدة ساعات يعمل للحصول على أفضل النتائج .. ولكن أكون مطمئنا أنها تعمل وليست (معلقة) 😀 ثانيا.. أخي الكريم، أنا أريد دالة توفر لي الوقت للحصول على أفضل النتائج الممكنة، وسوف أقوم بمراجعة النتائج وأعلم أنه لا يمكن الحصول على نتائج دقيقة 100% توجد في الملف عدة تعقيدات تحول حتى دون الوصول إلى نتائج بنسبة 70% في تقديري ولكن أسعى للحصول على الأفضل قدر الإمكان لتسهيل المراجعة مثلا .. طلبي أن يكون البحث عن الرقم بعد اسم الكتاب إلى نهاية الحقل وليس بعد اسم الكتاب مباشرة، على أساس أنه قد تتأخر بعض الأرقم كما في الصورة التي أرفقتها مسبقا هذا الطلب يحل لي مشكلة، لكنه يوقعني في مشكلة أخرى مشكلة شبيهة بالتي تحصل عند البحث عن الرقم حتى لو كان قبل اسم الكتاب كما في هذا المثال إذا كان المطلوب البحث عن معجم ابن عساكر (611)، فسيخرج هذا الحديث لوجود الرقم (611) بعد اسم الكتاب بعدة أسطر ويوجد عدة أمثلة لهذه الظاهرة لكن في تقديري أن الإبقاء على خاصية البحث عن الرقم ولو كان بعد اسم الكتاب بعدة أسطر فائدتها أكبر من مضارها وكما ذكرت .. توجد تعقيدات أخرى سوف تتسبب بخطأ في النتائج .. لكن إذا تجاوزنا مشكلة البحث عن الرقم بعد اسم الكتاب فقط وليس قبله، كما تجاوزنا مشكلة البحث عن الرقم كاملا .. فأنا راض بالنتيجة .. والله الميسر
  8. أخي الكريم .. في الملف الجديد المرفق أمثلة يظهر فيها أهمية أن يكون البحث بعد اسم الكتاب وبخلاف ذلك ستحدث الأخطاء الأرقام الصحيحة في حقل (MNOX) وعدد الأخطاء في الملف (8) وكلها لنفس السبب وقد ميزتها بعلامة (1select) وهذا أحدها الدالة بحثت أولا عن اسم الكتاب (الطيوريات) ثم بحثت عن الرقم المطلوب وهو (135) ووجدتهما في (TAB) في الحديث رقم (30731) ولكنه ليس هو المطلوب لأن الرقم (135) الذي تم إيجاده ليس هو رقم الحديث في كتاب الطيوريات وإنما رقما لحديث في كتاب آخر ذُكر قبله قد يعد هذا الأمر مصادفة .. ولكنها كثيرة الحدوث لا بد من البحث عن الرقم بعد اسم الكتاب والرقم الصحيح للحديث المطلوب كما في حقل (MNOX) هو : (62993) ويمكن استعراض أحاديث (BOOKS) وما يقابلها من الملف الرئيسي (TAB) من خلال نموذج (BOOKS) وبالنقر المزدوج على رقم (MNOX) يظهر الحديث الصحيح المطلوب Smart_Search_New01.accdb
  9. جزاك الله خيرا أخي الكريم .. وأنا بحاجة لوقت لاستيعاب هذه المستجدات .. والآن تركيزي على التجارب بعد التجربة على ملف أكبر قليلا خرجت هذه الرسالة وبقي (188) حديثا من أصل (282) لم يعمل فيها الكود وعند مراجعة نتائج ما عمل فيه الكود ظهرت بعض الأخطاء التي مرجعها إلى وجود الرقم المطلوب قبل اسم الكتاب لذلك لا بد من البحث عن الرقم بعد اسم الكتاب وما قبله لا اعتبار له لذلك انا عندما كنت أجري التجارب الأولية -لكوني أعشق التجارب- خطر على بالي إعداد نص خاص للبحث يحذف كل النص الذي قبل اسم الكتاب المطلوب ليكون البحث فيما بعده، وهذا يقتضي أن أعد نصا خاصا لكل اسم كتاب .. وهذا حل غير عملي بالطبع 😁
  10. جزاك الله خيرا أخي الكريم .. وأنا الآن خارج المنزل لذلك لا أستطيع إجراء التجارب .. لكن هذا الخطأ الي أشرت إليه هو مني .. فيبدو أنك اعتمدت الملف الأول لأني أصلحت الخطأ في الملفات التالية يعني .. بالنظر السريع الدالة قد عملت بشكل جيد والحمد لله .. لكن لا بد من المزيد من التجارب على أحاديث أخرى وملفات أكبر .. لأني لاحظت أن كل الدالات السابقة عند استخدامها في ملفات أكبر تترك عددا كبيرا من الأحاديث دون أن تعمل فيها .. ليست القضية أن النتائج صحيحة أم خاطئة .. القضية أنه لا توجد نتائج مع أن المعطيات صحيحة لذلك لا بد من حفلة تجارب عندما أعود للمنزل .. والله الميسر
  11. أخي الكريم .. لا تزال الأخطاء نفسها لابد من البحث عن الرقم كاملا حتى لا يحصل خلط بين : (312) (1312) وأمثالها ولا بد من البحث عن الرقم بعد اسم الكتاب وإلا ستكون الأخطاء كبيرة تأكدت من هذا بعد التجربة على الملفات الأصلية لأنه توجد الكثير من الأرقام .. مثلا هذا الحديث في أوائل الملف الأصلي إذا كان البحث عن الرقم فقط فستعتمد الدالة رقم هذا الحديث عند البحث عن كل حديث رقمه (5) أو (113) أو (114) أو (66) أو (185) أو (293) أو (706) .. ..
  12. أهلا وسهلا بأخي الكريم Foksh الدالة عملت في جميع الأحاديث لكن يوجد خطأ في موضعين والسبب هو عدم البحث عن الرقم كاملا، فحصل خلط بين [172 & 1720] [312 & 1312] ثانيا: لفظ نظري قولك وهذا قد يسبب بعض الأخطاء في حالة وجود حديث فيه اسم الكتاب المطلوب وفيه أيضا الرقم المطلوب البحث عنه قبل اسم الكتاب، كأن يكون رقما لكتاب آخر، أو حتى رقم آية في متن الحديث لذلك أضفت هذا الرقم في النص وعند ما جربت الدالة تأكدت ظنوني وأعطى النتيجة الخاطئة لذلك لا بد من البحث عن الرقم بعد اسم الكتاب ثالثا: أرجو أن تعمل الدالة بشكل جيد في الملفات الكبيرة، فقد جربت الدالة الأولى على أحد الملفات الجاهزة عندي للعمل وفيه أكثر من (7000) حديث، قبل ثلاث ساعات وإلا الآن لم تنهي الدالة عملها مما اضطرني لإجبارها على التوقف رابعا: التأكد من أن الدالة إن لم تجد الرقم أو النص المطلوب تنتقل لما بعده دون أن تتعطل أو تخرج رسالة خطأ Smart_Search03.accdb
  13. وهذا ما فعلته أخي الكريم بطريقتين، كما تراه في نموذج (Frm1) لكن هذه هي النتيجة في الطريقتين لم تعمل الدالة في بعض المواضع، والملاحظ أنها لم تعمل في الأحاديث التي لها نفس الرقم المرجعي وتبقى الملاحظة الأولى: لم تعمل الدالة في أول ثلاثة أحاديث حتى باستخدام الماكرو Smart_Search02.accdb
  14. وطلب آخر إن تكرمت وهو جعل الدالة تعمل من خلال زر في نموذج وليس عبر ماكرو لأنها الطريقة التي اعتدت عليها وحاولت عمل ذلك، ونسخت الدالة في زر .. لكن لم يعط كل النتائج التي أعطاها الماكرو
  15. جزاك الله خيرا أخي الكريم الماكرو الثاني يكاد يكون أدى المطلوب تماما Function UpdateBooksWithMNO2() Dim db As DAO.Database Dim rsBooks As DAO.Recordset Dim rsTab As DAO.Recordset Dim sql As String Dim bookName As String Dim bookNumber As String Dim fullText As String Dim found As Boolean Set db = CurrentDb() ' فتح مجموعة السجلات للجدول BOOKS Set rsBooks = db.OpenRecordset("BOOKS") ' التكرار عبر السجلات في BOOKS Do While Not rsBooks.EOF bookName = rsBooks!bookName bookNumber = rsBooks!B_Hno found = False ' البحث في الجدول الرئيسي TAB sql = "SELECT * FROM TAB WHERE NASS LIKE '*" & bookName & " (" & bookNumber & ")*'" Set rsTab = db.OpenRecordset(sql) If Not rsTab.EOF Then rsTab.MoveFirst Do While Not rsTab.EOF fullText = bookName & " (" & bookNumber & ")" If InStr(rsTab!NASS, fullText) > 0 Then rsBooks.Edit rsBooks!mno = rsTab!mno rsBooks.Update found = True Exit Do End If rsTab.MoveNext Loop End If rsTab.Close Set rsTab = Nothing rsBooks.MoveNext Loop rsBooks.Close Set rsBooks = Nothing Set db = Nothing End Function حتى أنه اكتشف خطأ في أحد الأرقام التي أدخلتها يدويا، لأنه كما ذكرت فقد وضعت الأرقام الصحيحة في حقل (MNOX) وهذا يبين أهمية الدالات الذكية .. لتدارك أخطاء العمل اليدوي 😀 ولكن أول ثلاثة أحاديث لم يعمل فيها الماكرو !! كما في الصورة ولعلك أخي الكريم تعالج هذا الأمر حتى أجري المزيد من التجارب للتأكد
  16. الإخوة الكرام .. السلام عليكم ورحمة الله وبركاته عندي جدول (BOOKS) فيه أحاديث كلها موجودة في الجدول الرئيسي (TAB) وأريد معرفة أماكنها في الجدول الرئيسي وربطها به عبر المفتاح الأساسي (MNO) وأريد دالة ذكية تسهل هذه المهمة إن أمكن والجيد في الأمر أنه ليس المطلوب هو البحث التقليدي: اختيار كلمة أو أكثر من الحديث في الجدول (BOOKS) والبحث عنها في الجدول الرئيسي (TAB) الأمر بحمد الله أسهل .. على الأقل في تصوري المطلوب من الدالة أن تبحث عن رقم معين بعد نص معين * مثلا: في هذا الحديث من جدول (BOOKS) : المطلوب من الدالة أن تبحث في حقل (NASS) من الجدول الرئيسي (TAB) عن الحديث الذي فيه اسم الكتاب "مصنفات الحمامي" يليه الرقم (116)، واسم الكتاب من حقل (BookName)، والرقم من حقل (B_Hno) والحديث المطلوب هو في الجدول الرئيسي (TAB) ثم وضع الرقم (MNO) في جدول (BOOKS) وقد قمت أنا بوضع الأرقام الصحيحة المطلوبة في حقل (MNOX) * وغالبا ما يكون الرقم بعد اسم الكتاب مباشرة، ولكن قد يتأخر عنه في بعض المواضع، مثلا هذا الحديث في الجدول الرئيسي (TAB) فهذا الحديث موجود في جدول (BOOKS) في تسعة مواضع والدالة ستبحث انطلاقا من جدول (BOOKS) تبحث في حقل (NASS) من الجدول الرئيسي (TAB) عن الحديث الذي فيه اسم الكتاب "فوائد تمام" يليه رقم (168) وتضع رقمه، ثم تبحث مرة أخرى عن "فوائد تمام" يليه رقم (169) .. وهكذا * مع ملاحظة البحث عن الرقم كاملا، حتى لا يحصل خلط بين: فوائد تمام (312) // فوائد تمام (1312) أرجو أن أكون قد وفقت في شرح المطلوب ثم أرجو أن يكون بالإمكان عمل ذلك في أكسس لأن ذلك سيوفر لي الكثير من الوقت Smart_Search.accdb
  17. جزاك الله خيرا أخي الكريم وأحسن إليك تم المطلوب بحمد الله ولكن اسمح لي بسؤال لزيادة معلوماتي التراكمية 🙂 عندما نظرت في الكود ( Do While ،، Loop ) لاحظت أنه يشبه بعض الأكواد التي أحتفظ بها لعمليات الترقيم، وهي الأكواد التي فيها ( For i = 1 To K ،، Next i) فهل هذين النوعين يؤديان نفس الغرض ؟
  18. أخي الكريم .. سأشرح الخطوات التي كنت سأقوم بها يدويا للقيام بالمطلوب، لعلها توضح ماهية الاستعلام أو الكود المطلوب البداية ستكون من (HNO)، مع ملاحظة أن كل الأرقام الموجودة فيه متكررة، وأبدأ بكل مجموعة وأنظر إلى المجموعة التي تقابلها من (SUB_ID) فإذا كان لها نفس الرقم فالعمل صحيح، وليس المقصود (بنفس الرقم) أن يكون لها نفس رقم (HNO)، بل المقصود أن يكون الرقم فيها موحداً لكل أفراد المجموعة، فإذا كان كذلك فالعمل صحيح وأنتقل للمجموعة التالية من (HNO) وهكذا وفي الجدول المرفق أول أربع مجموعات لا خطأ فيها أول خطأ في المجموعة التي تليها فلا ينبغي أن يختلف الرقم في (SUB_ID) بل ينبغي أن يكون الرقم موحداً إما (73) أو (72) لذلك ينبغي تمييز هذه المواضع بعلامة في (CHEK) لمراجعتها وتصحيحها وكذلك في موضع الخطأ الثاني كان ينبغي أن يكون رقم كل أفراد مجموعة (SUB_ID) هو (261) فالمطلوب تمييز هذا الموضع أيضاً لمراجعته ومعرفة سبب الخطأ هذه الخطوات التي كنت سأقوم بها يدويا، لكن الجدول كبير، مع وجود احتمال أن يزل النظر فلا أنتبه لوجود الخطأ لتتابع الأرقام .. فإذا كان من الممكن القيام بذلك عبر استعلام أو كود فهو أفضل
  19. أخي الكريم .. هذا الاستعلام عالج الموضعين الذين ذكرتُهما فقط، والمطلوب ليس معالجة الخطأ ، المطلوب معرفة أين مواضع الخطأ فالمشكلة أني لا أعرف أين هذه الأخطاء في الملف الأصلي، وهذين الخطأين وضعتهما أنا يدويا للتوضيح
  20. شكراً على مشاركتك أخي الكريم .. لكن يبدو أني لم أشرح بشكل جيد انظر هذه الصورة المفروض أنه إذا كان رقم (HNO) واحداً، يكون أيضاً رقم (SUB_ID) واحداً لكن يوجد في الجدول خطأ في موضعين ميزتهما باللون الأحمر، ووضعت علامة يدوية في حقل (CHEK) للإشارة إلى أنه يوجد هنا خطأ ففي الموضع الأول المفروض أن يكون رقم (SUB_ID) = (73) ، مثل الرقم الذي قبله لأن لهما نفس رقم (HNO) الذي هو (20) وفي الموضع الثاني المفروض أن يكون رقم (SUB_ID) = (261) ، مثل الرقم الذي قبله لأن لهما نفس رقم (HNO) الذي هو (58) أرجو أن أكون قد شرحت المطلوب بشكل أوضح وأرجو أنه يمكن القيام بذلك باستعلام أو كود، لأن القيام بذلك يدويا سيأخذ وقتل طويلاً في الملف الأصلي
  21. السلام عليكم الإخوة الكرام .. لدي جدول (TAB3) فيه حقل مرقم (HNO) وحقل مرقم آخر (SUB_ID) والمفترض أنه حيث كان رقم (HNO) واحداً، يكون أيضاً رقم (SUB_ID) واحداً وما كان سوى ذلك فهو خطأ وللتوضيح فهذه نسخة مصغرة من الجدول، والأرقام التي فيها خطأ مميزة بالدائرة الحمراء، والمطلوب تمييز هذه الأرقام بوضع علامة في حقل (CHEK)، أو إظهارها في استعلام خاص TAB3.accdb
  22. بارك الله فيك أخي الكريم @ابو جودي أنا أبحث دائما عن مواضيع البحث لحاجتي لها وقمت سابقاً بعدة محاولات لاختراع أكواد للبحث بعدة خيارات .. لكن بمقارنتها بالكود الخفيف الظريف الذي تفضلت به .. يظهر الفرق بين .. .. والـ .. .. 😂 فإذا كان لديك متسع من الوقت فهل لك أن تضيف إلى كود البحث خياراً آخر وهو البحث عبر مربعي بحث وليس مربع واحد فقط ، مع خيار البحث [و - أو] وفي كل مربع منهما الخياران [يتضمن - يتطابق] يعني كما في هذه الصورة التقريبية أنا أجريت سابقا عدة محاولات .. لكني ضعت في زحمة الاحتمالات 😅
  23. أولاً: بتحربة التحديد فقط فليس كل مرة يقوم بتحديد النص المطلوب .. فأحيانا لا يحدد شيئا مع وجود المعطيات المطلوبة، في الملف المرفق لا يحدد شيئا في رقم (2) ورقم (4) ثانيا: عند تجربتي له في كود القص واللصق كان يقص نصا آخر من صفحة أخرى والمطلوب أن يقص من الصفحة التي هو فيها فقط .. وربما تنتهي هذه المشكلة إذا عولجت المشكلة الأولى ثالثا: مجال العمل هو حقل (nass) أما (nass2) فهو لبيان النص المطلوب الحصول عليه وضعته يدويا على عجل لذاك حصل فيه خطأ في الحديث الثاني 🙂
  24. جزاك الله خيرا أخي الكريم .. كما ذكرتُ في الموضوع السابق: الذكاء الصناعي صعب علي 😂 .. لم أعرف كيف أشغل هذا الكود 🤔 جربت أن أشغله لوحده في زر خاص .. ولم يحدث شيء ومع أن هذا الكود يختلف كليا عن الكود الذي استخدمته ، جربت أن أدخله ضمن الكود بتاعي عبر (Call SelectText) والنتيجة نفسها
  25. للرفع .. وليس بالضرورة الاطلاع أو التعديل على الكود كله .. أنا تنقصني وأعتقد أني بعدها أستطيع إكمال المهمة بعون الله وقد حاولت - بالنظر لمشاركات سابقة للإخوة الكرام - أن أقوم بتحديد النص المطلوب بعبارات مثل Me.nass.SelStart = 0 ' المطلوب تحديد من أول النص إلى ما قبل أول فقرة تبدأ برقم Me.nass.SelLength = InStr([nass], IsNumeric(Left([nass], 1))) Me.nass.SelLength = InStr([nass], IsNumeric(Left([nass], 1)) - 1) Me.nass.SelLength = Len(IsNumeric(Left([nass], 1))) Me.nass.SelLength = InStr(10, [nass], IsNumeric(Left([nass], 1))) ولكن كانت تخرج هذه الرسالة
×
×
  • اضف...

Important Information