تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[سؤال] كيف أستخدم دالة معرفة مسبقاً ضمن الاستعلام؟
#11
(03-11-20, 02:31 AM)Anas Mahmoud كتب :
(02-11-20, 07:51 PM)السندبااد كتب :
للأسف لم تنجح هذه الطريقة

جزاك الله خيراً

ولك بمثله

غريبة ، على العموم المبدأ واحد اذا كنت تريد ترتيب العناصر بناءا على دالة معرفة في مستوى الفيجوال بيسك يجب ان تقوم بترتيبهم في نفس المستوى ، اذ لا يمكن لل SQL معرفة الدوال المعرفة بمستوى اعلى منه 

لو تشاركني بالجزء الخاص بملىء الداتا تيبل لديك مثلا ربما نصل الى شيء وصدقني مرادك يتحقق ان شاء الله باستخدام LINQ

أخي الحبيب أنا مقتنع بهذا الكلام، ولكن لاحظت أنه لا يقوم بالعملية على أكمل وجه؛ مثلاً في دالة ReplaceString أضفت معياراً لتجاهل (ابن) عند الترتيب، ولكن هذا لا يتم، فمثلاً عندي (ابن ماجه) المفروض يكون ترتيب في حرف الميم وليس الألف.

على كل وضعت لك مثالاً في المرفقات مع قاعدة البيانات، وقمت بتطبيق فكرتك عليه، وستلاحظ في الليستا أنه لا يتجاهل بعض العبارات في الترتيب مثل: أبو، ابن.
أرجو التكرم بالاطلاع على المرفق وتطبيق الفكرة عليها، وأسأل الله تعالى أن تنجح فكرتك، وألف شكر لك Smile


الملفات المرفقة
.zip   Example.zip (الحجم : 142.67 ك ب / التحميلات : 15)
فاعلم أنه لا إله إلا الله
الرد }}}
تم الشكر بواسطة: Anas Mahmoud
#12
السلام عليكم ورحة الله وبركاته

المشكلة استاذي في منطق الدالة ReplaceString نفسه ، 

strChar هو حرف وحيد ولا يمكن استخدامه داخل Select Case لاختبار اكثر من حرف مثل "ال" او "ابن"

جربت نفس الطريقة ولكني عدلت الدالة لتبحث عن البادئات اولا وتمسحها ومن ثم تبحث عن الحروف الغريبة  :
كود :
   Public Function ReplaceString(In_Text As String) As String
       Dim X As Long
       Dim strChar As String
       Dim strReturn As String
       strReturn = ""



       If In_Text.StartsWith("ابن") Then
           In_Text = In_Text.Substring(3, In_Text.Length - 3)
       End If
       If In_Text.StartsWith("أبو") Then
           In_Text = In_Text.Substring(3, In_Text.Length - 3)
       End If
       If In_Text.StartsWith("ال") Then
           In_Text = In_Text.Substring(2, In_Text.Length - 2)
       End If
       For X = 1 To Len(In_Text)
           strChar = Mid(In_Text, X, 1)
           Select Case strChar
               'Case "ال"
               '    strChar = ""
               'Case "ابن "
               '    strChar = ""
               'Case "أبو "
               '    strChar = ""
               Case Chr(243), Chr(240), Chr(245), Chr(246), Chr(242), Chr(241), Chr(248), Chr(250)
                   strChar = ""
           End Select
           strReturn = strReturn & strChar
       Next
       ReplaceString = strReturn
   End Function

والنتيجة :

   

اتمنى ان هذا ما كنت تريده
الرد }}}
تم الشكر بواسطة: السندبااد , السندبااد , asemshahen5
#13
(03-11-20, 01:20 PM)Anas Mahmoud كتب : السلام عليكم ورحة الله وبركاته

المشكلة استاذي في منطق الدالة ReplaceString نفسه ، 

strChar هو حرف وحيد ولا يمكن استخدامه داخل Select Case لاختبار اكثر من حرف مثل "ال" او "ابن"

