تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
مشكلة في اختيار أسماء العناصر العربية في ComboBox في MS Access
#1
مرحباً جميعاً،
لدي قاعدة بيانات تم إنشاؤها في MS Access ومتصلة بجداول في SQL Server. هناك قائمة منسدلة (ComboBox) أستخدمها لاختيار العناصر. تعمل القائمة بشكل جيد عند اختيار أسماء العناصر باللغة الإنجليزية، ولكن عند محاولة اختيار العناصر التي تكون أسماؤها باللغة العربية، تظهر لي الخطأ التالي:
[يرجى إدراج رسالة الخطأ هنا]
بعض الملاحظات الإضافية:
  • نوع الحقل في جدول SQL هو
    nvarchar
  • ، وعند فتح الجدول في SQL Server تظهر أسماء العناصر العربية بشكل صحيح.
  • المثير للاهتمام أنه إذا قمت باختيار العنصر باستخدام الباركود بدلاً من الاسم (حتى لو كان الاسم باللغة العربية)، فإنه يعمل دون مشاكل.
المشكلة تحدث فقط عند اختيار أسماء العناصر العربية مباشرةً من القائمة المنسدلة.

كود :
Private Sub CboName_AfterUpdate()
On Error GoTo ErrorHandler
If Me.Customer <> "" Then
Me.frm_froshtn_detail.SetFocus
DoCmd.GoToRecord , , acNewRec
Beep
Form_frm_froshtn_detail.ProName = DLookup("[ProName]", "tbl_Product", "[ProName]='" & Me.CboName & "'")
Form_frm_froshtn_detail.ProCode = DLookup("[ProCode]", "tbl_Product", "[ProName]='" & Me.CboName & "'")
Form_frm_froshtn_detail.Cost = DLookup("[Cost]", "tbl_Product", "[ProName]='" & Me.CboName & "'")
Form_frm_froshtn_detail.Price = DLookup("[Price]", "tbl_Product", "[ProName]='" & Me.CboName & "'")
Me.Refresh
Form_frm_froshtn_detail.Refresh
Me.CboName = Null
Me.CboBarCode.SetFocus
Else

Me.CboName = Null
Me.CboBarCode.SetFocus
Beep
msgbox "Nawy kryar la sarawa halbzhera"

End If
   Exit Sub:
ErrorHandler:
msgbox "Okey Bka:" & err.Description, vbExclamation, "Error" & err.Number
End Sub


هل واجه أحدكم مشكلة مشابهة أو يعرف طريقة لحل هذه المشكلة؟


شكراً جزيلاً على المساعدة!


الملفات المرفقة صورة/صور
       
الرد }}}
تم الشكر بواسطة:
#2
شكرا جزيلا على الرد

الان عندى مشكە اخرى


الملفات المرفقة صورة/صور
   
الرد }}}
تم الشكر بواسطة:
#3
شكرا جزيلا على الرد 
السطر البرمجى لل cmobox كالاتى و الاغريب في الموضوع هو عندما اختار مادة كتوبت باللغة الانجليزية ما في مشكلة بس اذا كان المادة المختار مكتوب بالاحرف العربية يطلع المشكلة
كود :
Private Sub Combo63_AfterUpdate()
 
On Error GoTo ErrorHandler


    If Nz(Me.Company, "") <> "" Then
        Me.frm_InOrderDetail.SetFocus
        DoCmd.GoToRecord , , acNewRec
        Beep

        Dim selectedProName As String
        selectedProName = Trim(Me.Combo63)

        ' Safely use DLookup with double quotes for Arabic compatibility
        Form_frm_InOrderDetail.ProName = Nz(DLookup("[ProName]", "tbl_Product", "[ProName]=" & Chr(34) & selectedProName & Chr(34)), "")
        Form_frm_InOrderDetail.ProCode = Nz(DLookup("[ProCode]", "tbl_Product", "[ProName]=" & Chr(34) & selectedProName & Chr(34)), "")
        Form_frm_InOrderDetail.Cost = Nz(DLookup("[Cost]", "tbl_Product", "[ProName]=" & Chr(34) & selectedProName & Chr(34)), 0)
        Form_frm_InOrderDetail.DateExp = Nz(DLookup("[Exp]", "tbl_Product", "[ProName]=" & Chr(34) & selectedProName & Chr(34)), Null)

        Me.Refresh
        Me.Combo63 = Null
        Me.CboBarCode.SetFocus
    Else
        Beep
        msgbox "Nawy Companya la sarawa halbzhera", vbExclamation, "Error"
    End If

    Exit Sub

ErrorHandler:
    msgbox "Okey Bka: " & err.Description, vbExclamation, "Error " & err.Number
End Sub
الرد }}}
تم الشكر بواسطة:
#4
شكرا جزيلاى على الرد و لكن نفس المشكلە باقى 
هل تعتقد ان هناك مشكلە في جدوالى SQL ؟
الرد }}}
تم الشكر بواسطة:
#5
المشكلة التي تواجهها عند اختيار أسماء المنتجات باللغة العربية في ComboBox ترجع على الأرجح إلى ترميز النصوص (Encoding) أو التعامل مع الأحرف العربية في الاستعلامات النصية داخل DLookup.

أسباب محتملة للمشكلة:
اختلاف الترميز (Collation) بين Access و SQL Server

قد يكون هناك عدم تطابق في الترميز بين الحقل nvarchar في SQL Server وبيئة Access.
استخدام علامات الاقتباس المفردة ' مع النص العربي

عند تمرير اسم المنتج العربي في DLookup, قد لا تتم معالجته بشكل صحيح بسبب المسافات أو المحارف الخاصة.
وجود مسافات غير مرئية في البيانات العربية

