מחפש קוד vba להדפיס דוחות אקסס במהירות לפי רשימת אקסל או אקסס
-
@אוריי זו אכן הדרך הנכונה.
אם אין ענין דווקא בקובץ אקסל - יהיה יותר נוח על טבלה באקסס, למרות שאקסס מסוגלת לייבא בקלות קובץ אקסל עם מבנה טבלה תקין. (הבעיות מתחילות כשהקובץ לא נראה כמו טבלה)
בוא ונפרק את המשימה לשלבים:- צור פונקציה A שמקבלת כפרמטר את מספר המדף ומציגה \ מדפיסה את הדוח.
תוכל להעזר בשאילתא שכבר רשמת ששולפת את המספר מהטופס. - צור פונקציה B שרצה בלולאה על הטבלה וקוראת לפונקציה A עם הפרמטר.
- צור פונקציה A שמקבלת כפרמטר את מספר המדף ומציגה \ מדפיסה את הדוח.
-
@OdedDvir אמר במחפש קוד vba להדפיס דוחות אקסס במהירות לפי רשימת אקסל או אקסס:
- צור פונקציה A שמקבלת כפרמטר את מספר המדף ומציגה \ מדפיסה את הדוח.
תוכל להעזר בשאילתא שכבר רשמת ששולפת את המספר מהטופס.
יש לי קוד שמציג את הדו''ח בתצוגה לפני הדפסה כזה
DoCmd.OpenReport "yy", acViewPreview
@OdedDvir אמר במחפש קוד vba להדפיס דוחות אקסס במהירות לפי רשימת אקסל או אקסס:
- צור פונקציה B שרצה בלולאה על הטבלה וקוראת לפונקציה A עם הפרמטר.
@אוריי אמר במחפש קוד vba להדפיס דוחות אקסס במהירות לפי רשימת אקסל או אקסס:
(הבעיה שאני לא יודע איך לעשות לולאה בקוד)
- צור פונקציה A שמקבלת כפרמטר את מספר המדף ומציגה \ מדפיסה את הדוח.
-
@אוריי אתה צריך ליצור פונקציה שמשנה את השאילתא שעליו מבוסס הדוח. אני מניח שכרגע השאילתא הנ"ל שולפת את המספר ישירות מהטופס, אתה צריך ליצור משפט SQL שבונה את השאילתא בהתאם לפרמטר שאתה תעביר לו בשעת הקריאה.
עבור לשאילתא שעליה מבוסס הטופס, ותציג אותה בתצוגת SQL, ותדביק כאן את הנוסח שקיבלת. -
@OdedDvir
אני לא יודע איך עושים את זה
אבל אני חשבתי על פתרון אחר יותר קל לעניות דעתי בצורה כזו- פקודה שתרשום את המס' מדף בטופס.
- פקודה שתדפיס את הדו''ח בצורה מהירה ללא תצוגה
- פקודה שתמחוק את הטקסט בטופס.
ועל כל זה לתת לולאה שתרוץ ותחליף את המס' בצורה סדירה עד הסוף.
לא כזה מפריע לי שיהיה על הטופס (אף על פי שזה עקום) כי אני משתמש בזה באופן חד פעמי..
עריכה:
פונקציה של לולאה עשיתי (מקווה שעשיתי טוב)
Public Function lol() As String Dim i, num For i = 1 To 133 num = num + i Next
מה שחסר לי זה הנוסחה שתעשה כמין vlookup על הטבלה..
-
@אוריי אמר במחפש קוד vba להדפיס דוחות אקסס במהירות לפי רשימת אקסל או אקסס:
אבל אני חשבתי על פתרון אחר יותר קל לעניות דעתי בצורה כזו
מצוין.
אתה צריך לעשות לולאה על טבלה. אני אדגים כאן באופן כללי:
נניח שיש לי טבלה MyTable ואני רוצה לעבור על כל השורות ולהדפיס את השדה MyNumber:Dim rs as DAO.Recordset Set rs = CurrentDb.OpenRecordset("MyTable", dbReadOnly, dbSnapshot) rs.MoveFirst While Not rs.EOF Debug.Print rs!MyNumber 'הדפס את הערך בשדה rs.MoveNext Wend rs.Close