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

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

قام بنشر

السلام عليكم اخواني الاعزاء

لدي FORMمأخوذ بياناته من جدول به عدد من السجلات

وبالخصائص ON LOAD انشأت دالة IF بالكود على مربع نص داخل الFORM

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

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

جزاكم الله خير الجزاء ان وجدت الاجابة ...

قام بنشر

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

Private Sub Form_Load()
    Me.Recordset.MoveFirst
    Do While Not Me.Recordset.EOF
        Call YourIfCondition(Me![YourTextBox])
        Me.Recordset.MoveNext
    Loop
    Me.Recordset.MoveFirst
End Sub

Private Sub YourIfCondition(txtBox As TextBox)
    If txtBox.Value = "شرط جملة اف" Then
        MsgBox "قم بتطبيق شرط اف"
    End If
End Sub

ضع جملة الشرط الخاصة بك :IIF في sub
ثم قم باستدعائها في حدث عند التحميل قم باستدعائها في حلقة تكرارية كما هو موضح في المثال

  • Like 1
قام بنشر

اثراء للموضوع و مشاركة مع أستاذي القدير   و معلمي الجليل الأستاذ @AlwaZeeR :fff:

 

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

الطريقة الأولى تعتمد على DAO.Recordset 
الطريقة الثانية تعتمد على Form.Recordset

- الطريقة التي تعتمد على DAO.Recordset تكون أكثر مرونة وقابلة للتوسع خاصة إذا كنت تحتاج للوصول إلى بيانات خارج نموذج معين أو تنفيذ عمليات أكثر تعقيدا

- الطريقة التي تعتمد على Form.Recordset تكون أكثر مباشرة وسهلة الاستخدام عندما يكون الهدف هو التفاعل مع السجلات المعروضة في النموذج الحالي

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

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

- الطريقة الأولي :

Private Sub Form_Load()
    ' تعريف متغيرات قاعدة البيانات
    Dim db As DAO.Database
    Dim rs As DAO.Recordset
    Dim strSQL As String
    Dim yourVariable As String ' المتغير العام الذي يعتمد عليه الأمر
    
    ' تعيين المتغير العام
    yourVariable = YourTextBox
    
    ' تعيين قاعدة البيانات الحالية
    Set db = CurrentDb
    
    ' SQL الاستعلام الذي يجلب كل السجلات من الجدول
    strSQL = "SELECT * FROM YourTableName"
    
    ' فتح مجموعة السجلات
    Set rs = db.OpenRecordset(strSQL)
    
    ' التحقق من أن مجموعة السجلات ليست فارغة
    If Not rs.EOF Then
        rs.MoveFirst
        ' لوب على جميع السجلات
        Do While Not rs.EOF
            ' تنفيذ الأمر بناء على المتغير العام
            If rs!FieldName = yourVariable Then
                ' هنا تضع الأمر الذي تريده
                MsgBox "Record found with your variable value!"
            End If
            ' الانتقال للسجل التالي
            rs.MoveNext
        Loop
    End If
    
    ' إغلاق مجموعة السجلات
    rs.Close
    Set rs = Nothing
    Set db = Nothing
End Sub


- الطريقة الثانية :

Private Sub Form_Load()
    Dim rs As DAO.Recordset
    Set rs = Me.Recordset.Clone
    
    rs.MoveFirst
    Do While Not rs.EOF
        If rs.Fields("YourFieldName").Value = "شرط جملة اف" Then
            MsgBox "قم بتطبيق شرط اف"
        End If
        rs.MoveNext
    Loop
    
    Set rs = Nothing
End Sub

 

وحتى لا يتم السؤال لاحقا عن اى الطريقتين افضل ! :

الكود الأول (DAO) قد يكون أكثر كفاءة إذا كنت تحتاج إلى إجراء عمليات معقدة أو تحتاج إلى التعامل مع جداول ليست مرتبطة بالنموذج
الكود الثاني (Form.Recordset) بسيط وسهل الفهم ومناسب للتفاعلات السريعة مع السجلات المعروضة في النموذج


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

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

 

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

تجنبا لمشاكل اللغة العربية مع محرر الأكواد 

قام بنشر

السادة الافاضل 

شاكرا جهودكم بالمساعدة لكني اود ان ابين بأن مربع النص عبارة عن كومبوبوكس ويحتوي على قائمة منسدلة 

ودالة IF مثبته على كل قيمة بالقائمة المنسدلة اي بما معنى اكثر من دالة IF وليست واحدة

ارفق الملف لتوضيح الموضوع اكثر علما بأن الكود مكتوب عند ON CURRENT بالفورم 

شاكر تعاونكم وسعة صدركم بالردود والمساعدة

1.accdb

قام بنشر
7 ساعات مضت, ابو جودي said:

اثراء للموضوع و مشاركة مع أستاذي القدير   و معلمي الجليل الأستاذ @AlwaZeeR :fff:

 

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

الطريقة الأولى تعتمد على DAO.Recordset 
الطريقة الثانية تعتمد على Form.Recordset

- الطريقة التي تعتمد على DAO.Recordset تكون أكثر مرونة وقابلة للتوسع خاصة إذا كنت تحتاج للوصول إلى بيانات خارج نموذج معين أو تنفيذ عمليات أكثر تعقيدا

- الطريقة التي تعتمد على Form.Recordset تكون أكثر مباشرة وسهلة الاستخدام عندما يكون الهدف هو التفاعل مع السجلات المعروضة في النموذج الحالي

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

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

- الطريقة الأولي :

Private Sub Form_Load()
    ' تعريف متغيرات قاعدة البيانات
    Dim db As DAO.Database
    Dim rs As DAO.Recordset
    Dim strSQL As String
    Dim yourVariable As String ' المتغير العام الذي يعتمد عليه الأمر
    
    ' تعيين المتغير العام
    yourVariable = YourTextBox
    
    ' تعيين قاعدة البيانات الحالية
    Set db = CurrentDb
    
    ' SQL الاستعلام الذي يجلب كل السجلات من الجدول
    strSQL = "SELECT * FROM YourTableName"
    
    ' فتح مجموعة السجلات
    Set rs = db.OpenRecordset(strSQL)
    
    ' التحقق من أن مجموعة السجلات ليست فارغة
    If Not rs.EOF Then
        rs.MoveFirst
        ' لوب على جميع السجلات
        Do While Not rs.EOF
            ' تنفيذ الأمر بناء على المتغير العام
            If rs!FieldName = yourVariable Then
                ' هنا تضع الأمر الذي تريده
                MsgBox "Record found with your variable value!"
            End If
            ' الانتقال للسجل التالي
            rs.MoveNext
        Loop
    End If
    
    ' إغلاق مجموعة السجلات
    rs.Close
    Set rs = Nothing
    Set db = Nothing
End Sub


- الطريقة الثانية :

Private Sub Form_Load()
    Dim rs As DAO.Recordset
    Set rs = Me.Recordset.Clone
    
    rs.MoveFirst
    Do While Not rs.EOF
        If rs.Fields("YourFieldName").Value = "شرط جملة اف" Then
            MsgBox "قم بتطبيق شرط اف"
        End If
        rs.MoveNext
    Loop
    
    Set rs = Nothing
End Sub

 

وحتى لا يتم السؤال لاحقا عن اى الطريقتين افضل ! :

الكود الأول (DAO) قد يكون أكثر كفاءة إذا كنت تحتاج إلى إجراء عمليات معقدة أو تحتاج إلى التعامل مع جداول ليست مرتبطة بالنموذج
الكود الثاني (Form.Recordset) بسيط وسهل الفهم ومناسب للتفاعلات السريعة مع السجلات المعروضة في النموذج


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

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

 

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

تجنبا لمشاكل اللغة العربية مع محرر الأكواد 

استاذنا الفاضل

شكري وامتناني لاهتمامكم  

ارفقت الملف مع التوضيح لاكمال جميلكم وحل الموضوع

وفقكم الله وجعلها بميزان حسناتكم 

قام بنشر
14 ساعات مضت, AlwaZeeR said:

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

Private Sub Form_Load()
    Me.Recordset.MoveFirst
    Do While Not Me.Recordset.EOF
        Call YourIfCondition(Me![YourTextBox])
        Me.Recordset.MoveNext
    Loop
    Me.Recordset.MoveFirst
End Sub

Private Sub YourIfCondition(txtBox As TextBox)
    If txtBox.Value = "شرط جملة اف" Then
        MsgBox "قم بتطبيق شرط اف"
    End If
End Sub

ضع جملة الشرط الخاصة بك :IIF في sub
ثم قم باستدعائها في حدث عند التحميل قم باستدعائها في حلقة تكرارية كما هو موضح في المثال

استاذنا الفاضل

شكري وامتناني لاهتمامكم  

ارفقت الملف مع التوضيح لاكمال جميلكم وحل الموضوع

وفقكم الله وجعلها بميزان حسناتكم 

قام بنشر

اولا :
ياريت تتعب نفسك شوية وتشرح النتيجة اللى انت عاوز توصلها بناء على المرفق

بصراحة لن اضيع وقتى مع من يبخل بوقته  :angry:

انا قمت بايقاف الاكواد اللى سببت لى مشاكل علشان احاول افهم واحلل الكود

شوف اذا التعديل مناسب 

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

وبعد وضع مرفقك تقول ان الحدث الحالى من خلاله يتحقق الشرط اذا :eek2: اذاى نهمل لوب على كل السجلات طبقا لشرط يتغير تبعا الحدص الحالى للنموذج

حذ بالط طل ده انا تاعب نفسى واحاول افهم وافهمك وانا اصلا مش فاهم :biggrin2: لانك بخيل 

 

اذا التعديل مشى معاك احمد ربنا 

واذا ما لبى طلبك اشرح وانتظر العون من احد الاساتذة الافاضل الكرام 

1.accdb

قام بنشر
في 21‏/6‏/2024 at 03:09, ابو جودي said:

اولا :
ياريت تتعب نفسك شوية وتشرح النتيجة اللى انت عاوز توصلها بناء على المرفق

بصراحة لن اضيع وقتى مع من يبخل بوقته  :angry:

انا قمت بايقاف الاكواد اللى سببت لى مشاكل علشان احاول افهم واحلل الكود

شوف اذا التعديل مناسب 

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

وبعد وضع مرفقك تقول ان الحدث الحالى من خلاله يتحقق الشرط اذا :eek2: اذاى نهمل لوب على كل السجلات طبقا لشرط يتغير تبعا الحدص الحالى للنموذج

حذ بالط طل ده انا تاعب نفسى واحاول افهم وافهمك وانا اصلا مش فاهم :biggrin2: لانك بخيل 

 

اذا التعديل مشى معاك احمد ربنا 

واذا ما لبى طلبك اشرح وانتظر العون من احد الاساتذة الافاضل الكرام 

1.accdb 716 kB · 1 download

اولا لا اعلم ما هو سبب الاسلوب التهجمي والنعت بكلمة البخيل 

ثانيا كلامك( احاول افهمك وتاعب وانا مش فاهم) ... ماكان اله داعي ياما تسوي شي لوجه الله وتطول بالك وياما ممجبور ترد

حضرتك يمكن مشرف او من ضمن مؤسسي الفريق ولو تلاحظ مكتوب بحسابي (عضو جديد)

ومن ضمن متابعتي للمنتدى لاحظت مواضيع من اعضاء تكون بها اكثر من ردود وارفاق الملف اكثر من مره وارساله الى المختصين لحين فهم الفكره

كان لازم تخلي بحساباتك انك ماتتعامل مع ناس خبره مثل حضرتك ومن الممكن اني او غيري منكدر نوصل الفكرة بالطريقة الي تريدها من اول مره 

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

عموما الملف لم يفي بالغرض للامانه والله لو اعرف انه يكون هذا ردك مكان اطلب او اشارك وهاي اول مره اطلب شي من احد بهذا المجال واخر مره 

تحياتي الك 

  • Confused 1
قام بنشر

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

اخى يا رعاك الله لا تجتزئ الكلام تركت كل الرد وفقط تعلق على الكلمة بخيل

اكثر ما اكرهه هو تصيد أخطاء الاخرين 

على كل كان توجيه في صورة مزاح

