mohabassam قام بنشر فبراير 13, 2022 قام بنشر فبراير 13, 2022 السلام عليكم قمت بترحيل قاعدة بيانات اكسس الى SQL Server الحقول التي من نوع نص نوعها الجديد في SQL Server هو nvarchar200 جميع الحقول التي فيها نصوص عربية تظهر بشكل طبيعي في واجهة (نماذج) اكسس مرتبطة مع قاعدة البيانات SQL Server المشكلة: اذا حاولت اعمل فلتر في نموذج الاكسس لنص عربي لن يعمل لو كان الفلتر على رقم أو نص انجليزي يعمل طبيعي. نفس الشيء لجملة Select داخل كود VBA اذا كنت احاول استرجع مجموعة سجلات و الشرط كان فيه نص عربي فلن يرجع شيء حاولت تغيير ال Collation في ال SQL Server الى Arabic بدون فائدة أرجو المساعدة لقد وصلت لطريق مسدود و بحثت كثيرا في الانترنت بدون جدوى
jjafferr قام بنشر فبراير 13, 2022 قام بنشر فبراير 13, 2022 وعليكم السلام 🙂 اهلا بك اخي مهاب في اول مشاركة لك في المنتدى 🙂 للإستفادة القصوى من المنتدى ، رجاء قوانين المنتدى: اضغط هنـــــــــامن فضلك لقراءة القواعد كاملة انا لا علم لي بـ SQL Server ، ولكني سأنظر للموضوع من ناحية الاكسس 🙂 59 دقائق مضت, mohabassam said: اذا حاولت اعمل فلتر في نموذج الاكسس لنص عربي لن يعمل 1. رجاء تشرح كيف تقوم بهذا العمل ، واذا الشرح يكون بالصور كذلك ، يكون احسن 🙂 2. مؤقتا ، رجاء اعمل زر في النموذج الذي تعمل له التصفية ، وعلى حدث نقر الزر ، اكتب هذه الاسطر (نريد نشوف اللي الكمبيوتر يشوفه) : debug.print me.[اسم الحقل العربي] msgbox me.[اسم الحقل العربي] debug.print me.filter msgbox me.filter 3. اعمل فلتر لحقل نص باللغة الانجليزية ثم انقر الزر #2 ، ثم اعمل فلتر لحقل اللغة العربية وانقر الزر #2 ، 4. اعمل صورة من الشاشة للرسائل ، ثم ادخل في الكود واعمل صورة من الشاشة للبيانات الموجودة في اسفل نافذة الكود ، في نافذة immediate ، ويمكنك فتح النافذة هكذا بالضغط على الزرين Ctrl+G جعفر
mohabassam قام بنشر فبراير 14, 2022 الكاتب قام بنشر فبراير 14, 2022 (معدل) الأخوة جعفر و د. كاف يار شكرا على الرد السريع و تاليا توضيح أكثر للمشكلة: الصورة التالية تمثل احد الجداول لاحظ حقل contractorCode يحتوي على سجلات بعضها بالعربي و بعضها بالانجليزي: لو أردت عمل فلتر مثل اللذي في الصورة على حرفين "AL" سيكون الناتج كالتالي: لكن لو عملت الفلتر على كلمة "مقاول" أو أي جزء منها لا تظهر نتائجكما في الصورة التالية: و تستمر المشكلة داخل الكود "النص البرمجي" في الكود التالي: Private Sub PlanSearchBox_AfterUpdate() Dim str_txt As String str_txt = PlanSearchBox.Value [PlansListSubForm].Form.Filter = "PlanName Like '*" & str_txt & "*'" [PlansListSubForm].Form.FilterOn = True End Sub اذا أدخلت في صندوق النص PlanSearchBox رقم أو نص إنجليزي يعمل بشكل طبيعي لكن اذا أدخلت نص عربي لا تظهر نتائج و كأنها لم يجد الكلمة التي يبحث عنها. أرجو أن يكون التوضيح كافي و بانتظار مساعدتكم و الأعظاء الكرام تم تعديل فبراير 14, 2022 بواسطه jjafferr عند وضع كود في المشاركة، وحتى يظهر تنسيق الكود بالطريقة الصحيحة، يرجى: إستخدام زر القائمة <> ووضع الكود في النافذة المنبثقة
jjafferr قام بنشر فبراير 14, 2022 قام بنشر فبراير 14, 2022 23 ساعات مضت, jjafferr said: 2. مؤقتا ، رجاء اعمل زر في النموذج الذي تعمل له التصفية ، وعلى حدث نقر الزر ، اكتب هذه الاسطر (نريد نشوف اللي الكمبيوتر يشوفه) : debug.print me.[اسم الحقل العربي] msgbox me.[اسم الحقل العربي] debug.print me.filter msgbox me.filter 3. اعمل فلتر لحقل نص باللغة الانجليزية ثم انقر الزر #2 ، ثم اعمل فلتر لحقل اللغة العربية وانقر الزر #2 ، 4. اعمل صورة من الشاشة للرسائل ، ثم ادخل في الكود واعمل صورة من الشاشة للبيانات الموجودة في اسفل نافذة الكود ، في نافذة immediate ، ويمكنك فتح النافذة هكذا بالضغط على الزرين Ctrl+G شكرا على التوضيح ، بس لوسمحت تعمل الخطوات الاخرى كذلك (المذكورة اعلاه). جعفر
د.كاف يار قام بنشر فبراير 14, 2022 قام بنشر فبراير 14, 2022 توجد فروقات في معيار الاستعلام بين الاكسس و قاعدة بيانات SQL تفضل هذا هو المعيار بالشكل الصحيح Private Sub PlanSearchBox_AfterUpdate() Dim str_txt As String str_txt = PlanSearchBox.Value [PlansListSubForm].Form.Filter = "PlanName Like '%" & str_txt & "%'" [PlansListSubForm].Form.FilterOn = True End Sub لكن راح تواجه بطئ بهذي الطريقة
mohabassam قام بنشر فبراير 14, 2022 الكاتب قام بنشر فبراير 14, 2022 أخي جعفر تاليا الكود الذي طلبته: Private Sub Command220_Click() Debug.Print [PlansListSubForm].Form![PlanName] MsgBox [PlansListSubForm].Form![PlanName] Debug.Print [PlansListSubForm].Form.Filter MsgBox [PlansListSubForm].Form.Filter End Sub و تاليا ناتج تنفيذ الكود: طبعا هناك ناتج كون الفلترة على رقم لو كانت الفلترة على كلمة عربية لن تعمل و لن يكون هناك ناتج و ينتج رسالة خطأ د كاف يار جربتها و لم تعمل
محب العقيدة قام بنشر فبراير 14, 2022 قام بنشر فبراير 14, 2022 اخي الافضل خذ نسخة من قاعدة البيانات ونسخة من الاكسيس كعينة وارفقها لان المشكلة مش واضحة ممكن هذا الموضوع يفيدك https://stackoverflow.com/questions/21139258/how-to-select-rows-that-contains-non-english-characters-in-sql-server-2005it-sh
mohabassam قام بنشر فبراير 14, 2022 الكاتب قام بنشر فبراير 14, 2022 (معدل) شكرا لجميع الأخوة و على مشاركاتهم و مساعدتهم و جدت الحل و لله الحمد و شرحه تاليا لتعم الفائدة: عند تحديد نوع الحقل للنصوص العربية يجب أن يكون نوع الحقل nvarchar و هو ما كان فعلا. و قد حددت خاصية ال Collation لتتناسب مع اللغة العربية للجدول و هنا المشكلة يجب تحديد خاصية ال collation لقاعدة البيانات كاملة و ليس فقط للجدول. و ذلك بالنقر على قاعدة البيانات و اختيار Properties ثم Options ثم تغيير collation الى Arabic_CI_AS ثم OK طباع انا استخدم Microsoft SQL Server Management Studio 18 اذا تم قبول التغيير مباشرة ممتاز جدا طبعا لا تنسى أن تتأكد من أنك الشخص الوحيد المتصل بقاعدة البيانات قبل التعديل الأخوة الكرام إذا لم يتغير ال Collation فهناك عدة اسباب مثل وجود حقول تعتمد على المعادلات و غيرها من الأسباب التي قد تقضي وقت طويل في حلها و قد لا تتمكن من حلها. لذلك أنصحك بالتالي و هو ما عملته أنا: قم بإنشاء قاعدة بيانات جديدة SQL Server تأكد و أنت في مرحلة الإنشاء من خاصية Collation = Arabic_CI_AS بعدها قم بنقل الجداول من قاعدة البيانات القديمة الى الجديدة و سيكون بإمكانك عمل استعلامات و الشرط باللغة العربية بدون مشاكل. تحياتي لكم أبو بسام تم تعديل فبراير 14, 2022 بواسطه mohabassam
الردود الموصى بها
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.