الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

*فورم* اكتب وابحث مباشرة

مغلق
بدأه ابوحمود في 3 أكتوبر 2001 · 40 رد · 7,599 مشاهدة · في قسم الأرشيف و المواضيع المميزه
مشاركة: واتساب X فيسبوك تيليجرام
#26

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

الأخ ابو لمى

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

If نموذج_فرعي_جدول_الرئيسي.Form.RecordsetClone.RecordCount = 0 Then MsgBox "لا يوجد سجلات ..."

كما ينقص المثال إظهار كافة السجلات بعد ظهور رسالة عدم وجود سجلات بدلا من الإضطرار لمسح الاسم .

الأخ طالب علم

جزاك الله خيرا ونفع بك .

ولك تحياتي

#27

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

أخي/ أبو حمود

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

بل ما أروع من قام بتصميم الكود ، فلله درك ورزقك الله كل خير.

ولك تحياتي.

ibnmusqat.gif
#28

أخي أبو حمود

أنا عارف أني أزعجتك ولكن تحملنا

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

أشرف خليل

http://mypage.ayna.com/ashrafk/search1.zip

#29

الأخ أشرف : قاعدة بيانات جميله ، وأظن أنها تحتاج إلى أن تغير "نتيجة_البحث" في النموذج من مربع نص إلى تسمية بنفس الاسم أو تغير في الكود ، وأنا قد غيرت مربع النص إلى تسمية وكانت النتيجة جيدة، وننتظر رأي أستاذنا أبو حمود .

الأخ أشرف : أرسلت لك رسالة على بريدك في أين .

#30

الأح أشرف

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

الأخ ابن مسقط

حياك الله وجزاك الله خير .

وللجميع التحية

#31

أخي الحارث :

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

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

أخي العزيز أبو حمود :

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

أشرف خليل

#32

الأخ أشرف

أسأل الله أن يزيدك علما ويوفقك لكل خير .

لقد وضعت في الكود عند ضغط Enter إنتقال للسجل التالي فلا تحتاج لوضع أزرار تنقل .

الأمر الآخر هل تظهر لك مشكلة عند وصولك للسجل الأخير ثم نقرت زر الإنتقال للسجل التالي أو كنت في السجل الأول ثم نقرت زر الإنتقال للسجل السابق وكيف حليت هذه المشكلة ، إذا كان الجواب لا فاكتب كود أزرار الأمر .

ولك تحياتي

#33

أخي أبو حمود

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

ما لم يعمل معي هو الضغط على زر enter لذلك عملت هذه الأزرار وفعلا ظهرت لي مشكلة كما تقول وحليت مشكلة التالى بهذا الكود

If (Eval("[Forms]![sTUDENTS]![st_name] Is Not Null")) Then

DoCmd.GoToRecord , "", acNext

End If

أما مشكلة السابق فلم تنحل .

وممكن أن أترك شريط التمرير بدلا من هذه الأزرار

وما رأيك

أشرف خليل

#34

أخي أبو حمود

آسف جدا أخي العزيز

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

وأشكرك كثيرا ,مرة أخرى آسف جداجداجدا

أشرف خليل

#35

الأخ أشرف

الحمد لله أنه أشتغل ، وأنا مشكلتي أني في الشرح ضعيف ولذلك أنسى بعض الأشياء المهمة بسبب أنني عملتها في بعض الأحيان في بداية التجارب فلذلك قد لا أذكرها حتى تظهر مشكلة عند أحد .

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

لقد توقعت أن يكون عندك مشكلة في التنقل ولذلك سألتك عنه .

أبسط حل وأسرعه باستخدام عبارات اعتراض الخطأ كالتالي :

On Error Resume Next

DoCmd.GoToRecord , , acNext

و

On Error Resume Next

DoCmd.GoToRecord , , acPrevious

فالعبارة On Error Resume Next معناه انه عند حدوث خطأ في سطر ما أكمل الإجراء بالإنتقال للسطر الذي بعده دون توقف .

طبعا استعمال هذه العبارة دائما قد يسبب لك مشاكل خاصة إذا كنت مازلت في مرحلة التجريب لأنك لا تدري أين موضع الخطأ ولذلك يفضل استخدم جملة اعتراضية كـ On Error GoTo كالتالي :

On Error GoTo Err_التالي

DoCmd.GoToRecord , , acNext

exit_خطأ:

Exit Sub

Err_التالي:

MsgBox "أنت الآن في السجل الأخير ، لايمكن الإنتقال للسجل التالي .", vbCritical + vbMsgBoxRight + vbMsgBoxRtlReading

Resume exit_خطأ

On Error GoTo Err_السابق

DoCmd.GoToRecord , , acPrevious

exit_خطأ:

Exit Sub

Err_السابق:

MsgBox "أنت الآن في السجل الأول ، لايمكن الإنتقال للسجل السابق .", vbCritical + vbMsgBoxRight + vbMsgBoxRtlReading

Resume exit_خطأ

End Sub

هناك طريقة أخرى بربط الإنتقال بـ RecordsetClone وعمل MoveNext و MovePrevious ولكنها أعقد من الطريقة السابقة .

وللجميع التحية

#36

الأخ أشرف : الرسالة أرسلتها للعنوان التالي :

ashrafk@ayna.com

أخذت العنوان من عنوان صفحتك ، وفقكم الله

#37

لحفظ الأسماء المبحوث عنها حتى لاتكرر كتابتها عند الاحتياج إليها مرة أخرى وهذه الطريقة تشبه طريقة حفظ البحث في مربع حوار بحث الخاص بالأكسس Ctrl+f :

