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

تقرير جدولي

مغلق
بدأه aecc في 20 سبتمبر 2007 · 8 رد · 1,098 مشاهدة · في قواعد بيانات Microsoft Access
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

الاخوة الافاضل السلام عليكم ورحمة الله وبركاته ومبارك عليكم رمضان

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

يا اخوان ارجو سرعة الرد

_________________.rar

تم تعديل هذه المشاركة بواسطة aecc في 20 سبتمبر 2007 في 16:13

#2
aecc كتب:
عندي مشكلة في تقرير مبني على استعلام جدولي محوري والمشكلة هي ان عناوين الصفوف والاعمدة تكون متغيرة كما نعرف في الاسعلامات الجدولية وبالتالي عند حذف البيانات المتعلقة بصف او عمود اوالاضافة عليها يجب بالتالي ان تختفي او تضاف في التقرير وهذا لا يحدث في الاعمدة

أخواني الأعزاء في الفريق العربي للبرمجة

تحية طيبة وبعد ،،،،

أضم صوتي إلى الأخ aecc ... هو بالفعل عند بناء تقرير على استعلام جدولي تكمن المشكلة وللتوضيح أكثر لقد عملت تقرير مبني على استعلام جدولي ومكون من نوع الموظف:موظف بعقد ، موظف ثابت ، موظف يومي وعلى فرض تم تعديل نوع الموظف من بعقد الى يومي هنا تكمن المشكلة في التقرير المعد مسبقاً.

لذا نرجوا من الأخوه البحث لحل المشكلة أو النصح في مثل هذه التقارير.

بارك الله فيكم

[يمين]

إذا كـان تـرك الـدين يعــنــي تقــدمــاً

فـيا نفــس مـوتــي قبــل أن تتقـدمــي

[/يمين]

#3

يا اخوان ارجو سرعة الرد

#4

الفزعة يا اخوان

#5

اخواني الكرام

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

لقد تم حل المشكلة سابقا على هذا الرابط " تحديد الحقول التي تظهر في التقرير في كل مرة "

/index.php?showtopic=119191

وهذا هو المثال قم بالتجربة والتأكد من ذلك .

zaReportManager2003.rar

بعد فتح قاعدة البيانات ستجد التالي :

في الإسفل رقم 1 وهو خاص لإختيار الجدول المطلوب .

في اسفل رقم 2 وهو خاص لإختيار الحقول المطلوب اظهارها في التقرير كل ما عليك هو الإختيار من القائمة المطلوبة سواء مرتبة تحت بعض او اختيار حقول عشوائية

3. في الأسفل رقم 3 وهو خاص بإختيار عرض صفحة التقرير سواء بالعرض او بالطول .

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

ملاحظة : هذا البرنامج متقدم ويحتاج الى فهم مسبق بطريقة عمل الإستعلامات المؤقته وعرضها في التقرير بواسطة الكود .

وأي استفسار فنحن في الخدمة .

#6

الاخت الفاضلة زهرة رمضان كريم عليك وشكرا للاهتمام

انا بحثت عن حل للمشكلة ووجدت مثالا فيه حل للمشكلة ولكن لم اتعرف على الطريقة التي يعمل بها وبمعنى اخر اريد شرح المثال وخاصة الكود الذي به ففيه اجابة سؤالي وجزاكم الله خيرا

CrossTab_Query.rar

#7

تفضل اخي الكريم

هذا ملفك بعد التعديل بناء على طلبك

عرض التقرير المبني على الإستعلام الجدولي

za_Crosstab_Reprt.rar

فكرة البرنامج

1. تعتمد فكرة البرنامج على إنشاء جدول إضافي بإسم tblFieldTypes ويحتوي على جميع حقول برنامج الأكسيس ( وليس الحقول الخاصة بك ) اي حقول عائمة يتم استدعاؤها وقت الحاجة لها سواء نصية او رقمية او غيرها من الحقول الأخرى .

2. يتم انشاء استعلام مؤقت بواسطة الكود مبني على الحقول الوهمية من الجدول tblFieldTypes ثم يتم أخذ القيم والبيانات من الإستعلام الجدولي الرئيسي .

3. يتم حذف الإستعلام المؤقت بعد الإنتهاء من مشاهدة التقرير او طباعته لغرض انك قد تقوم بالتغيير في الإستعلام الجدولي سواء في البيانات او غيرها فقد تزيد عدد الحقول وقد تنقص .

4. في التقرير يجب ان تكون الحقول غير منضمة وليست مرتبطة بالإستعلام الجدولي بل تكون مرتبطة بالإستعلام المؤقت qryCrossTabReport الذي يأخذ بياناته من الإستعلام الجدولي الأساسي .

5. اما الكود الخاص بالتقرير فيكون بالشكل التالي :

Option Explicit
Dim ReportLabel(12) As String

Function FillLabel(LabelNumber As Integer) As String
FillLabel = Nz(ReportLabel(LabelNumber), "")
End Function

Private Sub Report_Open(Cancel As Integer)
DoCmd.Maximize
Dim i As Integer
	For i = 0 To 12
		ReportLabel(i) = ""
	Next i
	Call CreateReportQuery
End Sub

Sub CreateReportQuery()
On Error GoTo Err_CreateQuery
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim qdf As DAO.QueryDef
Dim fld As DAO.Field
Dim indexx As Integer
Dim FieldList As String
Dim strSQL As String
Dim i As Integer

Set db = CurrentDb
Set qdf = db.QueryDefs("Salary_m_Crosstab")
indexx = 0
	For Each fld In qdf.Fields
		If fld.Type >= 1 And fld.Type <= 8 Or fld.Type = 10 Then
			FieldList = FieldList & "[" & fld.Name & "] as Field" & indexx & ", "
			ReportLabel(indexx) = fld.Name
		End If
		indexx = indexx + 1
	Next fld
	For i = indexx To 12 '<<
			FieldList = FieldList & "null as Field" & i & ","
	 Next i
	 FieldList = Left(FieldList, Len(FieldList) - 1)

 strSQL = "Select " & FieldList & " From Salary_m_Crosstab"
	db.QueryDefs.Delete "qryCrossTabReport"
	Set qdf = db.CreateQueryDef("qryCrossTabReport", strSQL)

Exit_CreateQuery:
	Exit Sub

Err_CreateQuery:
	If Err.Number = 3265 Then
		Resume Next
	Else
		MsgBox Err.Description
		Resume Exit_CreateQuery
	End If
End Sub

مع وجود وحدة نمطية منفصلة لغرض اظهار الحقول المطلوبة في التقرير

Option Explicit
Sub ShowDataTypes()
Dim db As DAO.Database
Dim tdf As TableDef
Dim fld As DAO.Field

Set db = CurrentDb
Set tdf = db.TableDefs("tblFieldTypes")
	For Each fld In tdf.Fields
		Debug.Print fld.Name, fld.Type

	Next fld

End Sub

بالتوفيق ان شاء الله تعالى

#8

جزاك الله خيرا اختي الفاضلة

إن شاء الله اجرب واعطيك النتائج بعد ما نفطر

#9

الحمدلله فطرنا والنتيجة ممتازة ولكن هل من طريقة اخرى تحقق نفس النتائج

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

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