هل يمكن عرض نتائج الاستعلام بستخدام
DataGrid
هل يمكن تطبيق ذلك
نعم يمكن وسنقوم بعمل ذلك عن طريق الكود في خطوات كما يلي
جعل الشبكة من اليمين إلى اليسار بالكود التالي
Grid1.ColAlignment(0) = 3 Grid1.ColAlignment(1) = 3 Grid1.ColAlignment(2) = 1 Grid1.ColAlignment(3) = 1
توسيط عناوين الأعمدة بالكود التالي
Grid1.FixedAlignment(0) = 4 Grid1.FixedAlignment(1) = 4 Grid1.FixedAlignment(2) = 4 Grid1.FixedAlignment(3) = 4
ضبط عرض الأعمدة بالكود التالي
Grid1.ColWidth(0) = 1000 Grid1.ColWidth(1) = 800 Grid1.ColWidth(2) = 1000 Grid1.ColWidth(3) = 3000
تلوين الحقل أو الصف أو الحمود المحدد بالسطر التالي
Grid1.FocusRect = flexFocusHeavy = True
جعل عناوين للأعمدة بالكود التالي
Grid1.Col = 0 Grid1.Row = 0 Grid1.Text = "A" Grid1.Col = 1 Grid1.Row = 0 Grid1.Text = "B" Grid1.Col = 2 Grid1.Row = 0 Grid1.Text = "C" Grid1.Col = 3 Grid1.Row = 0 Grid1.Text = "D"
إنشاء وحدة نمطية على مستوى النموذج تقوم بملىء الشبكة بالبيانات كما يلي
Private Sub byanat()
Dim MyDatabase As Database
Dim MyTable As Recordset
Dim MySQL As String
Set MyDatabase = CurrentDb
Dim x As Integer
MySQL = "Select * from QR1"
Set MyTable = MyDatabase.OpenRecordset(MySQL, DB_OPEN_DYNASET)
If MyTable.RecordCount > 0 Then
MyTable.MoveLast
MyTable.MoveFirst
x = Val(MyTable.RecordCount)
Grid1.Rows = x + 2 'لتحديد عدد الصفوف في الشبكة
Grid1.Clear
FillGrid
Do While Not MyTable.EOF() 'اشتغل طالما لم يصل المؤشر الى نهايةالسجلات
For I = 1 To x
Grid1.TextMatrix(I, 0) = MyTable.Fields("A").Value
Grid1.TextMatrix(I, 1) = MyTable.Fields("B").Value
Grid1.TextMatrix(I, 2) = MyTable.Fields("C").Value
Grid1.TextMatrix(I, 3) = MyTable.Fields("D").Value
MyTable.MoveNext
Next I
Loop
End If
End Subفي حدث عند التحميل للنموذج نستدعي جميع الإجراءات السابقة كما يلي
Grid1.Clear Call TRf Call FillGrid FillGrid Grid1.Rows = 1 Call byanat
وهذه الأكواد كاملة
Private Sub TRf()
Grid1.ColAlignment(0) = 3
Grid1.ColAlignment(1) = 3
Grid1.ColAlignment(2) = 1
Grid1.ColAlignment(3) = 1
Grid1.FixedAlignment(0) = 4
Grid1.FixedAlignment(1) = 4
Grid1.FixedAlignment(2) = 4
Grid1.FixedAlignment(3) = 4
Grid1.ColWidth(0) = 1000
Grid1.ColWidth(1) = 800
Grid1.ColWidth(2) = 1000
Grid1.ColWidth(3) = 3000
Grid1.FocusRect = flexFocusHeavy = True
End Sub
Private Sub FillGrid()
Grid1.Col = 0
Grid1.Row = 0
Grid1.Text = "A"
Grid1.Col = 1
Grid1.Row = 0
Grid1.Text = "B"
Grid1.Col = 2
Grid1.Row = 0
Grid1.Text = "C"
Grid1.Col = 3
Grid1.Row = 0
Grid1.Text = "D"
End Sub
Private Sub byanat()
Dim MyDatabase As Database
Dim MyTable As Recordset
Dim MySQL As String
Set MyDatabase = CurrentDb
Dim x As Integer
MySQL = "Select * from QR1"
Set MyTable = MyDatabase.OpenRecordset(MySQL, DB_OPEN_DYNASET)
If MyTable.RecordCount > 0 Then
MyTable.MoveLast
MyTable.MoveFirst
x = Val(MyTable.RecordCount)
Grid1.Rows = x + 2
Grid1.Clear
FillGrid
Do While Not MyTable.EOF()
For I = 1 To x
Grid1.TextMatrix(I, 0) = MyTable.Fields("A").Value
Grid1.TextMatrix(I, 1) = MyTable.Fields("B").Value
Grid1.TextMatrix(I, 2) = MyTable.Fields("C").Value
Grid1.TextMatrix(I, 3) = MyTable.Fields("D").Value
MyTable.MoveNext
Next I
Loop
End If
End Sub
Private Sub Form_Load()
Grid1.Clear
Call TRf
Call FillGrid
FillGrid
Grid1.Rows = 1
Call byanat
End Subوهذا مثالك بعد عمل المطلوب
مشكور اخي كفيت وماقصرت لكن كيف يمكن وضع معيار من خلال تكست في النموذج مثل من تاريخ الى تاريخ او اي معيارمثل معايير الاستعلام حيث تظهر نتيجة المعير في الداتا جرد
حاولت لكن لم تنجح معى
السلام عليكم
الأخ الكريم مصلح الحريصي .. بارك الله فيك
رائع والله ماسطرته أناملك .. الله يعطيك العافية ياغالي
الأخت ريم السعودية في الملف المرفق تعديل على البرنامج السابق
حيث أصبح يعمل بمعيارين
الاول - اظهار النتيجة في الداتاغريد ( بين تاريحين )
الثاني - اظهار النتيجة في الداتاغريد ( بتاريخ محدد )
أتمنى لك التوفبق
EKSEER
بارك الله فيك أخي اكسير
هناك طريقة تغنيك عن إنشاء جدول وكود الإلحاق ثم عرض البيانات من ذلك الجدول كلما عليك فعله هو إسناد جملة شرط Where إلى جملة Selectالتالي:
استبدل السطر التالي
MySQL = "Select * from sdq"
بالسطر التالي
MySQL = "Select * from tab Where [Date]Between #" & Me.SearchDate & "# And #" & Me.SearchDate2 & "#"
ثم في حدث زر عرض ضع الكود التالي
Grid1.Clear FillGrid TRf Grid1.Rows = 1 Call byanat
وإذا رغبت في مزيد من خيارات البحث مثلاً تاريخ معين _فترة بين تاريخين _ بالاسم _ كلما عليك فعله هو وضع خيارات وإنشاء متغير تخزن فيه الشرط بناء على اختيار المستخدم وتسند قيمة المتغير كشرط في جملة select
أخي مصلح .. وفقك الله
طريقتك رائعة ويعلم الله انني سبق ووضعت الاستعلام المذكور
في المتغير MySQL لكن عندما فكرت في معيار البحث الثاني رأيت
أن طريقة إنشاء جدول مساعد تأتي بذات النتيجة .. وعلى العموم تعددت الحلول
والنتيجة واحدة .. ولو أن طريقتك برمجيا أسهل وأوضح .. وكل يوم نتعلم منك وفقك الله
تحياتي لك أبا سارة
أخوكم / إكسير الحياة
تم تعديل هذه المشاركة بواسطة ekseer في 2 نوفمبر 2007 في 23:20
أخي أكسير
اقتباسوعلى العموم تعددت الحلولوالنتيجة واحدة
نعم صحيح وطريتك صحيحة 100/100 وتؤدي الغرض بكل اقتدار وما أوردته هو من باب الأختصار فقط ولم أتي بجديد
اقتباسوكل يوم نتعلم منك وفقك الله
العلم أخذ وعطاء فكم استفدت منك ومن كل الأعضاء في هذا المنتدى
وفق الله الجميع لفعل الخير وكسب الأجر والمثوبة
تم تعديل هذه المشاركة بواسطة مصلح الحريصي في 2 نوفمبر 2007 في 23:03
هذا الموضوع مغلق.