اذهب الي المحتوي
أوفيسنا

طلب كود لاستخراج الأرقام التي بين القوسين {}


nssj
إذهب إلى أفضل إجابة Solved by Moosak,

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

الإخوة الكرام .. حقل (NASS) في جدول (TAB) حقل نصي، كثير من حقوله – وليس كلها - تحتوي على ترقيم معين بين قوسي {}

والمطلوب استخراج هذه الأرقام حيث وجدت، الأرقام التي بين هذين القوسين فقط دون القوسين، ووضعها في جدول (TAB_MNO) في حقل (OLD_NO)، مع وضع رقم (MNO) للسجل الذي تم الاستخراج منه

مع ملاحظة أمرين:

* أنه لا يشترط أن يكون كل ما هو بين هذين القوسين {} أرقاماً، فقد يكون حروفا أو رموزا، وفي هذه الحالة فغير مطلوب استخراج ما بينهما

* قد تتعدد هذه الأقواس مع الأرقام في السجل الواحد، والمطلوب استخراج الجميع وليس أول قوسين فقط، وفي هذه الحالة توضع علامة (نعم) في جدول (TAB_MNO) عند رقم السجل الذي حدث فيه هذا التعدد

وفي هذه الصورة تظهر الملاحظتان (وجود غير الأرقام بين القوسين ووجود أكثر من قوسين)

 Untitled0.png.43f37f1945a05a63a9eaa5899cf504b0.png

وقمت بتعبئة بعض الصفوف في جدول (TAB_MNO) يدويا ليظهر المطلوب

  Untitled02.png.0a2ca354fe69cf1f34ef2f272401ac90.png

فهل يمكن إنشاء كود يقوم بهذه العملية ؟

MZ_MNO.accdb

رابط هذا التعليق
شارك

أهلا بك أخي @nssj 🙂 

بداية أشكر أخي @محب العقيدة على الموقع الرائع الذي أشار إليه في هذا الموضوع اداة بحث ثورية 😊🌹

وقد طلبت من الموقع أن يعطيني كود يستخرج الأرقام ( فقط ) من بين هذه الأقواس {} .. من أي جملة .. وقد أعطاني هذا الكود ( قمت بعمل بعض التعديلات البسيطة وتحويله إلى دالة 🙂 ) :

Public Function ExtractNumbers(text As String) As String
' This Code extract only numbers from a text if they are surrounded by these characters "{}"
Dim i As Integer
Dim num As String
Dim result As String

'text = "The value of x is {3} and the value of y is {7}"
result = ""

For i = 1 To Len(text)
  If Mid(text, i, 1) = "{" Then
    ' Found the start of a number
    num = ""
    Do While Mid(text, i, 1) <> "}"
      ' Check if the current character is a numeric character
      If IsNumeric(Mid(text, i, 1)) Then
        num = num & Mid(text, i, 1)
      End If
      i = i + 1
    Loop
    ' Found the end of the number, so add it to the result
    result = result & num & " "
  End If
Next

' result now contains the numbers from the text, separated by spaces

'Debug.Print result
ExtractNumbers = Trim(result)

End Function

والنتيجة رهييييييييييبة بصراحة ونااااااااااااجحة 100% 😄👌🏼

مثال بعد التطبيق :

image.png.3f9bc0cc4a01c896fa742ac3eefa4fa3.png

 

  

39 دقائق مضت, nssj said:

وفي هذه الحالة توضع علامة (نعم) في جدول (TAB_MNO) عند رقم السجل الذي حدث فيه هذا التعدد

وهذه الجزئية لم أفهمها في طلبك .. 🙂 

MZ_MNO.rar

تم تعديل بواسطه Moosak
  • Like 4
رابط هذا التعليق
شارك

فعلا الكود قام باستخراج الأرقام المطلوبة :clapping: .. لكن يبقى وضعها في الجدول المطلوب (TAB_MNO)  بالطريقة المطلوبة كما يظهر في الصورة ، رقم (MNO) ثم الرقم المستخرج من هذا السجل

28 دقائق مضت, Moosak said:

وهذه الجزئية لم أفهمها في طلبك .. 🙂

أعني أخي الكريم أنه في حالة وجود أكثر من رقم مستخرج كما في الصورة التي أرفقتها أنا وأنت، تجعل الخيار في حقل (MK) : نعم

 Untitled03.png.596f8ff250a640be6dc95456b0d88791.png

لأني قد أحتاج لفرز هذه الحقول التي فيها أكثر من رقم

رابط هذا التعليق
شارك

  • أفضل إجابة

تم بحمد الله 🙂 

يمكنك الآن استخراج جميع الأرقام من جميع السجلات وإضافتها في الجدول بضغطة زر واحدة ( الزر الأصفر في الأسفل ) 🙂 

وأضفت النموذج الفرعي لرؤية الأرقام المرتبطة بالسجل ..

image.png.0e0ac94b8266bd6da209a79c0aa88749.png

وهذه السجلات في الجدول :

image.png.5b8badf435bc69860b2a8cf96a5ba299.png

MZ_MNO.rar

تم تعديل بواسطه Moosak
  • Like 3
رابط هذا التعليق
شارك

جزاك الله خيراً أخي الكريم Moosak  وأحسن إليك .. تم المطلوب بحمد الله

بعد تجاوز بعض المشاكل وتصحيح بعض الأخطاء في الملف .. ولذلك تأخرت في الرد 🙂

أولا: غيرت (Dim I As Integer) إلى (Dim I As Long) للعمل على الملف الأصلي الذي يحتوي (54700) سجلا

ثانيا: كانت تخرج هذه الرسالة

 Untitled07.png.4b5a8b2cbab9f6c281f63085969b7d4a.png

وكنت أظن أن المشكلة هي كثرة عدد السجلات، فكنت أحذف من السجلات وأعيد التجربة حتى وصلت إلى (70) سجلاً، ولا زالت الرسالة تخرج

وبعدين شربت كاسة شاي ومخمخمت 😁 واستنتجت أن المشكلة هي وجود قوس البداية { ، بدون نهايته: } ، ويرجع السبب لأمرين:

1-  أنني استخدمت نصا مختصرا، لأني لا أريد البحث في كل السجل لوجود أرقام بين {} في أواخر العديد من السجلات وهي أرقام غير مطلوب استخراجها، نحو: (يأتي {8155} ، تقدم {122} ..)

وفي بعض الصفوف كانت توجد آيات بين قوسين {} ونتيجة الاختصار تبقى بداية الآيات مع قوس البداية { ، ويحذف الباقي مع قوس النهاية }

وتجاوزت هذه المشكلة بعمليات استبدال {أ - {ب - {ت .. .. بفراغ

2- وجود أخطاء بكتابة الأرقام والأقواس، مثل: {1088) ، {2512 عن ابن ..

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

والآن بحمد الله تم المطلوب وزيادة: بتصحيح هذه الأخطاء

فالحمد لله أولاً وآخراً

وكل الشكر للأخ الكريم  Moosak  على مساعدته :smile:

  • Like 1
رابط هذا التعليق
شارك

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