بعض الحقول في SQL Server قد تحتوي على مسافات زائدة أو رموز غير مرئية في نهاية أو بداية النص.
عدم تطابق نوع البيانات عند البحث في DLookup

DLookup يستخدم مقارنة نصية مباشرة، مما قد يسبب أخطاء مع النصوص العربية.
الحل المقترح:
 1. استخدام Trim لإزالة المسافات غير المرئية
قبل تمرير اسم المنتج إلى DLookup، قم بإزالة أي مسافات زائدة:

PHP كود :
Dim proName As String
proName 
Trim(Me.CboName)

Form_frm_froshtn_detail.ProName DLookup("[ProName]""tbl_Product""[ProName]= '" proName "'")
Form_frm_froshtn_detail.ProCode DLookup("[ProCode]""tbl_Product""[ProName]= '" proName "'")
Form_frm_froshtn_detail.Cost DLookup("[Cost]""tbl_Product""[ProName]= '" proName "'")
Form_frm_froshtn_detail.Price DLookup("[Price]""tbl_Product""[ProName]= '" proName "'"

 2. إضافة N قبل النص العربي عند استخدام nvarchar

عند التعامل مع الحقول من نوع nvarchar في SQL Server، يجب وضع N قبل النص العربي حتى يتم تفسيره بشكل صحيح:

PHP كود :
Form_frm_froshtn_detail.ProName DLookup("[ProName]""tbl_Product""[ProName]= N'" proName "'")
Form_frm_froshtn_detail.ProCode DLookup("[ProCode]""tbl_Product""[ProName]= N'" proName "'")
Form_frm_froshtn_detail.Cost DLookup("[Cost]""tbl_Product""[ProName]= N'" proName "'")
Form_frm_froshtn_detail.Price DLookup("[Price]""tbl_Product""[ProName]= N'" proName "'"

 3. التأكد من تطابق Collation بين Access و SQL Server

افتح SQL Server Management Studio (SSMS) ونفذ الأمر التالي للتحقق من الترميز (Collation) الخاص بجدول tbl_Product:

PHP كود :
SELECT namecollation_name 
FROM sys
.columns 
WHERE object_id 
OBJECT_ID('dbo.tbl_Product') AND name 'ProName' 

إذا كان الترميز مختلفًا (Latin1_General_CI_AS مثلاً)، فجرّب تغييره إلى Arabic_CI_AS:

PHP كود :
ALTER TABLE tbl_Product
ALTER COLUMN ProName NVARCHAR
(255COLLATE Arabic_CI_AS 

 4. البحث باستخدام الباركود بدلاً من الاسم

بما أن البحث بالباركود يعمل بشكل صحيح، يمكنك تعديل DLookup ليتم البحث باستخدام ProCode بدلاً من ProName:

PHP كود :
Dim proCode As String
proCode 
DLookup("[ProCode]""tbl_Product""[ProName]= N'" proName "'")

Form_frm_froshtn_detail.ProName proName
Form_frm_froshtn_detail
.ProCode proCode
Form_frm_froshtn_detail
.Cost DLookup("[Cost]""tbl_Product""[ProCode]= '" proCode "'")
Form_frm_froshtn_detail.Price DLookup("[Price]""tbl_Product""[ProCode]= '" proCode "'"

? الخلاصة
1. استخدم Trim() للتخلص من المسافات غير المرئية.
2. استخدم N عند تمرير القيم إلى DLookup للتعامل مع nvarchar.
3. تأكد من أن Collation في SQL Server يدعم اللغة العربية.
4. إذا استمر الخطأ، استخدم الباركود كمرجع بدلاً من الاسم.
الرد }}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
Star [Acces2010] مشكلة في زر التالي و السابق الجنرال أحمد 1 332 22-03-25, 09:28 PM
آخر رد: اسير الشروق
  [Acces2010] مشكلة في الإستعلام ؟ بوكفوس عبدالسلام 1 327 18-12-24, 12:54 AM
آخر رد: hany_youssef
Thumbs Up [كورس] طريقة ربط قاعدة بيانات Access على شبكة MRSADEK 0 420 25-11-24, 05:28 AM
آخر رد: MRSADEK
Photo [Acces2010] مشكلة في استعلام اكسيس يرجى المتابعة abdelnabi 1 385 03-11-24, 12:39 PM
آخر رد: abdelnabi
Smile Add Control User Update Table Link VBA Add Control ms.Access(تحكم بصلاحيات)اكسس Ezril5 0 542 04-05-24, 01:31 AM
آخر رد: Ezril5
Big Grin Controls Access(ربط المتعدد الى نموذج)اكسسFolder UP2GB Update Table Link VBA Ezril5 0 556 27-04-24, 02:01 AM
آخر رد: Ezril5
Big Grin reevew Background Fix Scrollbar Off ON M AddNew FixAt Ma Access (إضافة نوع الدفع اكسس Ezril5 4 522 23-04-24, 10:02 PM
آخر رد: Ezril5
Big Grin Update Table Link VBA And + and backup + Control ms.Access (برنامج ربط قواعد اكسس) Ezril5 0 469 23-04-24, 02:06 AM
آخر رد: Ezril5
Big Grin Update At Fix Give Control Ms.Access -( استكمال برنامج المثابر لموسى مع الإضافات) Ezril5 0 479 07-04-24, 01:12 AM
آخر رد: Ezril5
Big Grin PXL::(Control Size Form And item).V 14 EZril MS.Access تحكم بتحجيم الفورم والعناصر) 2 Ezril5 0 311 05-04-24, 02:38 AM
آخر رد: Ezril5

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم