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

مساعدتي في عرض حقول التقرير مع عدم وجود بيانات

مغلقمُجاب
بدأه RMsubhi في 27 أبريل 2013 · 17 رد · 678 مشاهدة · في قواعد بيانات Microsoft Access
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

اخواني الاعزاء

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

بحيث لو اردنا استخراج تقرير 1/4/2004 وحتى 30/4/2004 يضهر 8 حقول للاناث و3 حقول للذكور

سؤالي : أريد التقرير يضهر 15 حقل ثابت بحيث

عند الاستعلام يضهر 8 حقول للاناث و 7 فارغ و3 حقول للذكور و12 فارخ

وحتى لو لم تكن هناك بيانات يضهر الجدولين فارغين 15 حقل

 

مثال مرفق مع الصورة

 

 

2.rar

post-274292-0-42368400-1367039148.jpg

#2

الطريقة التي يمكنك عمل المطلوب هو:

1. عمل جدول مؤقت يضم جميع الحقول التي تريدها (اسم الذكر ، وتاريخ ميلاده ، واسم الانثى ، وتاريخ ميلادها) ، ولنسميه tbl_temp ،

2. عمل استعلام إضافة لإضافة سجلات الذكور والإناث في tbl_temp ، فلنسمي هذا الاستعلام qry_temp ،

3. عمل كود يحسب عدد السجلات في tbl_temp ، واذا كان عددها اقل من 15 ، فإن الكود يجب ان يضيف سجلات فاضية في tbl_temp ،

4. مسح سجلات الجدول tbl_temp قبل إضافة سجلات جديدة ،

5. إضافة السجلات الجديدة حسب المتوفر في الجدول الحالي ، وإضافتها في tbl_temp عن طريق qry_temp ،

6. اسخدام الكود في الرقم 3 ،

6. معاينة التقرير :)

 

جعفر

#3

أشكرك اخي جعفر على الرد

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

فقط اريد يضهر 15 حقل لكل تقرير بحيث لما اجمع الجدولين في جدول واحد يكون منسق

ارجو التكرم  بمساعدتي في هذا البرنامج

 

شكرا مره اخرى الاخ جعفر

#4

إن شاء الله طال عمرك ، ما يصير خاطرك إلا طيب ، عطني شوية وقت ، مبوني سهران :)

 

جعفر

#5

تفضل :)

 

العقل المدبر للعملية كلها هو هذا الكود:

 

Private Sub cmd_Report_Click()
On Error GoTo err_cmd_Report_Click

'No warning please
DoCmd.SetWarnings False

'delete the Records of tbl_temp
DoCmd.OpenQuery "qry_Delete_tbl_temp"

'append the boys data
DoCmd.OpenQuery "qry_Boys"

Dim rstT As DAO.Recordset
Dim rstG As DAO.Recordset

'tbl_temp
Set rstT = CurrentDb.OpenRecordset("SELECT * FROM tbl_temp")
'qry_Girls
mySQL = "SELECT Name, Sex, BD"
mySQL = mySQL & " FROM [Grade 1 Data]"
mySQL = mySQL & " WHERE Sex='2' AND BD Between #" & Me.Date_From & "# And #" & Me.Date_To & "#"
'Debug.Print mySQL
Set rstG = CurrentDb.OpenRecordset(mySQL)

'set the cursor to the first Record
rstT.MoveLast: rstT.MoveFirst
rstG.MoveLast: rstG.MoveFirst



'we want to update Girls Records
For i = 1 To rstT.RecordCount
rstT.Edit

rstT!mNo = i
rstT!fNames = rstG!Name
rstT!fDOB = rstG!BD
rstT!fNo = i

rstT.Update
rstT.MoveNext
rstG.MoveNext

Next i


'check if we have more Girls Records not inserted
If i < rstG.RecordCount Then
For i = i To rstG.RecordCount
rstT.AddNew

rstT!fNames = rstG!Name
rstT!fDOB = rstG!BD
rstT!fNo = i

rstT.Update
'rstT.MoveNext
rstG.MoveNext

Next i
End If


'now we have all the Boys and Girls Records, but do we have 15 Records?
'add empty Records
rstT.MoveLast: rstT.MoveFirst
If rstT.RecordCount < 15 Then
For i = i To 15
rstT.AddNew

