السلام عليكم
أخواني الكرام لدي هذا البرنامج للرسائل
ما أريده هو كيف أجعل هذا البرنامج يبحث في subject-letter بالكلمة دون الحاجة الى كتابة العنوان كاملاً.
مثلاً يبحث بكلمة places
السلام عليكم
أخواني الكرام لدي هذا البرنامج للرسائل
ما أريده هو كيف أجعل هذا البرنامج يبحث في subject-letter بالكلمة دون الحاجة الى كتابة العنوان كاملاً.
مثلاً يبحث بكلمة places
أخواني الكرام ألا يوجد حل لهذه المشكلة؟؟
أشكرك وبارك الله فيك.
بس لماذا هذا الكود يظهر بلغة غير مفهومة؟؟
Case Is = "ÈÍË ÈÇáÑÞã"
تفضل هذا المثال لطريقة البحث بجزء من الكلمة
وهذا هو الكود المستخدم لاداء هذه العملية
Private Sub Text8_Change()
Dim ct As String * 1
Dim ss As String * 1
'On Error Resume Next
ct = """"
ss = "*"
Me.Text8.Tag = Me.Text8.Text
Me.RecordSource = "SELECT * FROM tbl1 WHERE Tbl1.PR LIKE " & ct & ss & (Nz(Me.Text8.Tag)) & ss & ct & ""
If Me.RecordsetClone.RecordCount = 0 Then
Me.Detail.Visible = False
Me.RecordSource = ""
Else
Me.Detail.Visible = True
End If
Me.Text8 = Me.Text8.Tag
Me.Text8.SetFocus
SendKeys "{f2}"
Me.Refresh
End Sub

أشكرك أخي وبارك الله فيك
طبقت الكود على البرنامج ولكن لأسف لم يعمل.
ما أريدة فى letter subject أن أستطيع أن أبحث أو يظهر لى العناوين التي تحتوي على نفس ال subject
مثل كلمة places .
السلام عليكم ورحمة الله وبركاته ،،
تحية طيبة الى كافة الاعضاء المشاركين ولا سيما المشرف العزيز استاذنا / محمد بيه..
تحية الى الأخت الفاضلة النور ،،
على الرغم من وجود ملاحظات على طريقة البحث التي تريدنها من حيث انها غير عملية (رأي الخاص).. إلا من الممكن تجربة الكود التالي في زر search
في حدث عند النقر :
Private Sub CmdSearch_Click() On Error Resume Next Dim SreCH As String Dim SreCH2 As String SreCH = "*" & txtSearchSubject & "*" SreCH2 = "*" & txtSearchREF & "*" If Not (txtSearchSubject = "") Then Me.Filter = "Letter_Subject like '" & SreCH & "'" Me.FilterOn = True ElseIf Not (txtSearchREF = "") Then Me.Filter = "Letter_Ref like '" & SreCH2 & "'" Me.FilterOn = True Else Me.FilterOn = False End If End Sub
الصورة توضح النتيجة :
ترجمة ع السريع :
SreCH = متغير نصي الاول
SreCH2 = متغير النصي الثاني
txtSearchSubject =اسم عنصر غير منظم على النموذج الخاص بـ ( subject).
txtSearchREF = اسم عنصر غير منظم على النموذج الخاص بـ (REF)
Letter_Subject = اسم الحقل (Letter_Subject ) الذي يحتوي المعلومات وليس اسم عنصر تحكمه .. انتبهي ..
Letter_Ref= اسم الحقل لـ (Letter_Ref) الذي يحتوي المعلومات وليس اسم عنصر تحكمه .. انتبهي
انتهت العملية وبامكانك التجربة مع المرفق بعد التعديل
مشكاة
أشكرك أخي وبارك الله فيك.
أخي الكريم أتمنى أن يكون صدرك واسعاً لسؤالي
لقد حاولت في الملف الذي أرفقته بعد التعديل أن أضيف بحث ب To-From و Date
بحيث أعمل SreCH4 و SreCH3
بحيث أجعله يبحث ايضا Date و TO-From مثل الملف الذي أرفقتة ولكن لم يعمل البرنامج.
أرجو المساعدة.
السلام عليكم ورحمة الله ،،
بالنسبة الى سؤالك بطلب اضافة عنصر ثالث ورابع للبحث على الرغم من اني أشرت سابقا الى :-
اقتباسعلى الرغم من وجود ملاحظات على طريقة البحث التي تريدها من حيث انها غير عملية (رأي الخاص)..
انظر الى الكود التالي:-
Private Sub CmdSearch_Click() On Error Resume Next Dim SreCH As String Dim SreCH2 As String Dim SreCH3 As String Dim SreCH4 As String SreCH = "*" & txtSearchSubject & "*" SreCH2 = "*" & txtSearchREF & "*" SreCH3 = "*" & txtSearchToFrom & "*" SreCH4 = "*" & TextDate1 & "*" If Not (txtSearchSubject = "") Then Me.Filter = "Letter_Subject like '" & SreCH & "'" Me.FilterOn = True ElseIf Not (txtSearchREF = "") Then Me.Filter = "Letter_Ref like '" & SreCH2 & "'" Me.FilterOn = True ElseIf Not (txtSearchToFrom = "") Then Me.Filter = "From_To like '" & SreCH3 & "'" Me.FilterOn = True ElseIf Not (TextDate1 = "") Then Me.Filter = "Date_Letter like '" & SreCH4 & "'" Me.FilterOn = True Else Me.FilterOn = False End If End Sub
الفكرة تقوم بتعريف متغيران هما
Dim SreCH3 As String
Dim SreCH4 As String
وتقوم بإضافة elseif لكل حقل مع ملحقاتها وتنتهي المشكلة ....
ومرفق التعديل الثاني
مشكاة
أشكرك أخي الكريم
هل لك أن توضح لي ما هو المفترض أن يكون لكي تكون طريقتي عمليه وسلسة في عملية البحث؟
أشكرك على تعاونك.
تحية طيبة يا أخ نور ..
الجزء الأول :- الحمد لله ان سؤالك تم الاجابة عليه ..
الجزء الثاني :
اقتباسهل لك أن توضح لي ما هو المفترض أن يكون لكي تكون طريقتي عمليه وسلسة في عملية البحث؟
راح أعطيك home Work هو عبارة عن مثال لمشرفة بالمنتدى فيه طريقة للبحث سهله وحلوه .. وتقوم أنت بتطبيقه على قاعدة بياناتك letter أوكي..اذا موافق (أكمل..)
وبعد ان تقوم بتطبيق المثال على القاعدة تصبح لدينا طريقتين للبحث .. تقوم برفع المثال لنرى النتيجة .. يا ناجح .. أو ناجح وبعد ذلك تختار منها الطريقة الأنسب .. ماشي يانور ..!!
طيب اليك شروط الاختبار :D :-
1- النقل من الامثلة مسموح..
2- الاستفسار عن النقاط المبهمة في الاختبار ايضا مسموح ..
3- الوقت مفتوح..
وشكرا
اخوك مشكاة
أنا موافقة وسأبداء معك بالتدريج لأني أريد أن أتعلم كل ما هو صحيح.
شكرا مرة أخرى على مبادرتك الرائعة.
أخي الكريم لقد قمت بتصميم البرنامج على حسب الخطة التى رسمتها لى
ولكن الشئ الذي لم أخبرك به هو أنني أصمم هذا البرنامج لمشروع يضم مئات الألف من الرسائل
لذالك أجده من السهل علي عندما أبحث عن رساله ما أن أحدد To from و subject وRef و Date
ثم في النهاية أجري عملية البحث بعد تحديد المواضيع السابقة.
مثلاً أتذكر أن الرسالة جأت في شهر 6 فأريد هنا تحيد ال Date . ما هو رأيك؟
ثم ما أريده هو أن أستطيع أن أبحث في subject عن طريق الكلمة بحيث أنني في بعض الأحيان لا أتذكر العنوان بالكامل فأبحث عن طريق أدخال الكلمة التي أتذكرها فتظهر كل العناوين التي تحتوي على نفس الكلمة. شكرا
تحية طيبة يا نور..
بسم الله ماشاء الله .. بدأ القطار يسير على السكه!!
أولا:- عمل ممتاز وموفق .. وتستحقين :clapping:
ثانيا :- بالنسبة للطلبات الأخرى سنأتي لها بالتفصيل ولكن .. في البداية سنتعلم هذه الطريقة ثم ننتقل خطوة خطوة الى طرق أخرى .. أوكي؟!!
ثالثا: المطلوب الآن على نفس البرنامج تقومين بتوسعة عملية البحث بحيث تشمل جميع الحقول كما في الصورة ..
رابعا:-كمساعدة سيتم ارفاق مثال آخر يحاكي نفس الفكرة ..
ستقومين بالتطبيق ورفع الملف .. ماشي يانور..!!
ونحن بالانتظار
مرفق الملف الثاني
مشكاة
السلام عليكم ،،
تحية طيبة ،،
ماذا حصل لنور ؟ أكيد ضاعت في الارشيف !!
عالعموم انا كنت حاب ان يكون التدريب بالتدريج وباستخدام نفس الأمثلة والافكار ونقوم بالبناء عليها الى ان نصل لطريقة البحث الأفضل ليتسفيد منها القارئ واعضاء المنتدى الكرام.. ولكن تجري الرياح بما لا تشتهي السفن ..وللفائدة سنقوم بالتعديل على المثال المرفق من نور ليشمل مرحلتين كالتالي:-
المرحلة الأولى البسيطة :
سيتم التغيير على المثال وبنفس المميزات مع القدره على تحديد الحقل الذي يتم البحث من خلاله من خلال اضافة مربعات نص وربطها بالاستعلام مع عمل اللازم.
المرحلة الثانية متطورة قليلا:
1- اضافة مربع سرد لإختيار الحقل الذي سيتم البحث من خلاله ..
2- اضافة زر بحث والغاء ميزة البحث عند التغيير ..
3- اضافة مجموعه خيار تحدد كيفية البحث في النص ( يبدأ بـ .. يحتوي .. ينتهي ..)
4- اضافة زر عرض التقرير للبيانات
هذه الخطة ونتوكل على الله
مشكاة
تابع ...
المرحلة الأولى وهي مرحلة بسيطة جدا تعتمد الفكرة على توزيع البحث من خلال عدة مربعات نص يخصص كل مربع نص لحقل نريد البحث من خلاله.. فلا يكون البحث عام وبدون تركيز.. كما في الصورة ..
وفائدة هذه الطريقة هي أننا نستطيع اضافة شروط أخرى مع الشرط الأول وذلك بسبب استخدام and وليس or كما هو موضح بالصورة التالية :
ملاحظة:
1- الحقل الاول يتم البحث به عند اجراء حدث التغيير كما كان في السابق ..
2- الحقل الثاني الى السادس يجب الضغط على ( بحث ...) للتحديث .. طبعا بالامكان فعل ذلك بطرق مختلفة ولكن للتسهيل..
3- تم اضافة زر معاينة التقرير
ومرفق التعديل للمرحلة الاولى..
مشكاة
تابع ..2
المرحلة الثانية :-
افترضت طبعا ان البحث سيكون خلال آلاف الرسائل ولذلك السرعة مطلوبة وبناء عليه سيتم الغاء الاستعلام في هذه المرحلة ولن نعتمد عليه ونستبدله بـ.. SQL
مع اجراء عملية تجميل بسيطة من خلال تحويله الى VBA لتقوم بالمهمة كلها.. كيف؟
الكود جديد من حيث اداء المهمة وحساس من ناحية ("") الهلالين وعوامل التشغيل .. ويتميز بالقدرة على المناورة في تحقيق نتيجة البحث..
( طبعا قاعد امدح الكود واضح :D )..
توضح الصورة الآن التعديلات الجديده ..
ميزة البحث يبدأ بـ .. ويحتوي على .. نتائجها كما في الفلاش المرفق
طيب نأتي الى طريقة العمل :
1- اضافة مربع تحرير وسرد وليكن اسمه في مثالنا هذا ftxt ونوع مصدر الصف ( قائمة الحقول) ومصدر الصف هو الجدول Letters
2- اضافة مجموعة خيار كما هي موضحه بالصورة اعلاه ..وليكن اسمه srchOption
3- اضافة زر بحث وليكن اسمه SrchCmd ونضع هذا الكود فيه
Dim strSql As String
Dim CrtTxt As String
Select Case srchOption
Case 1
CrtTxt = ("txtSearch & ""*""")
Case 2
CrtTxt = ("""*"" & txtSearch & ""*""")
Case 3
CrtTxt = ("""*"" & txtSearch ")
End Select
If ([ftxt]) <> "" Then
strSql = "SELECT Letters.File_No, Letters.Letter_No, Letters.Letter_Ref, Letters.Letter_Subject, Letters.From_To, Letters.Date_Letter, Letters.Date_Receive " & vbCrLf & _
"FROM Letters " & vbCrLf & _
"WHERE " & ftxt & " Like " & CrtTxt & ";"
Me.SearchList.RowSource = strSql
Refresh
Else
MsgBox "يجب اختيار حقل للبحث"
Me.ftxt.SetFocus
End Ifطبعا التوضيح هنا مهم جدا ..
ترجمة الكود
strSql= تم تعريفها كنص وسيتم استخدامها لإختصار عبارة SQL للإستفادة منها كمصدر لقائمة البحث ..
CrtTxt=تم تعريفها كنص مهمتها تبديل طريقة البحث يبدأ .. يحتوي .. ينتهي .. كما سنرى ( متابع يا أخي الفاضل ولا تشرب كاسة شاي.. متابع أكمل..)
txtSearch= اسم مربع النص المخصص لكاتبة قيم البحث فيه ..
ftxt= اسم مربع التحرير والسرد تم الاشارة اليه اعلاه ووظيفته يقوم بسرد الحقول ليتم اختيار احدها..
طبعا السر كله يكمن في تشكيل عبارة SQL المحولة الى VBA
لا حظ في البداية لا توجد أي مشكلة select واسماء الحقول التي نريدها هذه بسيطه..
from ايضا تحديد المصدر وهذه بسيطه
vbCrLf = وظيفتها اضافة سطر لا تهتم لها فالبرنامج الذي يقوم بالتحويل يفعل ذلك آليا ..( تم الاشارة اليه اعلاه)
where هي الاساس في كل ماسبق وهي اضافة اسم الحقل من خلال (" & ftxt & ") ملحوقا بالشرط من خلال (" & CrtTxt & ") وبدون هذه الطريقة ستظطر الى تكرار العبارة على عدد الحقول والشروط ..طبعا هذا مزعج ويدوخ :wacko: ..
تبقى الاشارة الى :
1- ("txtSearch & ""*""")= الهلال والنجمة ألحقت بعد txtSearch وتعني البحث من أول أي حقل
2-("""*"" & txtSearch & ""*""")= الهلال والنجمة بعد وقبل txtSearch وتعني البحث من أول أو وسط أو نهاية أي حقل (يحتوي).
3- ("""*"" & txtSearch ")= الهلال والنجمه قبل txtSearch وتعني البحث من نهاية الحقل..
طبعا يتم اضافة ""*"" أربع أهله ليتم ترجمتها كـ (*) في عبارة الـ VBA
Me.SearchList.RowSource= اسم مصدر القائمة SearchList متبوع بدالة تحديد المصدر وتساوي عبارة strSql التي تم تعريفها.
تقريبا هذا كل شيء....
وتحية لكم
مشكاة
تم تعديل هذه المشاركة بواسطة Mishkat ibrahim في 6 يونيو 2008 في 12:28
تحية طيبه وبعد ،،
علشان خلص ضميري ..
تم اضافة ميزة الفرز تصاعدي وتنازلي حسب الحقل المختار.. كما هو موضح ..
ومرفق التعديل الأخير
مشكاة
أشكرك أخي وبارك الله فيك
والله ما كان أقصد أن أهمل التواصل معاك وكان يجب علي أن أوضح أن نهاية الأسبوع عادة أكون بعيدة عن النت.
أخي الكريم بارك الله فيك وجعل هذة الأعمال في ميزان حسناتك. بصراحة أستفدت منك كثيير.
شكرااااااا أخي.
أخي الكريم حتى أستفيد أكثر أردت أن أطبق البرنامج بنفسي
لكن لا أدري لماذا لم يعمل حاولت أن أصل الى الخظأ بنفسي ولكن لم أستطيع
هل لك أن تساعدني.
لدي سؤال أخر : لماذا أظفت جدول ثالث sd: .
شكراً
السلام عليكم ورحمة الله وبركاته ،،
تحية طيبة يا نور ،،
اولا : الحمد لله ان اليوم الاثنين يعني باقي على week end تقريبا (3) ايام وهذا يعني ان النت موجود..
ثانيا :اطلعت على المثال المرفق من قبلك طبعا فيه لخبطه في اجزاء بسيطه وهذا يدل على حاجتك لمعرفة مكونات الأكسس وأنا بالي طويل لا تحاتي ..
ثالثا: بالنسبة للجدول sd صراحة كنت فاضي وقلت لنفسي اذا نور شاطره راح تسأل عنه .. وإذا كانت ليست شاطره سوف تهمله .. طبعا طلعت شاطره وسألت عنه وهذا الجدول عبارة عن نسخة عن الجدول Letters فقط لاغير بإمكانك ان تمسحيه وبلا رجعه ..أوكي!!
رابعا:- توجد ملاحظات على الطريقة التي عملت البرنامج حيث ان هدفك هو التعلم سنأتي لها .. إن شاء الله بعد قليل ..
يتبع .............
مشكاة
تابع ....
تحية طيبة ،،
أولا:- مرفق ملف فلاش خطوة بخطوة لعمل المثال وأكيد راح تكتشف الخطأ بنفسك ...
ثانيا :- الملف بعد التعديل على الاخطاء .. هو home work أوكي ..
ثالثا:- اذا كان يوجد استفسار على الرحب والسعة ..
مشكاة
تم تعديل هذه المشاركة بواسطة Mishkat ibrahim في 9 يونيو 2008 في 20:14
أخي الكريم أرجو المعذرة
ولكن عندما أختارOption Group
لا تظهر لي شاشة للمتابعة حاولت أكثر من مرة ولكن دون فائدة.
السلام عليكم ورحمة الله وبركاته ،،
عذرا ع التأخير بسبب فترة الامتحانات
أولا:- لكي يعمل الاكسس عندك بشكل ممتاز يجب التأكد من :
1- هل نسخة مايكروسوفت اوفس المثبته لديك 2003 او اصدار قديم ؟
2- هل تم تثبيت نسخة الاكسس 2003 تثبيت تام أو تثبيت مخصص او تثبيت عادي؟
طبعا انا لا أطلب الاجابة ولكن اعطيك مؤشرات على موضع الخلل فقط لاغير ..
ثانيا:- نأتي الى المشكلة التي صادفتك
اقتباسولكن عندما أختارOption Group لا تظهر لي شاشة للمتابعة حاولت أكثر من مرة ولكن دون فائدة.
لا توجد مشكلة هنا حتى لو لم يظهر المعالج .. نقوم بالتالي:-
1- اختيار Option Group
2- اختيار زر خيار
3- افلات الزر داخل المربع ( ملاحظة ستجد المربع يتغير لونه الى الأسود)
فقط وتنتهي المشكلة ..
ومرفق فلاش يوضح الخطوات خطوة خطوة..
مشكاة