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

تقرير يعرض ما تم اختياره من Listbox فقط

بدأه طه محمد حامد في 25 مارس 2008 · 5 رد · 1,267 مشاهدة · في قواعد بيانات Microsoft Access
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

علي سبيل المثال تم البحث عن (حمد)

فظهرت النتائج (محمد - احمد - حمد - حمدون - حمدان)

فقمت باختيار (احمد - محمد - حمد) عن طريق select بالماوس

اريد التقرير أن يعرض ما اخترته فقط أي (احمد - محمد - حمد) وليس (محمد - احمد - حمد - حمدون - حمدان)

ولكم جزيل الشكر

report_by_selection.rar

Toty_Retos

(المبرمج الصغير)

#3

نعم هذا بالضبط ما اريده وزادكم الله علما ونفعكم به

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

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

Toty_Retos

(المبرمج الصغير)

#4

اخي الفاضل طه

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

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

Dim db As DAO.Database
Dim qdf As DAO.QueryDef
Dim strSQL As String, strWhere As String
Dim i As Integer

Set db = CurrentDb

strSQL = "SELECT tblTest.* FROM tblTest "
strWhere = "Where strName IN( "
For i = 0 To List0.ListCount - 1
	If List0.Selected(i) Then
		strWhere = strWhere & "'" & List0.Column(1, i) & "', "
	End If
Next i
strWhere = Left(strWhere, Len(strWhere) - 2) & ");"
strSQL = strSQL & strWhere
MsgBox strSQL
db.QueryDefs.Delete "qryMyQuery"
Set qdf = db.CreateQueryDef("qryMyQuery", strSQL)

DoCmd.OpenReport "Report", acViewPreview

نلاحظ من بداية اسطر الكود انه تم التصريح عن قاعدة البيانات وكذلك التصريح عن استعلام بواسطة DAO

ايضا تم التصريح عن جملة الإستعلام strSQL كجملة نصيه وكذلك المعيار strWhere الذي سوف نبحث من خلاله عن القيم اثناء اختيار الأسماء من مربع القائمة

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

ننتقل الآن الى جملة الإستعلام strSQL والتي تمثل طبعا جميع حقول الجدول الخاص بنا وهو tblTest

والمعيار strWhere هو عبارة عن استعلام فرعي مصغر لحقل الإسم حيث استخدمنا معه العبارة IN

بمعنى اننا نقول لجملة الإستعلام اظهري لنا الأسماء المتوافقة فقط مع ما يتم اختياره من القائمة لهذا المعيار

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

post-15367-1206459875_thumb.gif

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

نصل الآن في الكود الى مرحلة العد بواسطة العبارة FOR حيث يتم التأكد من عدد السجلات المطلوب اظهارها وتكون مطابقة لما في المعيار بدون زيادة ولا نقصان لكل سجل حيث يتم الإنتقال الى السجل الأخر بواسطة العبارة Next

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

هذا تقريبا شرح مبسط لما يتم عمله خلال الكود .

#5

السلام عليكم

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

معك حق اخي طه

جزاك الله خير زهرة منتدانا الغالي على هذا الحل والشرح الرائعين.

#6

الاخت الغالية المنقذة زهرة

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

انا لاحظت اني اذا اخترت مثلا حرف "م" يجيب الاسماء التي فيها حرف الميم وهذا جميل وبعد ان اقم بالضغط على الاسماء التي اريدها

ارجع الى القائمة واختار حرف اخر مثلا "ك " واختار ايضا اسماء اخرى

وعندما اعمل معاينة اجد انه ثبت ماتم اختياره على الحرف الاخير وهي الاسماء التي بها حرف "ك"

كل ما اريده هو ان يضل يثبت على كل الاسماء التي اقوم باختيارها ولا يتم الغاء شيئا منها الا عندما اقوم انا بالغاء اختياره مرة اخرى

ولو تمكنت وهذا اكيد من اضافة كل مايتم اختياره الى list اخرى غير منظمه بحيث يكون هناك عمل زر المعاينة لما تم اختياره وفي حال وجود خطأ في الاختيارات يتم ارجاع الاختيار الى list الاولى لكان افضل واجمل

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

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…