ولتعلم كل ما يقدم هنا ابتغاء مرضاة الله ولوجه الله تعالى ولا نحتسب ما نقدم الا كذلك 

اذا انت شخص جاسر وجسور ولا تفهم ولا تحب المزاح اعتذر اليك :yes: 

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

 

أخى الحبيب كن هين لين 

وبما انك عضو جديد وبما انك لك كل الحق في طرح اسئلتك لتحصل من وراء ذلك مبتغاك عليك واجبات كذلك

اذا اتبع الواجبات حتى تحصد الحقوق

اول الواجبات كان اولى بك قبل المشاركة قراءة قوانين المنتدى
https://www.officena.net/Tips/Questions.htm

والتى ستجد ضمنها على سبيل المثال والذى كان سببا فى عدم حصولك على النتيجة

اقتباس

 

8.    يجب ذكر كافة المعلومات التي من الممكن أن تُسأل عنها، مع الشرح الوافي للمشكلة لأن الشخص الذي تكتب له ليس ملما بالمشكلة مثلك. ويحبذ وضع مثال للنتيجة التي تريدها (سواء كملف مرفق باستخدام البرنامج المطلوب كالاكسيل او الأكسيس مثلا، او صورة توضيحية، أو تفصيل المطلوب بشرح وافي)، ويجب ان تكون بيانات المثال نابعة من نفس بيانات المرفق كي بمكن الربط و الفهم بسهولة.

9.    بخصوص التسميات، يُفضل أن تكون أسماء الكائنات والحقول بالإنجليزية، لان العربية تحدث فيها مشاكل مع الأكواد.

 


طيب وقبل مغادرتي 

فهم السؤال بشكل نموذجي يعين على الإجابة عليه بشكل نموذجي
فهم السؤال جيدا يوفر علينا وقت وجهد ثمينين نهدرهما

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

 

اهلا بك بين اخوانك :fff:

قام بنشر
2 دقائق مضت, ابو جودي said:

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

اخى يا رعاك الله لا تجتزئ الكلام تركت كل الرد وفقط تعلق على الكلمة بخيل

اكثر ما اكرهه هو تصيد أخطاء الاخرين 

على كل كان توجيه في صورة مزاح

ولتعلم كل ما يقدم هنا ابتغاء مرضاة الله ولوجه الله تعالى ولا نحتسب ما نقدم الا كذلك 

اذا انت شخص جاسر وجسور ولا تفهم ولا تحب المزاح اعتذر اليك :yes: 

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

 

أخى الحبيب كن هين لين 

وبما انك عضو جديد وبما انك لك كل الحق في طرح اسئلتك لتحصل من وراء ذلك مبتغاك عليك واجبات كذلك

اذا اتبع الواجبات حتى تحصد الحقوق

اول الواجبات كان اولى بك قبل المشاركة قراءة قوانين المنتدى
https://www.officena.net/Tips/Questions.htm

والتى ستجد ضمنها على سبيل المثال والذى كان سببا فى عدم حصولك على النتيجة


طيب وقبل مغادرتي 

فهم السؤال بشكل نموذجي يعين على الإجابة عليه بشكل نموذجي
فهم السؤال جيدا يوفر علينا وقت وجهد ثمينين نهدرهما

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

 

اهلا بك بين اخوانك :fff:

اشكر رحابة صدرك يمكن  الخطأ مني فهمت كلامك صورة غير صحيحة

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

وشكرا لك لتفريغ وقتك وتزويدي بالاكواد وتحميل المرفق

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

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

تقوم الاستقطاع وفقا لتاريخ معين مثلا تم الاستقطاع لشهر حزيران وضعت كود if لقرائة عند الوصول الى شهر تموز تصفر القيم تلقائيا 

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

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

قام بنشر
3 دقائق مضت, ابو جودي said:

من واقع المرفق ايه الكود اللى بينفذ طلبك اللى فى الحدث الحالى ؟؟

اي نعم كود if المتعلق بكلمة "الوقووعات"

والي بالحدث الحالي بالنموذج موجود 

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

مادري اذا اكو طريقة تتصفر تلقائيا بدون تصفح 

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