بحث مخصص من جوجل فى أوفيسنا
![]()
Custom Search
|
-
Posts
384 -
تاريخ الانضمام
-
تاريخ اخر زياره
نوع المحتوي
المنتدى
مكتبة الموقع
معرض الصور
المدونات
الوسائط المتعددة
كل منشورات العضو nssj
-
جزاك الله خيرا أخي جعفر .. تم تجاوز هذا الأمر لكن ظهرت معي في الملف المرفق مشكلة أخرى 🙂 عند الكبس على المنظار (go) والتكست بوكس فارغ أو الرقم خطأ تخرج هذه الرسالة لكن عند كتابة رقم بشكل صحيح لا مشكلة وانتهت المشكلة عندما حذفت الكود (Call tn_AfterUpdate) .. وطبعا هذا لم يؤثر على عملية الانتقال بالكبس عليه .. فهل تصرفي صحيح
-
معلش .. ممكن تعديل آخر ☺️ هل بالإمكان يعد كتابة الرقم خطأ وخروج الرسالة أن ينتقل المؤشر مباشرة للتكست بوكس (tn) لكتابة الرقم الصحيح حاولت ذلك بإضافة سطر للكود لكن لم تنجح المحاولة .. وحتى مع تغيير (فهرس علامات الجدولة) المؤشر ينتقل معي لأي مكان إلا التكست بوكس 🤔 If DCount("*", "qry_tbl2", "HNO =" & Me.tn) = 0 Then MsgBox "الرقم غير موجود" Me.tn.SetFocus Me.tn = "" Else . . .
-
عوداً على بدء .. والله الميسر السرعة هي الأهم عندي مع أكثر حد ممكن من المرونة من حيث الخيارات والتسهيلات التي سأحاول أن أوضحها بالتفصيل بعون الله .. لأن هذا الأمر (إضافة سجل بين السجلات ونقل السجلات) لا أقوم به كثيرا فحسب، بل هو صلب عملي .. فالسرعة مهمة هذا .. وعملاً بوصيتك أخي الكريم جعفر سأحاول أن أفصل بشكل أكثر، وسأجعل كلامي على عدة محاور، فاعذروني على الإطالة .. والتكرار أحيانا أبدؤ كلامي -بعد الاستعانة بالله- بالتنبيه إلى أنني كنت أستخدم أوفيس 2010 ، والآن أصبحت أستخدم 2019، وإلى الآن مع كل التجارب لم يخرج البرنامج معي .. والحمد لله والمحور الأول الذي أريد أن أتكلم عنه هو (Me.nass.Visible = False) فكما ذكرت سابقاً، فإن الكود الذي تفضل به الأخ (husamwahab) أسرع في الملفات الكبيرة، في النموذجين: المفرد والمستمر، وقد تمكنت أن أجعله يعمل في النموذج المفرد بشكل جيد. لكن بعد التدقيق في الكود لاحظت أن النص لا يظهر بشكل كامل في النموذج، بل بعضه، وذلك بسبب: ولما جعلت غيرت الإعدادات ليظهر كل النص، أصبح أبطأ، لكنه لا زال الأفضل أداءً وهنا خطرت لي فكرة .. أن أجعل حقل النص مخفياً في بداية الكود، فوضعت في بداية الكود Me.nass.Visible = False وفي نهايته Me.nass.Visible = True وجربته لإضافة السجلات في نموذج مفرد -حيث يظهر البطء أكثر- فكانت النتيجة جيدة جدا حتى في الملف الكبييير، وجربت هذه الطريقة (جعل حقل النص مخفيا في بداية الكود) مع كود الأخ kanory ، ولاحظت أن الأداء قد تحسن، وإن كان الكود السابق أسرع. وهذا يؤكد أن مشكلة البطء هي في التنقل بين هذه السجلات ذات النصوص الكبيرة، ولا بد أن يقوم الكود بالتنقل بين السجلات عندما يعيد الترتيب لكي يأخذ السجل الجديد موقعه بعد السجل الذي أضيف بعده، فلما أصبح النص مخفيا أصبح التتقل سريعا، وجربت أن أجعل النص غير ممكن لكن النتيجة لم تكن جيدة بالشكل الذي حصل عندما جعلته مخفيا هذه ملاحظتي البسيطة أضعها بين يدي الخبراء للنظر فيها والبناء عليها فقد تكون هي المفتاح أو تكون مفتاحا لحل آخر أفضل، فإذا كان جعل النص مخفيا جعل الأداء أحسن، فهل يمكن أنه إذا كان الكود يعمل في الخلفية بعد فك ارتباط النموذج عن الجدول يكون الأداء أفضل .. مجرد خواطر 🙂 النموذج المفرد والنموذج المستمر الإخوة الكرام .. طلبي يتضمن أمرين: الإضافة والنقل، والإضافة أقوم بها بشكل أكثر من النقل. وأقصد بالنموذج المفرد أي النموذج الرئيسي للبرنامج حيث خدمات البحث والاستعراض والربط مع الجداول الأخرى. وطبعا من أهم الخدمات المطلوبة فيه: (إضافة حديث بعد هذا الحديث) وقد كنت ذكرت في مشاركة سابقة لي أنه لا حاجة لإدارج خدمة نقل السجلات في هذا النموذج، لأنه لا يمكن تحديد أكثر من سجل وأنت في نموذج مفرد .. لكن معلش بعد النظر غيرت رأيي .. 🙃 والمطلوب إن أمكن: إضافة هذه الخدمة بشكل محدود وهو النقل لخطوة واحدة، أي: نقل هذا الحديث الذي أنا في صفحته، نقله خطوة واحدة: (قبل أو بعد) الموضع الذي هو فيه، ففي هذه الحالة لا حاجة لتحديد السجلات .. أما عند الرغبة بنقل الحديث لمكان آخر يتم تحديده، أو عند الرغبة في نقل أكثر من حديث فعندها لابد من النموذج المستمر لتحديد السجلات وهذا لا يعني أن النموذج المستمر لا يحتوي على خدمة إضافة السجلات، بل هي مطلوبة فيه أيضاً، فقد يكون العمل فيه أسهل في بعض الأحيان حسب ظروف العمل وطبيعة وعدد الأحاديث المراد إضافتها الحاصل: خدمة الإضافة مطلوبة في النموذج المفرد والمستمر، وكذا النقل، لكن خدمة النقل في النموذج المفرد مختلفة عنها في المستمر إعادة ترقيم (HNO) إن استخدام الترقيم العشري ليس مطلوبا لذاته، بل فقط لعملية الإضافة والنقل، وبعد أن يتم إضافة حديث في مكانه المطلوب، أو نقل أحاديث لمكانها الجديد المطلوب فلا حاجة لأن يبقى الترقيم العشري فيها، أعني الأرقام بعد الفاصلة العشرية 56.02 / 56.3 فالمطلوب وجود زر لإعادة ترقيم (HNO) فتأخذ كل الأحاديث ترقيما متسلسلا بالأعداد الصحيحة بدون كسور وفي الملف المرفق محاولة مني لهذا الإجراء (سرقتها 🙄) من مشاركة الأخ الكريم (محمد أبو عبدالله) والأمر متروك لأهل الخبرة لاختيار الكود والطريقة الأنسب والأسرع .. ولا بأس إن كان يتطلب إغلاق جميع النماذج، كما يحدث عند ضغط وإصلاح قاعدة البيانات، أو أن يكون على شكل استعلام خارجي .. لأنني لن أستخدم هذا الكود بعد كل عملية إضافة أو نقل، إنما في نهاية اليوم وقبل النوم .. 😴 نقل السجلات في النموذج المستمر كود النقل الذي تفضل به الأخ (husamwahab) عملي، وطريقة تحديد السجلات فيه مريحة، وتسمح بنقل أحاديث غير متتالية .. فجزاك الله خيراً أخي الكريم لكني كمستخدم وبعد التجرية ظهرت لي بعض الأمور أرجو أن تؤخذ بالاعتبار .. هي خطوات وإجراءات يبدو أنها تزيد العملية تعقيداً لكني أرى أنها ضرورية لتقليل احتمالية الخطأ في تحديد السجلات .. وقد حاولت قدر استطاعتي أن أعمل بعض هذه الإجراءات، ليس بقصد أن تكون معتمدة .. بل حتى يتضح مقصدي ومطلبي .. فالكلام وحده لا يكفي .. لذلك فإن النظر في الملف المرفق لعله سيوضح المطلوب بشكل أو ضح وتصوري لهذه الإجراءات يقتضي وجود ثلاثة أزرار لعملية نقل السجلات، وهي في الملف المرفق: الأول (نقل سجلات)، (نقل بعد هذا) (تحديد رقمي) ولا يتفعلان إلا بعد الكبس على الأول * وأيضاً مربع التحديد لا يكون ظاهراً إلا بعد الكبس على زر النقل. * للاحتياط لابد من إلغاء الإشارات في مربع التحديد إن كانت موجودة بالخطأ، وقد نجحت في فعل ذلك من خلال الكود في الزر الأول، ثم عدلت عن ذلك إى حذفها باستعلام يتم تشغيله عند فتح النموذج (حدث عند التحميل) وللخبراء القرار في الإجراء الأفضل * الزر الأول (نقل سجلات) مهمته: - إظهار مربع التحديد - إخراج رسالة طلب تحديد السجلات - تفعيل الزرين الآخرين - إلغاء تفعيل الأزرار الأخرى لأنه لا يسمح بإجراء أي شيء حتى تتم عملية النقل أو تلغى * عند تحديد أي حديث يتم تمييزه بلون مختلف .. وهذه الإجراء وما قبله استطعت القيام به وأنتظر تقييم الخبراء .. * الزر الثاني (نقل بعد هذا) ويستخدم بعد تحديد الأحاديث المطلوب نقلها، ومهمته استدعاء كود النقل لنقل الأحاديث التي تم تحديدها إلى ما بعد هذا الحديث الذي تم الكبس على الزر فيه .. ولكن قبل ذلك لابد من: 1- إلغاء الإشارة من مربع التحديد إن كبستُ عليها بالخطأ، حتى لا تحدث إشكالية طلب نقل الحديث بعد نفسه 2- تمييز هذا الحديث الذي سيكون النقل بعده بلون خاص (سواء الخط أو الخلفيه) .. وهذا الإجراء لم أستطع القيام به 😒 حتى باستخدام التنسيق الشرطي وإنشاء حقل خاص في الجدول لهذا الغرض .. مع أنني أفضل تجنب زيادة الحقول في الجدول الرئيسي 3- إخراج رسالة تأكيد: أنت على وشك نقل ( عدد الأحاديث التي تم تحديدها) حديث إلى ما بعد هذا الحديث (رقم هذا الحديث) .. هل تريد الاستمرار وعند الموافقة يتم استدعاء كود النقل لتنفيذ العملية 4- وعند عدم الموافقة يتم حذف جميع الإشارات من مربع التحديد وإرجاعه للوضع المخفي، ويتم إعادة جميع الأزرار إلى وضعها التي كانت عليه قبل بدء عملية النقل (من حيث التفعيل وعدمه) .. وهذه الإجراءات استطعت القيام ببعضها في الملف المرفق .. * تحديد سجلات متتالية باستخدام (SHIFT) .. في بعض الأحيان أحتاج لنقل عدد كبير من الأحاديث المتتالية، وذلك مثلا عند تغيير ترتيب موضوعات الحديث أو نقل أحاديث مسند كامل لمكان آخر، فقد يكون تحديد هذه الأحاديث بالفأرة طويلاً بعض الشيء، فإن أمكن استخدام مفتاح الشفت لتحديد هذه السجلات فلا حاجة عندها لوجود الزر الثالث: * الزر الثالث (تحديد رقمي) .. بعد الكبس عليه تخرج رسالة للتحديد بالأرقام: انقل من (..) إلى (..) ، فيقوم هو بتحديدها تلقائيا بدل أن أحددها بالفأرة .. * كود النقل .. هو نفسه الكود الذي تفضل به الأخ (husamwahab) ، إنما أضفت عليه: - إخفاء حقل النص لزيادة السرعة - إعادة جميع الأزرار إلى وضعها التي كانت عليه قبل بدء عملية النقل (من حيث التفعيل وعدمه) هذا تصوري لإجراءات عملية النقل .. وهي تصوراتي كمستخدم .. وبانتظار رأي أهل الخبرة وتصوراتهم كمبرمجين. والملف المرفق هنا فيه نموذج وضعت فيه بعض ما توصلت إليه .. والباقي على أهل الخبرة .. لكن لم أضع فيه الجدول الكبيييير، إنما وضعت فيه جدولا صغيراً بنفس الاسم، فمن كان قد حمل الجدول الكبيييير من الرابط في المشاركة السابقة فيمكنه استبداله بالجدول الصغير الموجود في الملف المرفق .. وهذا رابط فيه الملف مع الجدول الكبيييير لمن شاء سجلات وفي آخر هذه المشاركة أعتذر عن الإطالة .. ولكن أهمية الموضوع عندي وكونه ليس سهلا .. وتوفيرا للوقت على الإخوة الكرام كان لابد من التفصيل .. والله الموفق سجلات مختصر.rar
-
الأخ الكريم جعفر .. تم المطلوب بحمد الله ، فجزاك الله خيراً وأشكرك خاصة على التوضيحات والتنبيهات العامة التي تتفضل بها .. فهي مفيدة لي وأنا في هذه المرحلة: المرحلة الانتقالية من وورد إلى أكسس وكل الشكر للإخوة الذي ساهموا معنا في هذا الموضع .. وأنا بصراحة لم أكن أظن أن هذا الموضوع سيأخذ كل هذه المحاولات .. كنت أظنه أسهل من ذلك وأنه إنما كان صعباً علي لكوني قليل الخبرة
-
بصراحة أخي الكريم .. وأنا أيضا مش عارف إيش دخل حقل النص في هالموضوع 🙃.. وتفسيري البسيط إنو المؤشر بيروح تلقائيا لحقل النص بعد الانتقال .. ويبدو إنو كبسة الإنتر لسه مؤثرة عليه فبيعمل سطر جديد .. مع إني حاولت إني أكبس على الإنتر بنعومة شديدة حتى لا يستمر تأثيره لما بعد الانتقال 🙂 .. وهذه الصورة أرجو إنها ستوضح ما يحصل ولاحظ أخي الكريم إنو الرقم لسه موجود في التكست بوكس .. فأنا مارست هوايتي في التعديل على الأكواد وأضفت سطرين، سطر لمسح التكست بوكس بعد الانتقال، والسطر اللي عالجت فيه موضوع السطر الجديد، بحيث ما يكون المؤشر بعد الانتقال في حقل النص .. ولكن هل هذا هو الحل الصحيح If DCount("*", "qry_tbl2", "HNO =" & Me.tn) = 0 Then MsgBox "الرقم غير موجود" Me.tn = "" Else Me.Recordset.FindFirst "hno=" & Me.tn Me.tn.SetFocus Me.tn = "" End If
-
الأخ الكريم جعفر .. شكرا على توضيحاتك وتنبيهاتك لكن لا تزال مشكلة إضافة سطر جديد موجودة، هل هذا يعني أن الحل الذي خطر في بالي وهو جعل المؤشر يقف بعد الانتقال عند التكست بوكس وليس حقل النص هو الحل الأمثل لهذه المشكلة وليس له أي سلبيات ثم وللفائدة .. فقد لاحظت أنه يمكن الانتقال باستخدام الفارة عند الكبس على زر المنظار مع أنك حذفت الكود من هذا الزر .. فعلى أي أساس انتقل
-
شكرا على النصيحة أخي الكريم .. مع أنني أعمل بها قدر استطاعتي .. قبل كتابة هذا الموضوع ليلة كاملة وأنا أبحث عن الكود المناسب وأجرب هذا وذاك وعشرات التجارب الفاشلة بسبب فاصلة أو نقطة .. لأن البرمجة ليس مجالي ولا يمكنني أن أترك تخصصي وأخوض في بحارها .. وبعد ساعات من التجارب خرجت بالأكواد الموجودة في الملف .. وهي أكواد أعتقد أن شخصا لديه بعض الخبرة بالبرمجة يكتب أفضل منها في دقائق .. ولكن أحب أن أجرب بنفسي قبل السؤال حتى مشكلة إضافة سطر جديد عند الانتقال بالانتر وجدت لها حلا عبر استخدام Me.tn.SetFocus ولكني أشعر أن هذا حل بدائي .. وأرغب بحل احترافي من أهل الخبرة وبخصوص مسح التكست بوكس .. الكود يمسحه بعد الانتقال فقط وليس بعد كتابة رقم خاطئ .. لكن كلامك جعلني أنظر مرة أخرى للكود لأكتشف أني لم أكن دقيق النظر بما يكفي .. فعدلت الكود إلى If DCount("ID", "tbl2", "HNO =" & tn) = 0 Then MsgBox "لم يتم العثور على السجل المطلوب", vbCritical, "عملية خاطئة" tn = Null Exit Sub End If فتم المطلوب في هذه الجزئية والحمد لله أما بخصوص إشكاليات الانتقال عبر الإنتر .. فأنا أعدت تحميل الملف وكررت التجربة .. والنتيجة نفسها .. وتفسيري الوحيد لما يحدث -و لست من أهل الخبرة- أن الكود ينفذ الأمر بالنظر للتكست بوكس قبل كتابة الرقم .. يعني إذا كان فارغا وكتبت فيه (5) وكبست إنتر تخرج لي رسالة (يرجى كتابة رقم) ثم إذا كتبت (4) وكبست إنتر ينتقل إلى الرقم الذي كان مكتوبا في السابق (5) هذا ما يحدث معي .. وإذا كان لا يحدث معك فهو شيء محير فعلاً
-
أخي الكريم essam .. بالنسبة للانتقال بالإنتر عادت المشكلة الأولى .. يضيف سطرا جديدا في بداية حقل النص وعند كتابة الرقم الخطأ يعود للسجل الأول .. ولعله من الأفضل أن يبقى حيث هو
-
أخي الكريم أبو مهاب .. شكرا على مشاركتك .. ولكن هناك ملاحظتان أولا: مسألة فنية: إلغاء الرقم في التكست بوكس بعد رسائل الخطأ أيضا ثانيا: توجد إشكاليات في الانتقال بكبسة إنتر - إذا استخدمت الانتقال بالإنتر بعد فتح الملف مباشرة، أو بعد الانتقال بالفارة تخرج رسالة: يرجى كتابة رقم - إذا كتبت رقما غير موجود واستخدمت الانتر تخرج رسالة (يرجى كتابة رقم)، ثم إذا أدخلت الرقم الصحيح تخرج رسالة (لم يتم العثور على السجل)، وإذا كبست إنتر للمرة الثانية دون أن أغير الرقم يتم الانتقال للمطلوب، وإذا غيرت الرقم ينتقل للرقم الذي كان موجودا قبل التغيير !
-
الأخ الكريم essam rabea شكرا على مشاركتك .. تم حل المشاكل المذكورة .. لكن الكود ينتقل إلى الرقم عبر الفلترة، وإذا ألغيت الفلترة يعود للسجل الأول والمطلوب أكرمك الله الانتقال للسجل المطلوب وهو بين السجلات بدون فلترة بحيث أستطيع التنقل قبله وبعده
-
😐 😐
-
الإخوة الكرام .. في الملف المرفق محاولة مني لعمل كود للانتقال إلى سجل معين بحسب رقم (Hno) قمت به حسب فهمي لما اطلعت عليه من مواضيع حسب استطاعتي والمطلوب بعض التعديلات: 1- أن يقوم الكود بمسح الرقم بمجرد الانتقال من (textbox) وهو في المثال المرفق (tn) 2- إن لم يكن الرقم موجودا تخرج رسالة بذلك 3- كما وحاولت أيضاً أن أجعل مفتاح (Enter) يقوم أيضاً بعملية الانتقال، لكن المشكلة أنه بعد الانتقال يضيف سطراً جديداً في بداية الحقل !! 4- بحسب بحثي استخدمت كودين لعملية الانتقال DoCmd.GoToRecord , , acGoTo, HNO(tn) Me.Recordset.FindFirst "hno=" & Me.tn فأيهما أسرع لاسيما في الملفات الكبييييرة انتقال.accdb
-
كلامك ريَّحني وبطلت زعلان .. خليها عالمبرمجين - سهل ولا مش سهل يدبروا حالهم 😁- وخليني في شغلي .. طبعا من ضمن شغلي إني أنظف ملفات الوورد قدر الإمكان وكأنه ما في إشي اسمه: أكسس
-
تمام .. ولكن السؤال هنا: معرفة أنه هذا العمود (في وورد أو الحقل في أكسس) لا يحتوي إلا على نص مختصر (250 بايت مثلا) وما سوى ذلك يحدد لي أين الخلل أو أن هذا العمود لا يحتوي إلا على هذه الرموز المعينة، وما سوى ذلك يحدد لي أين الخلل أو أن هذا العمود لا يحتوي إلا على أرقام ، وما سوى ذلك يحدد لي أين الخلل أو أن هذا العمود لا يحتوي على مسافات أو فقرات، وما سوى ذلك يحدد لي أين الخلل هذا الأمور وما على شاكلتها أنا بمعلوماتي البسيطة أظن أنها في أكسس أسهل، فيكفي أنني سأتعامل حينها مع جدول واحد وليس (50) جدول أو أكثر .. فهل الأمر كما ظننت
-
أخي الكريم جعفر .. تم المطلوب على أحسن وجه وبحمد الله، سواء في الاستيراد أو في التصحيح، مع سلامة النص في الحالتين .. فجزاك الله خيراً وأحسن إليك إلا أن قولك زَعَّلني شوي 😟 ولخبط حساباتي 🙃 .. كان أملي أن يكون هذا الأمر في أكسس سهلاً، لأني أريد أن أتخلص من الخطوات الطوييييييلة والمملة التي كنت أتبعها في وورد لمعرفة أين الخطأ على كل حال .. موضوعنا هنا: (استيراد الجدول من وورد لأكسس كما هو)، قد وفقك الله لإتمامه على أحسن وجه، فبارك الله فيك، والحمد لله أولاً وآخراً أما موضوع معالجة وتصحيح البيانات وتغيير خصائص الحقول فسأطرحه في موضوع مستقل .. وساعتها بنشوف أحسن طريقة نتعامل فيها مع شرطي المرور (Access) لأنه على الأغالب أكثر مرونة في هالموضوع من شرطي مرور (Word) 😄 ولكن أولاً -وبعد الانتهاء من المهم- علي ترتيب أوراقي لمتابعة الموضوع الأهم: إضافة ونقل السجلات .. والله ولي التوفيق
-
أخي الكريم جعفر .. رسالة (3163) تظهر إذا لم يكن عمود النص الطويل هو آخر عمود ولو كان الجدول 4 أعمدة، أو أني بالخطأ في أحد الصفوف وضعت النص في غير العمود المخصص له، وهذا لم يحدث معي إلا نادرا لكنه حدث على أي حال المقصود أخي الكريم .. أن فكرة جعل كل الحقول (مذكرة) -بشكل مؤقت عند الاستيراد فقط- هي لتلافي مثل هذه الأخطاء .. ولكي لا أضطر إلى تغيير الخصائص في الجدول الافتراضي (tbl_From_Word) حسب الحاجة لأنه كما ذكرت سابقا: تحويل الجداول من وورد إلى أكسس هو عملية متكررة أقوم بها لأكثر من غرض وليس فقط من أجل البرنامج الرئيسي، وفي بعض الأحيان يكون الجدول المراد تحويله يحتوي على أكثر من عمود فيه نص طويل ولزيادة البيان أقول: أني سوف أخصص قاعدة بيانات خاصة للتحويل من وورد لأكسس، ولن أدرجها في البرنامج الرئيسي، وعند استيراد مجموعة الجداول المطلوبة سوف أصدرها لقاعدة البيانات المطلوبة -سواء الرئيسية أو غيرها حسب طبيعة العمل- وهناك سوف أجري عليها التعديلات الخاصة بها ولن تبقى الحقول كلها (مذكرة) بل سوف أحولها للمطلوب سواء (رقم) أو (نص) .. وهذا كله بعد التأكد من أن حقل (الرقم) لا يحتوي إلا على الأرقام فقط، وحقل (النص) لا يحتوي على نص طويل، وفي حالة وجود شيء من ذلك فأرجو أن تكون هناك طريقة في أكسس يمكنني بها أن أعرف أرقام هذه السجلات وأعالج الأمر قبل التحويل .. لأن الخطأ في إدخال البيانات في الوورد وارد، ولا بد من تصحيحه وأظن -ولست من أهل الخبرة- أن الجدول بهذه الإجراءات سيأخذ وضعه المناسب ولن يكون سببا في ثقل البرنامج .. وأرجو أن يكون ظني في محله
-
الأخ الكريك جعفر .. هذه نتيجة تجربة الكود الجديد كما طلبت .. الكود الجديد يزيد سطرا فارغا في آخر كل حقل، ما سوى ذلك فالنتيجة تمام والنص سليم ولا توجد أسطر فارغة أو مسافات في أوائل وأواخر الأسطر حتى لو كانت موجودة في ملف الوورد بالخطأ ويمكنك أن ترى الفرق بين الكودين في الملف المرفق، الملف (04) تم استيراده بالكود القديم، أما (05) فبالكود الجديد ثم وبالعودة للملاحظة المتقدمة بخصوص رسالة (3163)، فظهرت معي خلال التجارب المتعددة رسالة أخرى (3421): خطأ في تحويل نوع البيانات وكان التفكير سابقا أن تتكرم بحل لهذه الرسائل بحيث يتوقف الكود عن العمل مهما كبست عليه ولا تكون هناك حاجة لإجبار البرنامج على التوقف لكن ظهر لي أمر آخر أحب أن آخذ رأيك فيه، وهو أن نجعل خصائص كل الحقول في الجدول الرئيسي (tbl_From_Word) نص طويل (مذكرة) حتى لا تخرج هذه الرسائل، وحتى يتم تحويل الجدول بكل بياناته، ثم بعد ذلك يمكن معالجة الجداول وتغيير خصائصها حسب المطلوب في أكسس، لا سيما وأن استخدامي لهذا الكود لن يكون فقط للملف الرئيسي بخصائصة الموحدة، بل لأغراض متعددة ومتجددة يقتضي كل منها أن تكون بعض الجداول بخصائص مختلفة عن الأخرى لكن قبل ذلك أحب أن أتأكد من أمر ما: فبعض الحقول ينبغي ألا تحتوي إلا على أرقام، ووجود غيرها خطأ ينبغي معالجته وبعض الحقول أرقام وأقواس ووجود أحرف عادية غير مرغوب به وحقول لا ينبغي أن تكون فيها النصوص طويلة فهل توجد آليات في أكسس لتمييز هذه الأمور قبل تغيير خصائص الحقول يعني أن أتأكد أولا قبل تحويل الحقل من (مذكرة) إلى (رقم) أن هذا الحقل لايحتوي إلا على أرقام، والحقول التي تحتوي على غيرها يعطيني أرقامها لمعالجتها وكذلك الحال إذا كانت بعض الحقول تحتوي على نص طويل، قبل تحويله من (مذكرة) إلى (نص) أنا عادة أقوم ببعض هذه الأمور في الوورد عبر خطوات طويلة، فإن كان هذا الأمر ممكنا في أكسس فلعله من الأفضل أن تعالج هذه الأمور فيه ونجعل خصائص كل حقول الجدول (tbl_From_Word) على (مذكرة)، ثم سأطرح موضوع هذه الآليات المطلوبة في موضوع مستقل فما هو رأيك أخي الكريم ؟ 1322.6.تحويل.accdb
-
أخي الكريم (Hawiii) .. لا يزال الكود لا يحذف المسافة الواحدة في أول وآخر السطر. لكن توجد إشكالية أخرى في هذا الكود .. بسبب وجود القوسين {} فيه وهي أقواس أستخدمها لترقيم خاص، فأصبح يحذف المتكرر منها، ويضيف سطرا بعد كل واحد، يعني: تصبح هكذا ولاحظ المسافة باللون الأصفر ثم وبخصوص كود الأخ جعفر الذي ظهر لي أنه يؤدي المطلوب ولا يؤثر على النص، ليس هذا بالملاحظة بل بالمقارنة بعد تصدير الملفات إلى وورد ومقارنتها آليا مع الأصول، فإذا لاحظتَ خلاف ذلك فالرجاء التحديد بشكل أوضح إن تكرمت هذا وأعتقد أن تعدد الأفكار والحلول ظاهرة صحية، ولا مانع من استخدام عدة أكواد، طبعا في قواعد بيانات متعددة، هذا هنا وهذا هناك، وليس في مكان واحد 🙂
-
لأني كنت منشغلا بالتجارب رغبة في التعلم حتى أحل مشاكلي بنفسي في المستقبل أخي الكريم (Hawiii) لو جربتَ الكود للاحظتَ أنه لا يحذف المسافات إلا إذا كانت أكثر من اثنتين، أما المسافة الواحدة في أول وآخر السطر فتبقى كما هي وأنا أحاول أن أتعلم من كل مشاركة من أي أخ من أهل الخبرة، حتى لو لم تكن مشاركته فيها الحل الجذري للمشكلة .. فأنا بحمد الله أجيد التعلم بالمقارنة والقياس .. وكل محاولة تضيف جديدا في رصيد معرفتي .. وبالرغم من أن كود الأخ جعفر قد حل المشكلة .. فأنا تعلمت من الكود الذي تفضلت به، وكذا من مشاركات الإخوة الذين أتحفونا بمشاركاتهم .. تعلمت أمورا ربما تنفعني في حل مشاكل أخرى وقد أضفت على الكود الذي تفضلت به جملتين حصل بهما المقصود .. حذف المسافة في أول وآخر السطر DoCmd.RunSQL "UPDATE " & Table & " SET [" & Table & "].[" & Field & "] = Replace([" & Field & "],'" & vbNewLine & "','');" DoCmd.RunSQL "UPDATE " & Table & " SET [" & Table & "].[" & Field & "] = Replace([" & Field & "],' ',' ');" DoCmd.RunSQL "UPDATE " & Table & " SET [" & Table & "].[" & Field & "] = Replace([" & Field & "],' ',' ');" DoCmd.RunSQL "UPDATE " & Table & " SET [" & Table & "].[" & Field & "] = Replace([" & Field & "],' '+Chr(13),Chr(13));" DoCmd.RunSQL "UPDATE " & Table & " SET [" & Table & "].[" & Field & "] = Replace([" & Field & "],Chr(13)+' ',Chr(13));" DoCmd.RunSQL "UPDATE " & Table & " SET [" & Table & "].[" & Field & "] = Trim([" & Field & "]);" بقي أن أتعلم كيف أحوله إلى استعلام تحديث، حتى تخرج لي رسالة واحدة فقط، بدل أن تخرج لي ست رسائل بعدد أسطر الكود، ولأنه ظهر لي أن استخدام الاستعلام وأنا خارج النموذج أسلم، خشية أن أستعمل الكود وأنا في سجل قد قمت بتحديثه ولم أقم بحفظه فتخرج لي رسالة: لقد قام مستخدم آخر بتغيير هذا السجل .. ثم سوف أحتفظ بهذا الكود فقد أستخدمه في قاعدة بيانات أخرى غير قاعدة البيانات الرئيسية التي سوف أستخدم فيها الكود الذي تفضل به الأخ جعفر .. وإن لم أستخدمه فيكفي أنه أضاف لي جديدا في رصيد معرفتي
-
الأخ الكريم جعفر .. تم الأمر بحمد الله .. حذفت جميع الأسطر الفارغة حيثما كانت وبغض النظر عن المسافات الفارغة فيها أو قبلها أو بعدها، وحذفت جميع المسافات في أوائل وأواخر الأسطر، دون المساس بالنص، وذلك بعد التجربة والمقارنة فجزاك الله خيراً على صبرك علي .. وبارك الله فيك
-
الأخ الكريم Hawiii .. شكرا لك أن راعيت كوني مبتدئا وطبقت الكود على الملف لكن لما حاولت أن أحوله إلى استعلام كي أتخلص من رسائل التأكيد (أنت على وشك ..) لم أنجح مع أني استخدمت هذه الصيغة UPDATE مسند SET مسند.nass = CleanTable([nass]); وكذلك الأمر حين حولت الوحدة النمطية إلى Function CleanTable(..) . . End Function فأين الخطأ ثم بالنسبة للكود الذي تفضلت به فهو فعال في حذف الأسطر الفارغة إذ يحذف الأسطر الفارغة أينما كانت حتى لو كان فيها مسافة أو مسافات فارغة لكن بالنسبة لحذف المسافات في أول وآخر السطر فهو يحول المسافتين إلى واحدة ولا يحذفها يبدو فعلا أن موضوع حذف المسافات أكثر تعقيدا من حذف الأسطر 🤔
-
الأخ الكريم جعفر .. بعد التجربة الأولية كانت النتيجة ممتازة .. ولكن بعد إجراء التجارب على ملفات أخرى ظهر لي أن الكود يحذف آخر حرف في آخر سطر في الحقل إذا كانت قبله مسافة أو مسافات يعني ( 1/ 21 ) فذكره . تصبح هكذا ( 1/ 21 فذكره بينما الكود الأول لم يفعل ذلك .. فإذا كان موضوع حذف المسافات في آخر السطر فيه احتمالية ولو ضعيفة لحذف شيء من النص فالأسلم تركها
-
أعتذر ربما لم أشرح جيدا أو اختلط علي الأمر الكود لا يحذف السطر الفارغ إذا كان فيه مسافة أو مسافات .. لابد أولا من حذف المسافات ثم يحذف السطر الفارغ .. ربما لأنه إذا كان فيه مسافة لا يعتبره فارغا .. بصراحة معه حق في هذا .. فهذا مقتضى الدقة 🙂
-
الأخ الكريم جعفر .. الكود لم يعد يأكل الكلام 🙂 .. لكنه لا يحذف السطر الفارغ إذا كان السطر الذي بعده في أوله مسافة .. يحذف أولا المسافة في أول السطر ثم بعد تشغيله مرة ثانية يحذف السطر الفارغ بينما الكود الأول الذي تفضلت به Function Remove_Extras(myValue As String) As String Dim x() As String Dim j As Integer For j = 1 To 999 'remove all the extra characters at the end of the line If Right(myValue, 1) = Chr(7) Or _ Right(myValue, 1) = vbCr Or _ Right(myValue, 1) = vbLf Or _ Right(myValue, 1) = vbCrLf Then myValue = Mid(myValue, 1, Len(myValue) - 1) Else Exit For End If Next j 'now remove the empty lines myValue = Replace(myValue, Chr(7), vbCrLf) myValue = Replace(myValue, vbCr, vbCrLf) myValue = Replace(myValue, vbLf, vbCrLf) x = Split(myValue, vbCrLf) For j = 0 To UBound(x) 'remove the extra spaces on: x(j) = LTrim(x(j)) 'the Left x(j) = RTrim(x(j)) 'the Right If Len(x(j)) < 2 Then Else Remove_Extras = Remove_Extras & x(j) End If Next j Remove_Extras = Replace(Remove_Extras, Chr(11), vbCrLf) 'remove all VT characters End Function كان يحذف الأسطر الفارغة بغض النظر عن المسافات في اوائل الأسطر وشكرا للأخ (هاوي) على مشاركته .. لكن لم أعرف كيف أستدعي الكود .. ولما جربته بشكل منفصل وكتبت أسم الجدول والحقل لم يحذف إلا المسافات التي في آخر الحقل فقط، أما إلمسافات التي في أواخر الأسطر الأخرى فبقيت كما هي
-
الأخ الكريم جعفر .. صحيح أن شرطي المرور لم يعترض هذه المرة على الكود .. لكن يظهر أن الكود نفسه جائع بعض الشيء .. كل مرة أشغله فيها يأكل حرفا من آخر الحقل 😂 وشكراً للأخ biskra على اهتمامه بالموضوع .. الموضوع الذي يظهر لي أنه أكثر تعقيداً مما ظننت .. 🤔