حول مربع النص لقائمة منسدلة ونوع مصدر الصف لها قائمة القيم وإلتزام بالقائمة إلى لا ثم ضع في آخر حدث اكتب وابحث الكود التالي :

If KeyCode = 0 And Shift = 0 Then Exit Sub

If Len(ابحث_عن.Text & "") <> 0 And Len(ابحث_عن.Text & "") <> 1 Then

If Len(ابحث_عن.RowSource) >= 1 And ابحث_عن.RowSource <> "" Then

If ابحث_عن.ListCount > 1 Then

ابحث_عن.RowSource = Left(ابحث_عن.RowSource, _

Len(ابحث_عن.RowSource) - Len(ابحث_عن)) & ";" & ابحث_عن.Text

Else

ابحث_عن.RowSource = ابحث_عن.Text

End If

End If

Else

If ابحث_عن.RowSource = "" Then

ابحث_عن.RowSource = ابحث_عن.Text

Else

ابحث_عن.RowSource = ابحث_عن.RowSource & ";" & ابحث_عن.Text

End If

End If

وفي حدث عند النقر المزدوج ضع :

Call ابحث_عن_KeyUp(0, 0)

وإذا أردت البحث عن اسم موجود في القائمة اختر الاسم من القائمة ثم انقر مرتين متتاليتين .

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

أما إذا أردت تكرار البحث عند الضغط على Enter فضع في حدث عند التركيز :

Application.SetOption "Move After Enter", 0

وعند فقد التركيز :

Application.SetOption "Move After Enter", 1

أما إذا كنت بعد البحث تفتح نموذج آخر فضع في حدث عند نقر زر الأمر الكود التالي لغرض إضافة الاسم الى القائمة إذا كان غير موجود فيها :

في أكسس 2002 :

If ابحث_عن.ListCount <> 0 Then

If ابحث_عن.ListIndex = -1 Then ' غير موجود

ابحث_عن.AddItem Me![ابحث_عن]

End If

Else

ابحث_عن.AddItem Me![ابحث_عن]

End If

وفي أكسس 2000 :

If Len(ابحث_عن & "") <> 0 Then

If ابحث_عن.ListCount = 0 Then

ابحث_عن.RowSource = ابحث_عن.RowSource & Me![ابحث_عن]

Else

If ابحث_عن.ListIndex = -1 Then ' غير موجود

ابحث_عن.RowSource = ابحث_عن.RowSource & ";" & Me![ابحث_عن]

End If

طبعا مع عدم وضع الكود الموجود في أعلى هذا الرد .

جميع بنود القائمة ستختفي إذا أغلقت النموذج .

آمل تجريب الكود وكتابة النتيجة .

وإذا فيه أي ملاحظة أو طلب أو فكرة لتطوير الطريقة آمل الكتابة .

#38

الاستاذ الكبير ابو حمود

بارك الله فيك وجزاك الله خير

الى الاساتذة الفضلاء بارك الله فيكم على هذا التفاعل القوي والعجيب

بعد قرأتي لهذا الموضوع ( صحيح لم افهم الا القليل لاني مبتداء ) ولكني احسست انه يرد على اشكاليتي التالية

لدي جدولين جدول البيانات وفيه الحقول التالية

الاسم رباعيا

رقم البطاقة

تاريخها

وهكذا .....

الثاني

جدول الدرجات وفيه الحقول التالية

رقم البطاقة

درجة القران الكريم

درجة العلوم الشرعية

ودرجة الرياضيات

وقد عملت نموذج رقم واحد من اجل ادخال البيانات

اريد ان اعمل النموذج الثاني من الجدولين على ان يشمل الحقول التالية

رقم البطاقة

الاسم رباعيا

درجة القران

درجة الرياضيات

درجة العلوم الشرعية

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

ثم بعذ ذلك اقوم انا بتعبئة باقي الحقول من درجة القران ودرجة العلوم الشرعية الى اخرة

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

اتمنى ان تشرح لي هذه االنقطة بالذات على ضوء مثالي المذكور اعلاه

مع بسط الشرح واين اضع الكود وكيف اضعه ووشلو ن اضعة بالتفصيل الممل

مع العلم ان الاكسس عندي 2000 مع الشكر وتقديري اجميع الاخوه

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

#39

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

مشكور ابوحمود على جهودك واتمنى لك مزيد من التقدم والنجاح

لكن أنا حاولت انفذ الكود الثاني ولكنه يضع خطأ عند

.......pravet sub

وكذلك عند السطر

if len(ghgh.text&"")=0 then

ولا أعلم لماذا

ghgh كتبها بالكود الرقم

وتقبلوا خالص تحياتي

#40

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

مشكور ابو حمود على المعلومات القيمه واتمنى لك مزيد من التقدم والنجاح

ولكن أنا نفذت الكود ويظهر خطأ عند الأسطر التاليه ولاأعلم مالسبب

Private Sub ابحث_عن_KeyUp(KeyCode As Integer, Shift As Integer)

If Len(ابحث_عن.Text & "") = 0 Then

وارجو ان تخبرني مالسبب في ذلك

ولك خالص تحياتي:(

#41

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

مشكور ابوحمود على جهودك الرائعه واتمنى لك التقدم والنجاح

عندي سؤال أخوي وهو أني نفذت البرنامج ولكن يضع خطأ عند السطري التاليين ولاأعلم لماذا:

pravet sub .......

if len(رقم_العامل.text&"")=0 then

واتمنى الرد علي ..

وتقبل خالص تحياتي

هذا الموضوع مغلق.

مواضيع مشابهة