rstT!fNames = ""
'rstT!fDOB = ""

rstT.Update
'rstT.MoveNext

Next i

End If


'release memory
rstT.Close: Set rstT = Nothing
rstG.Close: Set rstG = Nothing

'All done, now open the Report
DoCmd.OpenReport "rpt_temp", acViewPreview

'set free the warnings again
DoCmd.SetWarnings True


Exit Sub
err_cmd_Report_Click:

    If Err.Number = 3021 Then
        'no more Girls Record
        Resume Next
    Else
    
        MsgBox Err.Number & vbCrLf & Err.Description
    End If

End Sub

 

جعفر

2_old.zip

تم تعديل هذه المشاركة بواسطة jjafferr في 28 أبريل 2013 في 00:11

#6

أشكرك اخي جعفر على الرد

اسف اني اتعبك معاي

هذا التنسيق بالضبط الذي أريده

1- لكن المشكله في جدول الاناث التواريخ  لو تلاحظ ليست على نفس التاريخ

أو شهر الذي نستعلم منه التقرير

 

2- المشكلة الثانية أنا في برنامجي الاصلي معي جدولين وليس جدول مفروز ذكور واناث

ارسلك الرنامج

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

شكرا مرة اخرى

 

2_old.rar

#7

>1- لكن المشكله في جدول الاناث التواريخ

شو المشكلة؟

الصورة هذه تشير الى ان الاسماء في التقرير الجديد هي نفسها وبنفس الترتيب في التقرير القديم:

 

post-273849-0-24424900-1367143701_thumb.

 

>2- المشكلة الثانية أنا في برنامجي الاصلي معي جدولين وليس جدول مفروز ذكور واناث

إن شاء الله بشوف الملف الجديد ، بس ياريت مرة ثانية ترفق الاصل من البداية ، لعدم تكرار العمل :(

 

جعفر

#8

تفضل :)

 

جعفر

2.New.mdb.zip

2.New.mdb.zip

#9

اسف اخي غلبتك معاي

لكن لما استعلم  1/4/2004 وحتى  30/4/2004  يضهر في جدول الاناث تواريخ مختلفة 21 سجل وليس 6 سجلات

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

 

اسف اخي مرة اخرى

#10

اعتقد ان Format التاريخ في كمبيوترك غير ، لذا:

رجاء ادخل التواريخ في النموذج ، وافتح التقرير القديم ، والتقرير الجديد ، ثم اعمل Print screen ، وارفع الصور حتى اشوفها لوسمحت :)

 

جعفر

#11

اخي جعفر

 

 استعلم  1/4/2004 وحتى  30/4/2004  يضهر

التقرير القديم   

جدول الاناث 8 حقول والذكور  3 حقول  وهذه البيانات الصحيحة

التقرير الجديد    (الذي انته عملته)

جدول الاناث 27 حقل والذكور 3 حقول

لاحظ في جدول الاناث  يضهر  تواريخ جميع الاشهر لسنة 2004

أما تقرير الظكور تظهر البيانات فقط لشهر ابريل 2004

 

مرفق التقرير القديم والجديد

سوال اخر

يمكن انته ما عملت استعلام حق جدول الاناث كما عمل حق جدول الذكور  qry_Boys

شكرة مرة اخرى والسموحة على ان الموضوع طال شويه

 

post-274292-0-29694700-1367237993_thumb.

post-274292-0-09894000-1367238009_thumb.

#12

شكرا جزيلاً :)

 

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

 

سأعمل بطريقة اخرى إن شاء الله :)

مو انت والرحمة :)

مسقط مافيها مطر البر اليوم :)

 

جعفر

#13

شكرا كثير الاخ جعفر

 

انتظر ردك بفارع الصبر لانه متوقف عليه اشياء كثيرة هذا التقرير

 

امطار طيبه وغزيرة الحمدلله

 

شكرا مرة اخرى

#14

