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

استخراج رقم من حقل نصي (بدون التزام بعدد الفراغات)


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

السلام عليكم ورحمة الله وبركاته

اعزائي الكرام

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

المطلوب هو دالة فصل هذه الارقام في حقل مستقل في الاستعلام .

 

اليكم المرفق

ExtractNumbers.rar

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

وعليكم السلام:smile:

 

عملت وحدة نمطية لحل الموضوع:

562.Clipboard01.jpg

.

والنتيجة

562.Clipboard02.jpg

.

والوحدة النمطية:


Function Seperate_Digits(T)

    'T = Text From Query

    For i = 1 To Len(T)
    
        'the ascii number of each number
        C = Asc(Mid(T, i, 1))
        
        'ascii numbers we want
        '46= .
        '47= /
        '48= 0
        '49= 1
        '50= 2
        '51= 3
        '52= 4
        '53= 5
        '54= 6
        '55= 7
        '56= 8
        '57= 9
        
        Select Case C
            
            Case 46 To 57
                Which_Letter = Which_Letter & Mid(T, i, 1)
                
        End Select
        
    Next i
    
    Seperate_Digits = Which_Letter
    
End Function

.

جعفر

562.ExtractNumbers.accdb.zip

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

ممتاز جدا وهو المطلوب بعينه

 

لكن ماهو الحل في

case 47

الفاصله المائلة /

حيث نفترض انني اريد الرقم الذي بعدها فقط .

 

ثم كيف اجعل الكود يعمل مع القيم الخالية null

 

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

9 دقائق مضت, كوماندير said:

ممتاز جدا وهو المطلوب بعينه

 

لكن ماهو الحل في

case 47

الفاصله المائلة /

حيث نفترض انني اريد الرقم الذي بعدها فقط .

 

ثم كيف اجعل الكود يعمل مع القيم الخالية null

 

 

لوسمحت تشرح اللي تريده ، لأني ما فهمت:blink:

 

جعفر

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

8 دقائق مضت, jjafferr said:

 

لوسمحت تشرح اللي تريده ، لأني ما فهمت:blink:

 

جعفر

اخي جعفر

مثلا لدي

 

Positive       1/160

ايضا

Negative                1/80

اريد الدالة ترجع لي في الاولى 160 والثانية 80  فقط كيف ؟

 

ايضا احتاج احيانا لترك الحقل MyReault فارغا ، يعطيني الكود خطأ ؟لماذا وكيف الحل ؟

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

تفضل ، هذه الوحدة النمطية الجديدة:smile:

 

1. نحسب طول المعلومة ، اذا كانت صفر ، فلا ندخل في بقية المعادلات ،

2. واذا لقينا Case 47 ، فنحذف كل ما كان قبله  ""=Which_Letter ، ونبدأ البحث عن الارقام من جديد


Function Seperate_Digits(T)

    'T = Text From Query

    If Len(T & "") = 0 Then
        Seperate_Digits = ""
        Exit Function
    End If
    
    For i = 1 To Len(T)
    
        'the ascii number of each number
        C = Asc(Mid(T, i, 1))
        
        'ascii numbers we want
        '46= .
        '47= /
        '48= 0
        '49= 1
        '50= 2
        '51= 3
        '52= 4
        '53= 5
        '54= 6
        '55= 7
        '56= 8
        '57= 9
        
        Select Case C
            
            Case 46, 48 To 57
                Which_Letter = Which_Letter & Mid(T, i, 1)
                
            Case 47
                Which_Letter = ""
                
        End Select
        
    Next i
    
    Seperate_Digits = Which_Letter
    
End Function

 

جعفر

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

 

8 دقائق مضت, كوماندير said:

لماذا لم نستخدم

Option explicit

بداية الكود ؟؟

لأني كسلان :blink:

 

اذا اردت استعمالها ، فيجب ان يتغير الكود الى:

Option Compare Database
Option explicit


Function Seperate_Digits(T as string) as string

	dim i as integer
	dim C as string
	dim Which_Letter as string

    'T = Text From Query

    If Len(T & "") = 0 Then
        Seperate_Digits = ""
        Exit Function
    End If
    
    For i = 1 To Len(T)
    
        'the ascii number of each number
        C = Asc(Mid(T, i, 1))
        
        'ascii numbers we want
        '46= .
        '47= /
        '48= 0
        '49= 1
        '50= 2
        '51= 3
        '52= 4
        '53= 5
        '54= 6
        '55= 7
        '56= 8
        '57= 9
        
        Select Case C
            
            Case 46, 48 To 57
                Which_Letter = Which_Letter & Mid(T, i, 1)
                
            Case 47
                Which_Letter = ""
                
        End Select
        
    Next i
    
    Seperate_Digits = Which_Letter
    
End Function

 

جعفر

جعفر

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

  • 2 months later...

السلام عليكم :

 

اخواني الداله اعلاه تعمل جيدا ولكن :

عندما يكون مربع النص المراد استخراج الرقم منه ( لايحتوي على ارقام ) فالدالة تعيد فراغ  .

وهذا جيد لكن عندما اريد استخدام الحقل الناتج في تعبيرات اخرى يعطي #خطأ

هل من الممكن طريقة لحل هذا الاشكال .

 

اليكم مثال بسيط انظر للاستعلام Q2

separatMyNum.rar

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

في ١‏/٤‏/٢٠١٧ at 20:50, كوماندير said:

السلام عليكم :

 

اخواني الداله اعلاه تعمل جيدا ولكن :

عندما يكون مربع النص المراد استخراج الرقم منه ( لايحتوي على ارقام ) فالدالة تعيد فراغ  .

وهذا جيد لكن عندما اريد استخدام الحقل الناتج في تعبيرات اخرى يعطي #خطأ

هل من الممكن طريقة لحل هذا الاشكال .

 

اليكم مثال بسيط انظر للاستعلام Q2

separatMyNum.rar

اتفضل الان القي نظرتا الى Q2

والسبب كله يرجع للاستعلام Q1 الحقل Final

شوف اضفت هذا السطر له 

IIf([xResult]="";"";

يعني صرت هكذا

Final: IIf([xResult]="";"";IIf([MyResult] Is Not Null;IIf([XResult]>[UpperLimit];ChrW(9650);IIf([XResult]<[LowerLimit];ChrW(9660);IIf([MyResult] Like "*Positi*";ChrW(10070);IIf([MyResult] Like "React*";ChrW(10070);""))))))

لكن بعد بها بعض اخطاء حين يكون حقل myresult بيكون فراغ
انا ما افهم بالڤچبگ ما تريد لكي اعطيه جملة مناسبة
لكن الان الاستعلام Q2  ما به اي خطأ


 

separatMyNum.rar

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

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