@ארכיטקט
לגבי דוח אין אפשרות לבסס אותו על שאילתת הצלבות, תצטרך לעשות טבלה זמנית ולבצע שאילתת יצירת טבלה או באמצעות קוד.
למה א"א?
במיוחד אם הוא מציג את התוצאות לפי חודשים.
הוא יכול לייצר לעצמו דוח עם 12 עמודות, אפילו באשף שמבוסס על השאילתא, כי אני מורה לשאילתא לתת דווקא עמודות מסויימות עם שם מסויים (במקרה הזה - מס' החודש)
TRANSFORM Sum(TblRec.TotalSum) AS SumמתוךTotalSum
SELECT Year([RecDate]) AS Expr2
FROM TblRec
WHERE (((Year([RecDate]))=[Write Year]))
GROUP BY Year([RecDate])
PIVOT Format(Nz([RecDate],Date()),"m") In (1,2,3,4,5,6,7,8,9,10,11,12);
בדוגמא תראה שאפשר לעשות גם פרמטר (- אני עשיתי שהוא מבקש שנה - אפשר גם להפנות לתיבת טקסט וכו')
והנה דוגמא לדוח דינמי, שבו אתה לא יודע מה יהיו שמות השדות. (קחו בחשבון רק שהבאתי דוגמא שלי, שמביאה את רשימת המקצועות בכיתה מסויימת, ייתכן שתידרשו לעשות התאמות קטנות לצרכים שלכם)
כאן באמת צריך לעשות דוח עם X שדות מירבי, ולהציג את השדות לפי העניין. (לא הכי יעיל, אבל עובד יפה...)
בקוד של פתיחת הדוח:
Private Sub Report_Open(cancel As Integer)
On Error Resume Next
Dim rs As Recordset
Set rs = CurrentDb.OpenRecordset("SELECT * FROM TblSubject WHERE sActive=True And IDClsRoom=" & GetGIDClsRoom)
rs.MoveLast
rs.MoveFirst
Dim i As Integer
For i = 1 To rs.RecordCount
If i > 45 Then msgok "לא ניתן להציג את כל הממקצועות": Exit Sub
Me("t" & i).ControlSource = "[" & rs!SubjectName & "]"
Me("l" & i).Caption = rs!SubjectName & ""
' Me("t" & i).Width = (Me("t" & i).Width * 42) / rs.RecordCount
' Me("l" & i).Width = Me("t" & i).Width
rs.MoveNext
Next
End Sub
כמובן כמו שרואים בקוד, השמות של התיבות טקסט הם עם תחילית האות t ומספר רץ, והכותרות עם תחילית האות l
פורסם במקור בפורום CODE613 ב26/10/2015 21:44 (+02:00)