nssj قام بنشر يناير 12, 2021 قام بنشر يناير 12, 2021 قد يكون العنوان مبهماً غير واضح .. لكن بالمثال يتضح الموضوع بإذن الله في المثال المرفق في جدول (الإحالات2): [&] حديث أبي بكرة يأتي (20152) هل بالإمكان أن يكون لهذا الرقم ارتباط تشعبي بحيث إذا ضغطت عليه ينتقل للرقم المطلوب، قياساً على أنه يمكن تلوين هذا الرقم عند اختيار (نص منسق)، لأن هذا مفيد لإدراج أكثر من إحالة في نفس الخانة أحد الإخوة أخبرني أن هذا غير ممكن، وأن كل ما هو مكتوب في حقل واحد يكون ككتلة واحدة لا يمكن تخصيص بعضه بإجراء معين كهذا الإجراء هل هذا كلام نهائي أم يمكن فعل ذلك بطريقة ما وبناء على كلام هذا الأخ تم تصميم جدول الإحالات على أساس أن يكون الرقم المحال عليه في حقل خاص، كما هو في جدول (الإحالات) إحالات.accdb 592 kB · 60 downloads
jjafferr قام بنشر يناير 12, 2021 قام بنشر يناير 12, 2021 في 12/1/2021 at 20:46, nssj said: أحد الإخوة أخبرني أن هذا غير ممكن Expand هذا الكلام صحيح ، اذا كان الحقل نص غير منسق 🙂 في 12/1/2021 at 20:46, nssj said: هل بالإمكان أن يكون لهذا الرقم ارتباط تشعبي Expand نعم ، عن طريق ان يكون النص منسق بكود HTML ، والذي على اساسه تنقر عليه وتعمل الباقي في الكود (قد لا يكون ببساطة الارتباط التشعبي ، فلم اعمل شيء من هذا سابقا) 🙂 جعفر
محمد أبوعبدالله قام بنشر يناير 12, 2021 قام بنشر يناير 12, 2021 السلام عليكم يمكن استخراج الارقام من النص عن طريقة الدالة التي وضعها استاذنا جعفر في الموضوع التالي Function Seperate_Digits(T) If Len(T & "") = 0 Then Seperate_Digits = "" Exit Function End If For i = 1 To Len(T) C = Asc(Mid(T, i, 1)) Select Case C Case 46, 48 To 57 Which_Letter = Which_Letter & Mid(T, i, 1) End Select Next i Seperate_Digits = Which_Letter End Function الاشكالية اذا كان هناك اكثر من رقم في نفس الحقل كما في مثالك اقتباس [&] حديث أبي بكرة يأتي (20152) ومرسل الحسن (32105) Expand سيتم دمج الرقمين فتكون النتيجة 2015232105 أما في الحقل الذي به رقم واحد اقتباس (&) انظر رواية زياد بن أبي المغيرة، أو زياد بن المغيرة عن أبي هريرة 13636 Expand ستكون النتيجة 13626 تحياتي
jjafferr قام بنشر يناير 13, 2021 قام بنشر يناير 13, 2021 السلام عليكم 🙂 شكرا اخوي ابوعبدالله 🙂 وهاي دالة لإستخراج الرقم من وسط بيانات الحقل 🙂 مثلا ننقر مزدوجا على الرقم 12670 : والنتيجة تفتح لنا النموذج مسند على الرقم اعلاه : . ننادي الدالة هكذا ، بحيث نرسل بيانات الحقل ، والنقطة/المكان اللي تم النقر مزدوجا فيها : Private Sub EH_DblClick(Cancel As Integer) DoCmd.OpenForm "مسند", , , "[Mno]=" & Get_Number(Me.EH, Me.EH.SelStart) End Sub . وتقوم هذه الدالة بإرجاع الرقم فقط : Public Function Get_Number(fld As String, P As Long) As Long ' 'fld = Field content 'P = Position left mouse was double clicked in the field 'max_Length = maximun length of numeric field, default is 10 'C = the character to check 'Add_C = Adds the numeric Characters ' '1. check the characters to the Left <----| '2. check the characters to the Right |----> ' ' jjafferr ' v.1 : 21-01-13 ' Dim i As Integer Dim Add_C As String Dim C As String Dim max_Length As Integer max_Length = 10 'Get the numbers on the Left side of the click For i = P To (P - max_Length) Step -1 C = Mid(fld, i, 1) If IsNumeric(C) Then Add_C = C & Add_C Else Exit For End If Next i 'Debug.Print Add_C 'Get the numbers on the Right side of the click P = P + 1 For i = P To (P + max_Length) C = Mid(fld, i, 1) If IsNumeric(C) Then Add_C = Add_C & C Else Exit For End If Next i Get_Number = CLng(Add_C) End Function . ولكن ، لم اتمكن من تشغيل هذه الدالة على حقل النص المنسق !! جعفر 1326.إحالات.accdb.zipFetching info... 2 1
nssj قام بنشر يناير 13, 2021 الكاتب قام بنشر يناير 13, 2021 الأخ الكريم جعفر .. جزاك الله خيرا وأحسن إليك هديتك هذه تتيح لي مرونة وخيارات أكثر في العمل .. فبارك الله فيك ولا تزال التجارب جارية .. والله الموفق وهل هذا الأمر يعني أنه يمكن لرموز خاصة في حقل نصي أن يكون لها ارتباط خاص مع جداول أخرى .. إذا كان الجواب "نعم" فسأوضح المطلوب في موضوع مستقل لزيادة الإيضاح ثم أخي الكريم .. هل أطمع بمرورك على موضوعنا الأول (تحويل جدول من وورد إلى أكسس) لوضع اللمسات النهائية التي تراها مناسبة على هديتك القيمة هناك
jjafferr قام بنشر يناير 13, 2021 قام بنشر يناير 13, 2021 في 13/1/2021 at 12:05, nssj said: لرموز خاصة في حقل نصي أن يكون لها ارتباط خاص مع جداول أخرى Expand مع مراعاة كلمة "ارتباط" ، فالطريقة اللي توصلنا لها هي الحصول على الرقم المطلوب ، ومن ثم عمل اللي نريده في هذا الرقم ، والذي استخدمناه كمعيار لفتح نموذج آخر ، فالجواب بالطريقة اعلاه ، نعم يمكن ، ولكن لاحظ اننا استخدمنا الارقام فقط (ولو استخدمنا طريقة RegEx لوصلنا للمطلوب بطريقة اسرع ومرونه اكثر 🙂 ) ، فإذا اردت اضافة رموز خاصة وبطريقة معينه ، فالجواب كذلك ، نعم يمكن 🙂 جعفر
nssj قام بنشر يناير 13, 2021 الكاتب قام بنشر يناير 13, 2021 الأخ الكريم جعفر .. هل هذا الإجراء يقتضي ألا يتم تغيير النص في (الإحالات2) إلا من الجدول أو نموذج آخر لأني عندما حاولت أن أغير في النص في النموذج نفسه بإضافة أرقام أخرى أو غير ذلك، خرجت لي رسالة الخطأ التي تخرج عندما تكبس كبسا مزدوجا على غير الرقم، ولم تنتهي المشكلة إلا عندما رجعت إلى الجدول وحذفت الرموز البرمجية التي أضيفت وهل يمكن أن يسهل الأمر أن يجعل الرقم المراد الانتقال إليه بين رموز أو أقواس مخصصة لا تستخدم إلا لهذا الغرض، وليكن مثلاً {} وأعدت رفع الملف بعد جعل الأرقام بين {} إن كان هذا يفيد إحالات2.accdbFetching info...
jjafferr قام بنشر يناير 14, 2021 قام بنشر يناير 14, 2021 المشكلة ان تنسيق ونمط النموذج والجدول عندك كان غير ، فرجاء استعمال المرفق من الآن 🙂 وكلامنا فقط عن الجدول والنموذج احتمالات2 🙂 ولكي نتفادى رسالة الخطأ ، هكذا ننادي الدالة في الوحدة النمطية: Private Sub EH_DblClick(Cancel As Integer) Dim lng_Mno As Long lng_Mno = Get_Number(Me.EH, Me.EH.SelStart) If lng_Mno = 0 Then MsgBox "لم يتم الحصول على رقم" ElseIf lng_Mno = 1 Then MsgBox "لم يتم التعرف على الخطأ" Else DoCmd.OpenForm "مسند", , , "[Mno]=" & lng_Mno End If End Sub . واصبحت الدالة هكذا : Public Function Get_Number(fld As String, P As Long) As Long On Error GoTo err_Get_Number ' 'fld = Field content 'P = Position left mouse was double clicked in the field 'max_Length = maximun length of numeric field, default is 10 on each side = 20 characters 'C = the character to check 'Add_C = Adds the numeric Characters ' '1. check the characters to the Left <----| '2. check the characters to the Right |----> ' ' jjafferr ' v.1 : 21-01-13 : initial re;ease ' v.1.1 : 21-01-14 : added error traping for noe numeric values ' Dim i As Integer Dim Add_C As String Dim C As String Dim max_Length As Integer max_Length = 10 'What dose Access Read: -10 to 10 = 20 letters/characters 'C = Mid(fld, P - max_Length, max_Length) & vbCrLf & Mid(fld, P + 1, max_Length) 'Debug.Print C 'Get the numbers on the Left side of the click For i = P To (P - max_Length) Step -1 C = Mid(fld, i, 1) If IsNumeric(C) Then Add_C = C & Add_C Else Exit For End If Next i 'Debug.Print Add_C 'Get the numbers on the Right side of the click P = P + 1 For i = P To (P + max_Length) C = Mid(fld, i, 1) If IsNumeric(C) Then Add_C = Add_C & C Else Exit For End If Next i 'return the number value Get_Number = CLng(Add_C) Exit_Get_Number: Exit Function err_Get_Number: If Err.Number = 13 Then Get_Number = 0 Else Get_Number = 1 MsgBox Err.Number & vbCrLf & Err.Description End If Resume Exit_Get_Number End Function جعفر 1326.1.Get Number between text.accdb.zipFetching info... 1
nssj قام بنشر يناير 14, 2021 الكاتب قام بنشر يناير 14, 2021 (معدل) في 14/1/2021 at 17:02, jjafferr said: المشكلة ان تنسيق ونمط النموذج والجدول عندك كان غير Expand معذرة أخي الكريم .. فهذا ملف تجارب .. وكنت وقتها أجرب ما ذا يعني (مجموعة حيوية) و (لقطة) في خصائص النموذج .. وكنت مسروراً بهذا الاكتشاف 🙂 .. مع أني لم أزل لا أعرف ما الفرق بين (مجموعة حيوية) و (مجموعة حيوية غير متسقة) 🤔 وبارك الله فيك أخي الكريم على هذا التعديل .. فقد أصبح بالإمكان التعديل والحذف والإضافة من خلال النموذج دون مشاكل، لكن لابد من عمل تحديث، أو الخروج من الصفحة والعودة إليها ليتم استيعاب هذه التحديثات والانتقال للرقم .. ولعلك تتكرم بجعل الكود يقوم بهذه الخطوة بنفسه إن أمكن وبخصوص وضع الرقم بين {} .. أنا كنت أستفسر منك إن كان وضع الرقم بين رموز أو أقواس خاصة يسهل العملية أو يجعل الوصول للرقم أفضل وإن تغير النص ذلك أنه يبدو لي أن الدالة تبحث عن الرقم بأن تقوم بعد الأحرف وغيرها، وتحفظ أن الرقم موجود بعد كذا حركة من بداية السطر .. أو شيء من هذا القبيل وبما أنني أحب التفكير معكم بصوت مرتفع قلت في نفسي: لو كان الرقم بين رموز خاصة لا تستخدم في هذا الجدول إلا لهذا الغرض: الإحاطة بالرقم المطلوب لعملية الانتقال .. هل يجعل هذا عمل الكود أفضل إذ يبحث عن هذا الرمز فيصل للرقم مباشرة .. أم أن الأمر ليس كما ظننت ؟؟ تم تعديل يناير 14, 2021 بواسطه nssj
jjafferr قام بنشر يناير 14, 2021 قام بنشر يناير 14, 2021 في 14/1/2021 at 20:18, nssj said: لكن لابد من عمل تحديث، أو الخروج من الصفحة والعودة إليها ليتم استيعاب هذه التحديثات والانتقال للرقم Expand ما فهمت اي تحديث تتكلم عنه ، ورجاء ، اعطني مثال بالشيء الذي تريده ، فأنا لا افهم المصطلحات !! في 14/1/2021 at 20:18, nssj said: {} .. أنا كنت أستفسر منك إن كان وضع الرقم بين رموز أو أقواس خاصة يسهل العملية Expand لو عملت هذا في بداية الامر ، لعملت الكود على هذا الاساس ، اما الآن فلا داعي له ، إلا اذ اردت ان يكون البحث عن اي شيء بين القوسين ، يعني ارقام وحروف مثلا ، او حروف فقط. في 14/1/2021 at 20:18, nssj said: يبدو لي أن الدالة تبحث عن الرقم بأن تقوم بعد الأحرف وغيرها Expand الدالة تنطلق من المكان الذي نقرت عليه في السطر ، تنظر الى الوراء الى 10 (ويمكنك تعديله في الكود) حروف ، فأذا وجدت رقم ، تأخذه ، واذا اذا وجدت حرف توقف ، ثم تنظر الى الامام 10 حروف ، فأذا وجدت رقم ، تأخذه وتضيفه الى الارقام السابقة ، واذا اذا وجدت حرف توقف ، جعفر
nssj قام بنشر يناير 14, 2021 الكاتب قام بنشر يناير 14, 2021 في 14/1/2021 at 20:44, jjafferr said: ما فهمت اي تحديث تتكلم عنه ، ورجاء ، اعطني مثال بالشيء الذي تريده Expand عندما أضفت عبارة (من طريق يونس) ثم كبست على الرقم خرجت الرسالة .. لا بد أولا من (تحديث الكل) أو الخروج من الحقل والعودة إليه لينتقل .. في 14/1/2021 at 20:44, jjafferr said: لو عملت هذا في بداية الامر ، لعملت الكود على هذا الاساس Expand لو كنت أعلم أن ذلك ييسر الأمر لأرسلت لك الملف على هذا الأساس 🙂 .. أنا لم أكن أعلم أصلاً أن هذا ممكن .. فأحسن الله إليك
تمت الإجابة jjafferr قام بنشر يناير 15, 2021 تمت الإجابة قام بنشر يناير 15, 2021 في 14/1/2021 at 21:05, nssj said: عندما أضفت عبارة Expand تم حل هذه الاشكالية بالمرفق الجديد ، فيصبح حدث النقر المزدوج في الحقل: Private Sub EH_DblClick(Cancel As Integer) Dim lng_Mno As Long 'send the "UnSaved Text" (to retain the text position as is), and the click position to the Function Get_Number 'to retrieve the number clicked on lng_Mno = Get_Number(Me.EH.Text, Me.EH.SelStart) 'once the Function returns the value, examin it If lng_Mno = 0 Then MsgBox "لم يتم الحصول على رقم" ElseIf lng_Mno = 1 Then MsgBox "لم يتم التعرف على الخطأ" Else DoCmd.OpenForm "مسند", , , "[Mno]=" & lng_Mno End If End Sub والدالة في الوحدة النمطية: Option Compare Database Option Explicit Public Function Get_Number(fld As String, P As Long) As Long On Error GoTo err_Get_Number ' 'fld = Field content 'P = Position left mouse was double clicked in the field 'max_Length = maximun length of numeric field, default is 10 on each side = 20 characters 'C = the character to check 'Add_C = Adds the numeric Characters ' '1. check the characters to the Left <----| '2. check the characters to the Right |----> ' ' jjafferr ' v.1 : 21-01-13 : initial re;ease ' v.1.1 : 21-01-14 : added error traping for noe numeric values ' Dim i As Integer Dim Add_C As String Dim C As String Dim max_Length As Integer max_Length = 10 'What dose Access Read: -10 to 10 = 20 letters/characters 'C = Mid(fld, P - max_Length, max_Length) & vbCrLf & Mid(fld, P + 1, max_Length) 'Debug.Print C 'Get the numbers on the Left side of the click For i = P To (P - max_Length) Step -1 C = Mid(fld, i, 1) 'loop through the characters one at a time If IsNumeric(C) Then 'test the character to our condition Add_C = C & Add_C 'passed the condition, Concatenat it Else Exit For 'did NOT pass the condition, get out of the loop End If Next i 'Debug.Print Add_C 'Get the numbers on the Right side of the click P = P + 1 For i = P To (P + max_Length) C = Mid(fld, i, 1) If IsNumeric(C) Then Add_C = Add_C & C Else Exit For End If Next i 'Convert the concatenated string to Long, and 'return the number value Get_Number = CLng(Add_C) Exit_Get_Number: Exit Function err_Get_Number: If Err.Number = 13 Then Get_Number = 0 ElseIf Err.Number = 5 Then Get_Number = 1 Else Get_Number = 1 MsgBox Err.Number & vbCrLf & Err.Description End If 'don't break the code, so Resume by exiting from the Function Resume Exit_Get_Number End Function في 14/1/2021 at 21:05, nssj said: لو كنت أعلم أن ذلك ييسر الأمر Expand انا لم اقل هذا ، وإنما قلت في 14/1/2021 at 20:44, jjafferr said: و عملت هذا في بداية الامر ، لعملت الكود على هذا الاساس ، اما الآن فلا داعي له ، إلا اذ اردت ان يكون البحث عن اي شيء بين القوسين ، يعني ارقام وحروف مثلا ، او حروف فقط. Expand جعفر 1326.2.Get Number between text.accdb.zipFetching info... 1
nssj قام بنشر يناير 15, 2021 الكاتب قام بنشر يناير 15, 2021 الأخ الكريم جعفر .. تم المطلوب بحمد الله .. وجزاك الله خيراً
الردود الموصى بها
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.