جربت نفس الطريقة ولكني عدلت الدالة لتبحث عن البادئات اولا وتمسحها ومن ثم تبحث عن الحروف الغريبة  :
كود :
   Public Function ReplaceString(In_Text As String) As String
       Dim X As Long
       Dim strChar As String
       Dim strReturn As String
       strReturn = ""



       If In_Text.StartsWith("ابن") Then
           In_Text = In_Text.Substring(3, In_Text.Length - 3)
       End If
       If In_Text.StartsWith("أبو") Then
           In_Text = In_Text.Substring(3, In_Text.Length - 3)
       End If
       If In_Text.StartsWith("ال") Then
           In_Text = In_Text.Substring(2, In_Text.Length - 2)
       End If
       For X = 1 To Len(In_Text)
           strChar = Mid(In_Text, X, 1)
           Select Case strChar
               'Case "ال"
               '    strChar = ""
               'Case "ابن "
               '    strChar = ""
               'Case "أبو "
               '    strChar = ""
               Case Chr(243), Chr(240), Chr(245), Chr(246), Chr(242), Chr(241), Chr(248), Chr(250)
                   strChar = ""
           End Select
           strReturn = strReturn & strChar
       Next
       ReplaceString = strReturn
   End Function

والنتيجة :



اتمنى ان هذا ما كنت تريده

أشكرك جداً على اهتمامك، وأرجو أن نصل في النهاية للحل.

للأسف هذا الحل خطأ كما يظهر في صورتك:
ابن ماجه: بعد تجاهل (ابن) يصبح (ماجه)؛ إذن يجب أن يأتي ترتيبه في الميم؛ أي بعد (كتبي) وقبل (مختار).

مثال آخر:
أبو جيب: بعد تجاهل (أبو) يصبح (جيب)؛ إذن يجب أن يأتي ترتيبه في الجيم؛ أي بعد (الجرجاني) وقبل (الحاكم).

أرجو التكرم بالتعديل لنصل للنتيجة المرجوة، وجزاك الله ووالديك الفردوس الأعلى

عدَّلت في كودك فوصلت للحل، والتعديل هنا:
كود :
In_Text = In_Text.Substring(3, In_Text.Length - 3)

إلى:
كود :
In_Text = In_Text.Substring(4, In_Text.Length - 4)

وذلك من أجل حذف المسافة بعد (ابن) و(أبو).

أخي الحبيب أنس محمد، أسأل الله تعالى أن يبيض وجهك، وأن يرفع قدرك ومقدارك في الدنيا والآخرة، وأن يرزقك من حيث تحتسب ومن حيث لا تحتسب
Smile
فاعلم أنه لا إله إلا الله
الرد }}}
تم الشكر بواسطة: Anas Mahmoud , asemshahen5
#14
اللهم امين واياك اخي الكريم
الرد }}}
تم الشكر بواسطة: السندبااد


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  [VB.NET] معرفة الخطا MOHAMMED ALZWI 0 50 15-04-24, 01:56 PM
آخر رد: MOHAMMED ALZWI
  [VB.NET] معرفة الخطا MOHAMMED ALZWI 2 50 15-04-24, 01:54 PM
آخر رد: MOHAMMED ALZWI
  معرفة رصيدي للهاتف النقال المتصل بالكمبيوتر وارسال رسائل نصية منه AHMED213 1 152 03-04-24, 08:08 AM
آخر رد: sdz
  [VB.NET] معرفة بيانات الجهاز محمد بوقزاحة 1 328 21-02-24, 11:44 PM
آخر رد: AHMED213
  [VB.NET] البحث باستخدام CheckedListBox لتكون نتيجة التحديد شرط لجملة الاستعلام ahmedramzyaish 0 125 19-02-24, 03:44 AM
آخر رد: ahmedramzyaish
  معرفة عدد مرات تكرار الاسم في الداتاقريدفيو صالح عبدالله 8 443 05-02-24, 04:39 PM
آخر رد: صالح عبدالله
  [VB.NET] معرفة بيانات الجهاز محمد بوقزاحة 7 678 12-01-24, 07:31 PM
آخر رد: Kamil
  معرفة عدد الاشهر خلال فترة زمنيةمعينة boofa2022 0 188 01-01-24, 01:18 PM
آخر رد: boofa2022
  كيفية رسم بيان دالة رياضية؟ الخير19 6 423 23-12-23, 03:36 PM
آخر رد: الخير19
  [سؤال] كيف نستعيد قيمة من دالة ضمن مسار مستقل justforit 2 399 21-11-23, 10:51 AM
آخر رد: justforit

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


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