آسف على التأخير ، بس ما كان بالسهولة اللي توقعتها :(

 

وتغير العقل المدبر للعملية كلها ، واصبح هذا الكود:

 

Private Sub cmd_Report_Click()
On Error GoTo err_cmd_Report_Click

'No warning please
DoCmd.SetWarnings False

'delete the Records of tbl_temp
DoCmd.OpenQuery "qry_Delete_tbl_temp"


Dim rstT As DAO.Recordset


'tbl_temp
Set rstT = CurrentDb.OpenRecordset("SELECT * FROM tbl_temp")
'query Boys count
bCount = DCount("*", "Boys")
'query Girls count
gCount = DCount("*", "Girls")


'set the cursor to the first Record
rstT.MoveLast: rstT.MoveFirst


'1st we have to append the qurey with the Larger number of Record
If bCount >= gCount Then
'append the Boys data
DoCmd.OpenQuery "qry_Boys_A"
Else
'append the Girls data
DoCmd.OpenQuery "qry_Girls_A"
End If


'2nd we have to update the qurey with the Least number of Record
If bCount >= gCount Then
'update the Girls data
DoCmd.OpenQuery "qry_Girls_U"
Else
'update the Boys data
DoCmd.OpenQuery "qry_Boys_U"
End If


'now tbl_temp has all its values, read it one more time
'tbl_temp
Set rstT = CurrentDb.OpenRecordset("SELECT * FROM tbl_temp")
rstT.MoveLast: rstT.MoveFirst


'set the Maximun Records required, which should be at least 15
If rstT.RecordCount < 15 Then
LastRecord = 15
FirstRecord = rstT.RecordCount + 1

'make 15 Records
For i = FirstRecord To LastRecord
rstT.AddNew
' rstT!fNames = rstG!Name
rstT.Update
rstT.MoveNext
Next i

End If


rstT.MoveLast: rstT.MoveFirst

'update the Serial Number in tbl_temp for the boys and girls count
For i = 1 To rstT.RecordCount
rstT.Edit

'boys sequence
If Len(rstT!mNames & "") <> 0 Then
rstT!mNo = i
End If

'girls sequence
If Len(rstT!fNames & "") <> 0 Then
rstT!fNo = i
End If

rstT.Update
rstT.MoveNext

Next i


'release memory
rstT.Close: Set rstT = Nothing


'All done, now open the Report
DoCmd.OpenReport "rpt_temp", acViewPreview

'set free the warnings again
DoCmd.SetWarnings True


Exit Sub
err_cmd_Report_Click:

If Err.Number = 3021 Then
'no more Girls Record
Resume Next
Else

MsgBox Err.Number & vbCrLf & Err.Description
End If

End Sub

 

بس الله يخليك ، تابع الكود وافهم منه الخطوات اللي عملتها ، وانا شارحها قبل كل سطر كود :)

 

وهاي صورة التقرير:

 

post-273849-0-16500700-1367269967_thumb.

 

جعفر

2.New.mdb.zip

#15

شكرا شكرا شكرا  اخي جعفر

 

بارك الله فيك وجعله في ميزان حسناتك

 

فعلا المقوله الصحيحة (عطي الخبز خبازه)

 

غلبتك معاي

سوال اخير ؟ هل ممكن تفرز حقل التواريخ في التقرير من الاصغر الى الاكبر  ؟

 

شكرا مرة اخرى

#16 أفضل إجابة

حياك الله اخوي ، الخباز يشكرك :)

انا مهندس مدني ، وبرمجة الاكسس هواية :)

 

يا طويل العمر ، رجاء خبرنا المتطلبات كلها من البداية لوسمحت ، لعدم تكرار العمل :(

يعني بعد ما اطبخ القبولي ، تقول كنت اريد برياني ، ولما اسوي برياني دجاج ، تقول اريد برياني لحم :)

 

تفضل :)

وهاي صورة التقرير:

 

post-273849-0-28556400-1367312703_thumb.

 

جعفر

2.5.New.mdb.zip

#17

شكرا لك على حلمك وتحملك كل هذا العمل هذا المطلوب :)

 

أنا ما اقدر اعمل حاجه إلا أن اقول الله يوفقك في عملك وفي هواياتك

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

 

شكرا اخي جعفر

#18

حياك الله ، وكما يقولون: كل يوم تعال :)

 

جعفر

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

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

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

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

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

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