اذهب الي المحتوي
أوفيسنا
بحث مخصص من جوجل فى أوفيسنا
Custom Search

الردود الموصى بها

قام بنشر

السلام عليكم

قمت بترحيل قاعدة بيانات اكسس الى SQL Server

الحقول التي من نوع نص نوعها الجديد في SQL Server  هو nvarchar200

جميع الحقول التي فيها نصوص عربية تظهر بشكل طبيعي في واجهة (نماذج) اكسس مرتبطة مع قاعدة البيانات SQL Server

المشكلة:

اذا حاولت اعمل فلتر في نموذج الاكسس لنص عربي لن يعمل لو كان الفلتر على رقم أو نص انجليزي يعمل طبيعي.

نفس الشيء لجملة Select داخل كود VBA اذا كنت احاول استرجع مجموعة سجلات و الشرط كان فيه نص عربي فلن يرجع شيء

حاولت تغيير ال Collation في ال SQL Server الى Arabic بدون فائدة

 

أرجو المساعدة لقد وصلت لطريق مسدود و بحثت كثيرا في الانترنت بدون جدوى

قام بنشر

وعليكم السلام 🙂

 

اهلا بك اخي مهاب في اول مشاركة لك في المنتدى 🙂

للإستفادة القصوى من المنتدى ، رجاء قوانين المنتدى: اضغط هنـــــــــامن فضلك لقراءة القواعد كاملة

 

 

انا لا علم لي بـ 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

 

جعفر

قام بنشر (معدل)

الأخوة جعفر و د. كاف يار
شكرا على الرد السريع و تاليا توضيح أكثر للمشكلة:

الصورة التالية تمثل احد الجداول لاحظ حقل contractorCode يحتوي على سجلات بعضها بالعربي و بعضها بالانجليزي:

image.png.49ecaf9e06c8f765d18874938a8d9757.png

لو أردت عمل فلتر مثل اللذي في الصورة على حرفين "AL" سيكون الناتج كالتالي:

image.png.f6785b272a52d0b7ba8023e66b58b64b.png

لكن لو عملت الفلتر على كلمة "مقاول" أو أي جزء منها لا تظهر نتائجكما في الصورة التالية:

image.png.a42b6a418a5c005c834738815f2ce0c5.png

و تستمر المشكلة داخل الكود "النص البرمجي" في الكود التالي:

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 رقم أو نص إنجليزي يعمل بشكل طبيعي لكن اذا أدخلت نص عربي لا تظهر نتائج و كأنها لم يجد الكلمة التي يبحث عنها.

 

أرجو أن يكون التوضيح كافي و بانتظار مساعدتكم و الأعظاء الكرام

 

 

تم تعديل بواسطه jjafferr
عند وضع كود في المشاركة، وحتى يظهر تنسيق الكود بالطريقة الصحيحة، يرجى: إستخدام زر القائمة <> ووضع الكود في النافذة المنبثقة
قام بنشر
23 ساعات مضت, jjafferr said:

2. مؤقتا ، رجاء اعمل زر في النموذج الذي تعمل له التصفية ، وعلى حدث نقر الزر ، اكتب هذه الاسطر (نريد نشوف اللي الكمبيوتر يشوفه) :

debug.print me.[اسم الحقل العربي]
msgbox me.[اسم الحقل العربي]  

debug.print me.filter
msgbox me.filter

3. اعمل فلتر لحقل نص باللغة الانجليزية ثم انقر الزر #2 ، ثم اعمل فلتر لحقل اللغة العربية وانقر الزر #2 ،

4. اعمل صورة من الشاشة للرسائل ، ثم ادخل في الكود واعمل صورة من الشاشة للبيانات الموجودة في اسفل نافذة الكود ، في نافذة immediate ، ويمكنك فتح النافذة هكذا بالضغط على الزرين Ctrl+G

 

شكرا على التوضيح ، بس لوسمحت تعمل الخطوات الاخرى كذلك (المذكورة اعلاه).

 

جعفر

قام بنشر

توجد فروقات في معيار الاستعلام بين الاكسس و قاعدة بيانات 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

 

لكن راح تواجه بطئ بهذي الطريقة

قام بنشر

أخي جعفر

تاليا الكود الذي طلبته:

Private Sub Command220_Click()
Debug.Print [PlansListSubForm].Form![PlanName]
MsgBox [PlansListSubForm].Form![PlanName]

Debug.Print [PlansListSubForm].Form.Filter
MsgBox [PlansListSubForm].Form.Filter
End Sub

 

و تاليا ناتج تنفيذ الكود:

image.png.d458629dececea1929df12d8dd4863dc.png

image.png.11bf7f2a7a9630618799916ce622570f.png

طبعا هناك ناتج كون الفلترة على رقم

لو كانت الفلترة على كلمة عربية لن تعمل و لن يكون هناك ناتج و ينتج رسالة خطأ

 

image.png

د كاف يار جربتها و لم تعمل

قام بنشر (معدل)

شكرا لجميع الأخوة و على مشاركاتهم و مساعدتهم

و جدت الحل و لله الحمد و شرحه تاليا لتعم الفائدة:

عند تحديد نوع الحقل للنصوص العربية يجب أن يكون نوع الحقل nvarchar و هو ما كان فعلا.
و قد حددت خاصية ال Collation لتتناسب مع اللغة العربية للجدول و هنا المشكلة يجب تحديد خاصية ال collation  لقاعدة البيانات كاملة
و ليس فقط للجدول.

و ذلك بالنقر على قاعدة البيانات و اختيار Properties ثم Options ثم تغيير collation الى Arabic_CI_AS ثم  OK

طباع انا استخدم Microsoft SQL Server Management Studio 18


اذا تم قبول التغيير مباشرة ممتاز جدا طبعا لا تنسى أن تتأكد من أنك الشخص الوحيد المتصل بقاعدة البيانات قبل التعديل

الأخوة الكرام إذا لم يتغير ال Collation فهناك عدة اسباب مثل وجود حقول تعتمد على المعادلات و غيرها من الأسباب التي
قد تقضي وقت طويل في حلها و قد لا تتمكن من حلها. لذلك أنصحك بالتالي و هو ما عملته أنا:
قم بإنشاء قاعدة بيانات جديدة SQL Server
تأكد و أنت في مرحلة الإنشاء من خاصية Collation = Arabic_CI_AS

بعدها قم بنقل الجداول من قاعدة البيانات القديمة الى الجديدة و سيكون بإمكانك عمل استعلامات و الشرط باللغة العربية بدون مشاكل.

 

تحياتي لكم

أبو بسام

 

تم تعديل بواسطه mohabassam

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

زائر
اضف رد علي هذا الموضوع....

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information