-
@odeddvir אמר בבניית טופס/דו"ח:
להלן השלבים:
- צור טבלה עם השדות הרצויים
- צור טופס להזנת נתונים \ צפייה בנתונים, שמבוסס על הטבלה
- צור דוח שגם הוא מבוסס על הטבלה, בעיצוב כרצונך
אני מבין שעשית את הכל עד כאן.
בוא נבין מה עשית: אם ההקלדות בטופס נקלטות בטבלה, זה אומר שהטבלה היא מקור הנתונים של הטופס.
שים לב שתוכל להקליד רשומות רבות בטופס, ואחר כך להציג את כל הרשומות שבטבלה, שורה אחר שורה, ולעבור ביניהם על ידי לחצני הניווט שבתחתית הטופס:
באופן דומה, גם בדוח:
אם הטבלה היא מקור הנתונים של הדוח, הדוח יציג את הערכים שבטבלה, שורה אחר שורה. תוכל להציג את הדוח בתצוגה לפני הדפסה, ואז לדפדף בין הרשומות על ידי לחצני הניווט שבתחתית הדוח:
תאשר אם הכל עובד כנ"ל, ואז נעבור לשלבים הבאים:
- הוסף לחצן בטופס כך שיפתח את הדוח ברשומה הנכונה, וייצא את הדוח ל-PDF (על ידי קוד VBA)
תוכל להוסיף בסוף הקוד שליחה של ה-PDF שנוצר לכתובת המייל
-
@שוהם307 אמר בבניית טופס/דו"ח:
ואם כן נראה לי שאפשר להתקדם לשלב של הקוד.
בוא נכין את השטח קודם:
- שנה את שם הדוח ל-rptOutput
- שנה את שם הטבלה של הנתונים ל-FormData
- תוסיף לטבלה FormData שדה בשם "ID" מסוג "מספור אוטומטי".
- צור שאילתה בשם qryOutput שמכילה את הביטוי הבא:
SELECT * FROM FormData
ותבסס את הדוח עליה, במקום ישירות על הטבלה FormData. כלומר תשנה את מקור הנתונים של הדוח להיות qryOutput. - תוסיף בטופס פקד לחצן פקודה ותשנה את שמו ל-cmdOutputAsPDF
עכשיו נכתוב את הקוד:
בארוע לחיצה של הלחצן, תיצור קוד VBA כדלקמן:Private Sub cmdOutputAsPDF_Click() CurrentDb.QueryDefs("qryOutput").SQL= "SELECT * FROM FormData WHERE ID=" & Me.ID DoCmd.OutputTo acOutputReport, "rptOutput", acFormatPDF End Sub
-
@odeddvir החל ממספר 4, אני לא מצליח להבין מה אני אמור לעשות,
תוכל להרחיב יותר.
איפה להזין את השם של השאילתה, ואיפה להזין את הביטוי הנ"ל?
תודה.
עריכה: טוב, אז לאחר הרבה ניסוי וטעייה הצלחתי ב"ה לייצא ל PDF ע"י פקד. (לקח לי זמן להבין בכלל איפה להכניס את הביטוי).
והנה אני מתקדם בזכותך לשלבים הסופיים. ובכן,- את השדה ID הייתי מוכרח לשלב בתוך הדו"ח למרות שהוא לא קשור, אז עשיתי אותו לנסתר.
- האפשרות היחידה לכתוב משהו על הפקד זה רק ע"י הוספת תווית?
- האם אני לא יכול לעשות את שם הטבלה למשהו בעברית?
- אני רוצה שכשהעכבר על הפקד שייצא כזה הסבר שמסביר מה הפקד עושה. שייך כזה דבר?
תודה רבה רבה רבה רבה רבה, על הסבלנות, המקצועיות וההקשבה.
עריכה נוספת לגבי מספר 4 הסתדרתי, פשוט הייתי צריך לבחור בפקד 'לחצן' ואז אני יכול לשנות את השם וגם להוסיף תיאור. -
@שוהם307 אמר בבניית טופס/דו"ח:
את השדה ID הייתי מוכרח לשלב בתוך הדו"ח למרות שהוא לא קשור, אז עשיתי אותו לנסתר.
אתה צודק. יפה שעלית על הבעיה.
נמאס לך?...
אם אתה מבקש לקבל קורס מזורז באקסס, אני מציע לך לעבור על המדריך. אני אענה על רגל אחת:
האפשרות היחידה לכתוב משהו על הפקד זה רק ע"י הוספת תווית?
בעיקרון כן.
האם אני לא יכול לעשות את שם הטבלה למשהו בעברית?
אתה יכול אבל זה לא מומלץ.
לגבי 4, צור שאילתה חדשה, עבור לתצוגת SQL ושם תדביק את השורה שכתבתי לעיל.
-
-
@שוהם307 אמר בבניית טופס/דו"ח:
אני עדיין לא מבין למה לא לייצא את הטופס ישירות ל PDF,
עקרונית זה אפשרי, אבל פחות מקובל. דוח מאפשר קצת יותר שליטה על עיצוב באופן כללי.
הרי אני הולך לתת את האקסס הזה לדוגמה לעובד פלוני שימלא את הטופס, ובדיוק את אותו טופס שהוא מילא אני רוצה שהוא ישלח לי בתור PDF,
מה העובד אמור לעשות אחרי שהוא מילא את הטופס?ללחוץ על הלחצן כמובן.
כרגע זה רק יוצר קובץ במחשב.
אם הגעת לשלב 5 והכל עובד, נתקדם בעז"ה לאיך שולחים את זה במייל אוטומטית. -
@odeddvir אמר בבניית טופס/דו"ח:
@שוהם307 אמר בבניית טופס/דו"ח:
אני עדיין לא מבין למה לא לייצא את הטופס ישירות ל PDF,
עקרונית זה אפשרי, אבל פחות מקובל. דוח מאפשר קצת יותר שליטה על עיצוב באופן כללי.
הרי אני הולך לתת את האקסס הזה לדוגמה לעובד פלוני שימלא את הטופס, ובדיוק את אותו טופס שהוא מילא אני רוצה שהוא ישלח לי בתור PDF,
מה העובד אמור לעשות אחרי שהוא מילא את הטופס?ללחוץ על הלחצן כמובן.
כרגע זה רק יוצר קובץ במחשב.
אם הגעת לשלב 5 והכל עובד, נתקדם בעז"ה לאיך שולחים את זה במייל אוטומטית.ב"ה הגעתי כבר לשלב 5, יש לחצן והוא מייצא את הקובץ ל PDF.
מי היה מאמין..., -
@שוהם307 יפה.
שים לב:
כדי שהקוד יעבוד, תצטרך לאפשר גישה לאפליקציות עם רמת אבטחה נמוכה לחשבון גוגל שלך.
לשם כך כנס להגדרות החשבון שלך בגוגל, ותבחר כדלקמן:
ובמסך שנפתח תפעיל את האופציה.
כעת צור מודול חדש באקסס ותדביק את הקוד הבא: (אני לא זוכר את המקור המדוייק, אבל הוא מסתובב ברשת בכל מיני מקומות)
Public Sub SendGmail() 'creating a CDO object Dim Mail As Object Set Mail = CreateObject("CDO.Message") 'Enable SSL Authentication Mail.Configuration.fields.item _ ("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True 'Make SMTP authentication Enabled=true (1) Mail.Configuration.fields.item _ ("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1 'Set the SMTP server and port Details 'Get these details from the Settings Page of your Gmail Account Mail.Configuration.fields.item _ ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = _ "smtp.gmail.com" Mail.Configuration.fields.item _ ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 465 Mail.Configuration.fields.item _ ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 'Set your credentials of your Gmail Account Mail.Configuration.fields.item _ ("http://schemas.microsoft.com/cdo/configuration/sendusername") = _ "youremail@gmail.com" Mail.Configuration.fields.item _ ("http://schemas.microsoft.com/cdo/configuration/sendpassword") = _ "***********" 'Update the configuration fields Mail.Configuration.fields.Update 'Set All Email Properties With Mail .Subject = "Your message subject" .From = "youremail@gmail.com" .To = "someone@somewhere.com" .CC = "" .BCC = "" .textbody = "Testing 1 2 3" .AddAttachment ("D:\Temp\123.pdf") 'To attach Documents in mail End With 'to send the mail Mail.Send End Sub
ותחליף את הערכים בשורות הבאות:
שורה 26, ו-36: תחליף לכתובת המייל שלך בגוגל
שורה 29: תחליף את הכוכביות הסיסמה לחשבון גוגל
שורה 41: הנתיב המלא לקובץ PDF שיצרת
את שורה 46 תמחק (זו תוספת שנכנסה לקוד על ידי הפורום)אם הגעת עד לכאן - תערוך את הקוד בלחצן, ותוסיף שורה אחת בסוף:
Private Sub cmdOutputAsPDF_Click() CurrentDb.QueryDefs("qryOutput").SQL= "SELECT * FROM FormData WHERE ID=" & Me.ID DoCmd.OutputTo acOutputReport, "rptOutput", acFormatPDF SendGmail End Sub
-
@שוהם307 אתה צריך לקבוע היכן ישמר הקובץ, לשם כך תשנה את הקוד של הלחצן בשורה 3 ל:
DoCmd.OutputTo acOutputReport, "rptOutput", acFormatPDF, "D:\Temp\Report,pdf", True
שים לב שהוספתי 2 ארגומנטים:
א. עבור הנתיב המלא של הקובץ, בדוגמא כאן זה"D:\Temp\Report.pdf"
ב.True
שמורה לקוד לדרוס את הקובץ הקודם אם קיים.
כעת תשנה את הקוד של השליחה (בפונקציה SendMail) בשורה 41 שיקח את הקובץ משם:.AddAttachment ("D:\Temp\Report.pdf") 'To attach Documents in mail
כמובן שאפשר להוסיף עוד פינוקים כמו:
לגרום שהטופס להקלדה יפתח מיד בכניסה לאקסס
לשנות את שם קובץ ה-PDF כך שיכיל את שם המשתמש
וכו' וכו' -
@שוהם307 באקסס זה נשמר אוטומטית, כל שורה בטבלה מייצגת רשומה אחת המכילה פרטי טופס שלם.
(כמובן שבכל פעם עליך להכניס את הנתונים כרשומה חדשה, ולא לדרוס את הנתונים הקיימים)
כדי לשמור את כל העותקים כקבצים נפרדים - תצטרך מן הסתם לייצר שם ייחודי לכל קובץ PDF, ולשלוח בכל פעם את הקובץ הנכון במייל. -
@odeddvir אמר בבניית טופס/דו"ח:
ולשלוח בכל פעם את הקובץ הנכון במייל
- נכון, ומה שקורה עכשיו שהוא מציג לי חלונית 'שמירה בשם', ואני מקליד את השם שאני רוצה עבור ה PDF, והוא שולח אותו.
ומה לגבי זה?
@שוהם307 אמר בבניית טופס/דו"ח:
עכשיו אני מנסה להבין איך זה הולך לעבוד ברמה הטכנית? אני נותן את הקובץ אקסס לעובד (אחרי שנסדר אותו שייראה נורמלי), והוא ממלא טופס, לאחר מכן מה הוא עושה?
-
למען הסדר הטוב אני יציג את השאלות שלי בפעם אחת.
- כשהמשתמש מסיים להקליד נתונים בטופס, מה הוא עושה אחר כך? הוא מייצר דו"ח כדי שתהיה לו לחצן דרכו הוא ישלח את הדו"ח לאימייל? או שיש לחצן בטופס שמייצא לדו"ח ומשם לאימייל. או... משהו אחר.
- האם שייך לעשות שלא ישלח רק לנמען אחד כברירת מחדל אלא שייפתח תיבת רשימה והמשתמש יוכל לבחור למי הוא רוצה לשלוח את הדו"ח.
היו לי עוד כמה שאלות אבל אני לא זוכר אותם כרגע.
אז שוב פעם תודה רבה רבה.
-
@שוהם307
אני מאד מתקשה לעזור לך.
א. זה עושה רושם שאתה לא עוקב אחר ההוראות שלי בעיון, וזה מייגע אותי לחזור על מה שכתבתי בעבר. מלבד זאת, אני לא מבין בדיוק היכן אתה אוחז בכל התהליך.
ב.אתה מבקש לדעת את כל התורה על רגל אחת, וזה עושה את כל השרשור הזה למסורבל, לא ממוקד, וממילא חסר תועלת עבור אחרים.
אם תרצה, תוכל לפנות אלי במייל הפרטי, ולשאול בחופשיות.על השאלה הראשונה עניתי כבר לעיל. למרות זאת, אני אענה לך שוב:
כשהמשתמש מסיים להקליד נתונים בטופס, מה הוא עושה אחר כך? הוא מייצר דו"ח כדי שתהיה לו לחצן דרכו הוא ישלח את הדו"ח לאימייל? או שיש לחצן בטופס שמייצא לדו"ח ומשם לאימייל. או... משהו אחר.
הלחצן ממוקם בטופס. לחיצה עליו מיצאת את הדוח ל-PDF.
האם שייך לעשות שלא ישלח רק לנמען אחד כברירת מחדל אלא שייפתח תיבת רשימה והמשתמש יוכל לבחור למי הוא רוצה לשלוח את הדו"ח.
שייך. אבל בבקשה פתח נושא חדש עבור זה.
היו לי עוד כמה שאלות אבל אני לא זוכר אותם כרגע.
אתה מוזמן לפתוח נושא חדש עבורן.