السلام عليكم ورحمة الله وبركاته :-
الطريقة التقليدية لعرض بيانات عميل مثلا ان نكتب في الاستعلام تحت رقم العميل بين قوسين اكتب رقم العميل
ثم نربطه بالتقرير وعند فتح التقرير تظهر لنا رسالة ادخال قيمة معلمة ثم نضع رقم العميل وتظهر لنا البيانات ولكن
لا نستطيع تغيير شكل هذه الرساله
فما رأيك لو انك عملت نموذج (FORM) ووضعت فيه مربع فارغ وغيرت الوانه بنفسك وخصائصه ثم عند فتح التقرير يخرج لك هذا النموذج الصغير مكتوب فيه اكتب رقم العميل المراد البحث عنه فتتكتب رقم العميل ثم تظغط على
OK ليفتح لك التقرير الا تبدو هذه الطريه اجمل
اريد ان اشرح موضوعي بإستخدام المثال التالي :-
لدي قاعدة بيانات بها معلومات عن العملاء
احمد رقمه 1
محمد رقمه 2
سالم رقمه 3
واريد عرض بيانات محمد فقط
فإن علي القيام بالآتي :-
اولا : انشاء نموذج وليكن اسمه (تحديد بيانات عميل) ثانيا :- إنشاء استعلام
ثالثاا : اشاء تقرير
رابعا:انشاء وحدة نمطية
في النموذج نضع تسمية ( لإعطاء بيانات عن العميل اكتب الرقم )
نضع مربع نص ونسميه رقم العميل افتح خصائص النموذج وفي تبويب "غير ذلك" امام خاصية منبثق حرر الى نعم
نضع زر امر ونسميه (عرض ) ونفتح خصائص زر الامر وفي التبويب حدث امام الخاصية عند النقر انقر على انشاء حدث ثم اكتب بين السطرين
Me.Visible = False
اعمل زر آخر وسمه(الغاء) وفي خصائصه في حدث عند النقر اكتب الامر
DOCMD.CLOSE
وفي خصائص النموذج تحت التبويب حدث ننقر انشاء حدث عند الفتح ونكتب بين السطرين
Me.Caption = Me.OpenArgs
نتجه الآن الى الإستعلام ةفي عرض التصميم نكتب تحت رقم العميل عبارة SQL هذه
[forms]![تحديد بيانات عميل]![رقم العميل]
نتجه الآن الى التقرير افتح خصائص التقرير وفي التبويب حدث انقر امام اجراء حدث ستفتح لك الآن نافذة فيجوال بيسك
اكتب بين السطرين :
Private Sub Report_Open(Cancel As Integer
END SUB
الكود التالي :
DoCmd.OpenForm "تحديد بيانات عميل", , , , , acDialog, "تحديد بيانات عميل"
If Not IsLoaded("تحديد بيانات عميل") Then
Cancel = True
End If
ملاحظة تبدو كتابة الكود معكوسة لذا ارجو نسخها ومن ثم لصقها في نافذة الكود في الاكسس وسوف تظهر انشاء الله بالشكل الطبيعي)
اتجه الآن الى الوحدة النمطية وقم بنسخ ثم لصق الكود التالي:-
Option Compare Database
Option Explicit
Function IsLoaded(ByVal strFormName As String) As Integer
' Returns True if the specified form is open in Form view or Datasheet view.
Const conObjStateClosed = 0
Const conDesignView = 0
If SysCmd(acSysCmdGetObjectState, acForm, strFormName) <> conObjStateClosed Then
If Forms(strFormName).CurrentView <> conDesignView Then
IsLoaded = True
End If
End If
End Function
وعند طلبك الإستفسار عن عميل وهو غير مسجل لديك يتم عرض رسالة تقول بانه لا توجد بيانات لهذا العميل
لعمل ذلك اتبع الآتي :
افتح خصائص التقرير :
في التبويب حدث وامام خاصية عند عدم وجود بيانات انقر انشاء حدث
في نافذة الكود بين السطرين :-
Private Sub Report_NoData(Cancel As Integer)
End Sub
انسخ ثم الصق الامر التالي
MsgBox "لا توجد بيانات للعميل المراد البحث عنه تأكد من صحة كتابة الرقم "
Cancel = True
اعذروني على هذه الإطالة وكنت اريد ان ارفق مثال يوضح ما سبق ولكن لم اجد خاصية ارفاق ملف .
إذا اعجبكم هذا الموضوع سوف نتابع انشاء الله كيفية عرض البيانات خلال فترة زمنية
يعني مثلا عرض تفاصيل فاتورة العميل من الفترة حتى الفترة .
وشكرا لكم .