Jump to content
أوفيسنا
بحث مخصص من جوجل فى أوفيسنا
Custom Search

هل من طريقة لاجبار المستخدم علي ادخال الاسم رباعيا


Recommended Posts

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

احبتي كتبت هذا الكود لاجبار المستخدم علي كتابة اسم العميل رباعيا حتي لا يتكاسل في كتابة الاسم ويكتفي باس واحد أو اثنين مما يؤدي الي الوقوع في مشكلة تشابه الأسماء.

Public Function TestFourthName(ByVal tx As String) As Integer
Dim abd As String
abd = ChrW(1593) & ChrW(1576) & ChrW(1583)
If InStr(1, tx, abd) > 0 Then
    TestFourthName = (Len(tx) - Len(Replace(tx, " ", "")))
    If TestFourthName = 3 Then
        TestFourthName = TestFourthName + 1
    End If
Else
    TestFourthName = (Len(tx) - Len(Replace(tx, " ", ""))) + 1
End If
End Function

وعمل الكود بشكل جيد مع الأسماء التي لا تحوي كلمة "عبد" فعند ادخال المسافة بين عبد واسم الجلالة يعتبر الاسم اثنين :blink:

أرجو التعديل علي الكود لتجاوز هذه الاشكالية أو ابداء فكرة لمعالجة هذا الأمر بأقل خسائر 😁

وجزاكم الله عنا خيرا

Link to post
Share on other sites
  • Replies 58
  • Created
  • Last Reply

Top Posters In This Topic

Top Posters In This Topic

Popular Posts

مبدئيا قبل ما افكر برمجيا  اعمل الاسم على اربع مربعات نص غير منضمين وبعد الكتابة يتم تجميعه فى مربع نص الاسم  مش لازم نصعبها بالاكواد  ولا تنسى لو فكرنا برمجيا فى كلمة عبد الله وباقى العبادله

جزا الله خيرا من علمونا الأدب والتواضع في النقاش قبل العلم  طبعا هذا الكلام لست أنا المقصود به ولا شك (جزاكم الله عنا خيرا كما تظنون بنا خيرا) تمت الفائدة من الموضوع والحمد لله  والشكر

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

مبدئيا قبل ما افكر برمجيا 

اعمل الاسم على اربع مربعات نص غير منضمين وبعد الكتابة يتم تجميعه فى مربع نص الاسم  مش لازم نصعبها بالاكواد :eek2:

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

ماذا سنفعل للاسماء المركبة

نور الدين , منة الله  , هبة الله , جاه الرسول 

 

  • Like 2
Link to post
Share on other sites
25 دقائق مضت, أبو عبدالله الحلوانى said:

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

احبتي كتبت هذا الكود لاجبار المستخدم علي كتابة اسم العميل رباعيا حتي لا يتكاسل في كتابة الاسم ويكتفي باس واحد أو اثنين مما يؤدي الي الوقوع في مشكلة تشابه الأسماء.

ممكن مرفق للتجربة

Link to post
Share on other sites
7 دقائق مضت, ابا جودى said:

مبدئيا قبل ما افكر برمجيا 

اعمل الاسم على اربع مربعات نص غير منضمين وبعد الكتابة يتم تجميعه فى مربع نص الاسم  مش لازم نصعبها بالاكواد :eek2:

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

ماذا سنفعل للاسماء المركبة

نور الدين , منة الله  , هبة الله , جاه الرسول 

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

لم يتبادر الي ذهني تلك الأسماء المركبة :blink: ما فكرت في غير العبادلة 

ولكن الاشكالية أن البيانات المدخلة ستكون حساسة بالنسبة للاسم أي انه بمجرد ادخال الاسم من المفترض انه سيتم البحث عنه بالبيانات المخزنة لربط بيانات العميل القديمة بالجديدة من خلال كود آخر .

كلامك له وجاهة - ولكن سيطرني لاجزاء تعديلات كثيرة تأخذ وقت ليس بقليل :yes:

ولكن لو كان الحل في كتابة كود لكان أسهل واسرع.

 

وجزاكم الله خيرا

Link to post
Share on other sites

هذه مرفق للتجارب

Test Four Name.rar

هو احنا بنكتب الرد ليه مع بعض في وقت واحد كدا ( هو دا اللي اسمه تلاقي الأرواح ولا اليه ) 😀🤔

  • Haha 1
Link to post
Share on other sites
3 دقائق مضت, أبو عبدالله الحلوانى said:

هذه مرفق للتجارب

هو احنا بنكتب الرد ليه مع بعض في وقت واحد كدا ( هو دا اللي اسمه تلاقي الأرواح ولا اليه ) 😀🤔

🥰:wub: انهو ارواح ياللى يحضرها الاستاذ @jjafferr بالبخور تبعه :biggrin:

انت ياللى تختار الوقت اللى اشارك فيه وتنشل 

طيب جرب انت المرفق تبعى... منتظر ردك :yes:

بس لا تكتب وتشارك بنفس الوقت تبعى :eek2:

  • Haha 1
Link to post
Share on other sites
45 دقائق مضت, أبو عبدالله الحلوانى said:

ولكن الاشكالية أن البيانات المدخلة ستكون حساسة بالنسبة للاسم أي انه بمجرد ادخال الاسم من المفترض انه سيتم البحث عنه بالبيانات المخزنة لربط بيانات العميل القديمة بالجديدة من خلال كود آخر .

السلام عليكم

اول اجابة للاستاذ محمد رائعة اعجبتني جدا

ولكنني لما تصفحت مثاله هالني  كثرة هذه الأكواد وخاصة الموجود في الوحدة النمطية

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

يكفي عن الايضاح ان تكتب لنا  كود البحث  هنا .

  • Like 1
  • Haha 1
Link to post
Share on other sites
5 دقائق مضت, ابوخليل said:

السلام عليكم

اول اجابة لمحمد رائعة اعجبتني جدا

ولكنني لما تصفحت مثاله هالني  كثرة هذه الأكواد وخاصة الموجود في الوحدة النمطية

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

يكفي عن الايضاح ان تكتب لنا  كود البحث  هنا .

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

اهلا اهلا اهلا استاذى الجليل ومعلمى القدير و والدى الجبيب الاستاذ @ابوخليل :fff:

الاكواد فى الوحدة النمطية لتقسم الاسم  وتمرره الى الجدول الوسيط لتفادى مشاكل الاسماء المركبة قدر الامكان

اعرف ان الكواد كثيرة 

ولكن اعتقد حسب متطلبات الاستاذ @أبو عبدالله الحلوانى تلك اقرب فكرة تجول ببالى رغم كثرة الاكواد بها اعرف :biggrin:

وطبعا لا يفتى ومالك فى المدينة واذا حضر الماء قطعا بطل التيمم

احس الاستاذ @أبو عبدالله الحلوانى موجود ويراقب فى صمت

خاصة بعد تجربة المرفق بكثرة الاكواد فيه انصدم شكله  حتى ما اخبر عن نتيحة التجربة ولا عن رأيه 🤣

 

 

Edited by ابا جودى
Link to post
Share on other sites

فكرة الحل عندي هي تماما فكرتك الأولى  بدون اكواد 

كود بسيط يكون كوسيط  ، كيف ؟

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

فان كانت صحيحة تم نسخها الى حقل الاسم المنضم 

والا تظهر رسالة تنبيه بالتعديل المطلوب

  • Like 1
Link to post
Share on other sites
1 دقيقه مضت, ابوخليل said:

السلام عليكم

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

2 دقائق مضت, ابوخليل said:

اول اجابة للاستاذ محمد رائعة اعجبتني جدا

ولكنني لما تصفحت مثاله هالني  كثرة هذه الأكواد وخاصة الموجود في الوحدة النمطية

نفس الشعور ولكن اخي واستاذي محمد قد أوضح هذا بكلامه الأول 

 

33 دقائق مضت, ابا جودى said:

فكرة لفة شوية طبعا ممكن تحتاج الى اختزال

 

4 دقائق مضت, ابوخليل said:

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

يكفي عن الايضاح ان تكتب لنا  كود البحث  هنا .

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

أما عن هذه فأنا أحتاج عند ادخال اسم عميل جديد بمعاملة جديدة أن يبحث هل هذا العميل له بيانات سابقة أم لا؟!

ان كانت البيانات السابقة مطابقة للجديدة يطلب من المستخدم:

1-هل يريد اضافة معاملة جديدة لنفس المعاملة السابقة وفي هذه الحالة سيستفيد العميل من بعض الميزات عن ما ان كانت هذه المعالملة للمرة الأولي!

2- أو تعديل المعاملة السابقة!

3- أو التراجع عن الحفظ!

ثانيا - وهذه الجزئية تحت الانشاء: ان كانت المعاملة تختلف عن المعاملة السابق سيتم تخزين قيمة أن للعميل معاملة مختلفة أخري! هذه المعلومة ستفيد لاحقا عند احتساب المبلغ المستحق علي العميل مقابل المعاملة الجديدة.

أرجو أن يكون اضاحي لا يحتاج الي ايضاح😁

أما عن كود البحث فهذا هو

 

If Nz(DCount("CustName", "ContCustNameLiklyQry"), 0) <> 0 Then
    Me.List409.Visible = True
    Me.List409.Move (CustName.Left), Me.CustName.Top, 4032, Me.List409.Height
    Me.List409.SetFocus
Else

End if

ContCustNameLiklyQry 'هذا الاستعلام يحمل بعض المعاير المستخدمة في عملية ايجاد الاسماء المتشابهة
List409 'وهذا الليست يحوي مجموعة الخيارات المعروضة علي المستخدم في حالة ايجاد اسماء متشابهة

 

Link to post
Share on other sites

انا كنت عامل كود بسيط لتفكيك الاسم ، يحسب حساب كلمة "عبد" ،

فياريت ترفق لنا مرفق فيه بعض الاسماء علشان نجرب عليها 🙂
 

وطبعا ، ادخال الاسماء الاربعة مفككة هي الطريقة الصحيحة 🙂


جعفر

  • Like 2
Link to post
Share on other sites
16 دقائق مضت, ابا جودى said:

خاصة بعد تجربة المرفق بكثرة الاكواد فيه انصدم شكله  حتى ما اخبر عن نتيحة التجربة ولا عن رأيه 🤣

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

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

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

11 دقائق مضت, ابوخليل said:

فكرة الحل عندي هي تماما فكرتك الأولى  بدون اكواد 

كود بسيط يكون كوسيط  ، كيف ؟

وبانتظار مثال من أستاذنا ومعلمنا الجليل علي الفكرة المطروحة (بدون أكواد!!!)

وجزاكم الله عنا خيرا 

Link to post
Share on other sites

على العموم ما قدرت قوم بعمل اختزال اكثر من ذلك 

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

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

 

جرب ادخال 

هبة الله نور الدين عبد الرحمن

ما راح يقبل لانه مو رباعى :yes: واظن هاد الاسماء الثلاثة مركبة 

 

Test Four Name.mdb

Edited by ابا جودى
Link to post
Share on other sites
12 دقائق مضت, jjafferr said:

فياريت ترفق لنا مرفق فيه بعض الاسماء علشان نجرب عليها 

تفضل يا أستاذي 

هنا جدول SomNamesTbl به بيانات وهمية متشابهة مع الحقيقية

وجزاكم الله عنا خيرا

والله ما أسعد بالحل قدر سعادتي بتواصلي مع اساتذتي وأحبتي بالمنتدي

@ابا جودى @ابوخليل @jjafferr 

أشكركم جميعا وجعله الله بموازين حسناتكم

  • Haha 1
Link to post
Share on other sites
1 دقيقه مضت, أبو عبدالله الحلوانى said:

تفضل يا أستاذي 

هنا جدول SomNamesTbl به بيانات وهمية متشابهة مع الحقيقية

وجزاكم الله عنا خيرا

والله ما أسعد بالحل قدر سعادتي بتواصلي مع اساتذتي وأحبتي بالمنتدي

@ابا جودى @ابوخليل @jjafferr 

أشكركم جميعا وجعله الله بموازين حسناتكم

وانا كمان سعيد

بس  هنا جدول SomNamesTbl 

هنا وين 

Link to post
Share on other sites

طيب لاحظت الاتى بالاسماء

عبدالله عبدالرحمن محمد حسن

يجب الانتباه ان كتبت فى المرة المقبلة

عبد الله عبد الرحمن محمد حسن

هل  يكون اسم جديد ام اسم قديم ؟؟؟!!1

 

Link to post
Share on other sites

طبعا في اسماء يجب التعامل معها بطريقة خاصة ، وتقدر تدخلها في الوحدة النمطية ،

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

Function SP(M, N)
On Error GoTo err_SP

    Dim A As Integer
    
'testing
If M = "äæÑÇáÏíä Úáã ÇáÏíä ÚÈÏ ÇáÍÝíÙ" Then
A = 1
End If

    'SP = Seperate Mother's name to its names
    'M = Mothers name
    'N = Which part of the name we are looking for
    
    Dim x() As String
     
     'check if ÚÈÏ has a space after it, if not, add the space
    If InStr(M, "ÚÈÏ") > 0 Then
        M = Replace(M, "ÚÈÏ", "ÚÈÏ ")
    End If
    
    
    M = Replace(M, "   ", " ")
    M = Replace(M, "  ", " ")
    M = RTrim(M)
    M = LTrim(M)
        
    'insert | to distinguish the combined names
    M = Replace(M, "ÚÈÏ ", "ÚÈÏ|")
    
    x = Split(M, " ")
    
'1st name
    If N = 1 Then

            SP = x(0)

'2nd name
    ElseIf N = 2 Then

            SP = x(1)

'3rd name
    ElseIf N = 3 Then

            SP = x(2)
   
'4th name
    ElseIf N = 4 Then

            SP = x(3)
    
    End If

    'Remove the extra |
    SP = Trim(Replace(SP, "ÚÈÏ|", "ÚÈÏ "))
    
Exit Function
err_SP:

    If Err.Number = 94 Then
        'mother null
        SP = ""
        
    ElseIf Err.Number = 9 Then
        SP = ""
    
    Else
        MsgBox Err.Number & vbCrLf & Err.Description
    End If
    
End Function

 

جعفر

1313.Test Four Name.mdb.zip

  • Like 2
Link to post
Share on other sites
1 دقيقه مضت, ابا جودى said:

عبد الله عبد الرحمن محمد حسن

هل  يكون اسم جديد ام اسم قديم ؟؟؟!!1

قد راعيت هذا عند اختيار الأسماء وراعيت أن يتم اثبات المسافة في بعض الأسماء واهمالها بالبعض الآخر

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

ولكن اعتقد أن هذا سيغير مجال النقاش قليلا 

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

ملاحظة جيدة 

أم عن نتيجة التجربة للمرفق الأول والثاني لكم فنتائج مزهلة وموافقة للمطلوب وجزاكم الله خيرا

 

 

Link to post
Share on other sites

Join the conversation

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

Guest
Reply to this topic...

×   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.

  • Recently Browsing   0 members

    No registered users viewing this page.




×
×
  • Create New...