דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תוכנה
  3. הדפסת ד''וח מאקסס על בסיס קובץ וורד

הדפסת ד''וח מאקסס על בסיס קובץ וורד

מתוזמן נעוץ נעול הועבר תוכנה
40 פוסטים 6 כותבים 1.3k צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • OdedDvirO מנותק
    OdedDvirO מנותק
    OdedDvir
    השיב לבערל ב נערך לאחרונה על ידי
    #24

    @בערל אמר בהדפסת ד''וח מאקסס על בסיס קובץ וורד:

    ואז אעשה שאילתא חדשה שתביא לי רק את השורה האחרונה מהטבלה, (איך? ע''י בחירת ה-ID הגבוה ביותר?

    זה כנראה הכי פשוט. שאילתת קיבוץ עם הפונקציה Max על השדה ID.

    A בערלב 2 תגובות תגובה אחרונה
    1
    • A מנותק
      A מנותק
      avi rz
      השיב לOdedDvir ב נערך לאחרונה על ידי
      #25

      @odeddvir אמר בהדפסת ד''וח מאקסס על בסיס קובץ וורד:

      @בערל אמר בהדפסת ד''וח מאקסס על בסיס קובץ וורד:

      ואז אעשה שאילתא חדשה שתביא לי רק את השורה האחרונה מהטבלה, (איך? ע''י בחירת ה-ID הגבוה ביותר?

      זה כנראה הכי פשוט. שאילתת קיבוץ עם הפונקציה Max על השדה ID.

      אם אתה רוצה לייצא לpdf בזמן שהטופס פתוח אצלך, תוכל לסנן לפי הID שבטופס = כך גם תוכל לייצא דפים ישנים אם תרצה לתקן בהם משהו או סתם להדפיס שוב.

      תגובה 1 תגובה אחרונה
      3
      • בערלב מנותק
        בערלב מנותק
        בערל ניהול
        השיב לOdedDvir ב נערך לאחרונה על ידי בערל
        #26

        @odeddvir אמר בהדפסת ד''וח מאקסס על בסיס קובץ וורד:

        @בערל אמר בהדפסת ד''וח מאקסס על בסיס קובץ וורד:

        ואז אעשה שאילתא חדשה שתביא לי רק את השורה האחרונה מהטבלה, (איך? ע''י בחירת ה-ID הגבוה ביותר?

        זה כנראה הכי פשוט. שאילתת קיבוץ עם הפונקציה Max על השדה ID.

        עשיתי ככה:
        מקווה שלזה הכוונה

        SELECT TOP 1 Table1.ID, Table1.FirstName, Table1.LastName, .....,....,..., 
        FROM Table1
        ORDER BY Table1.ID DESC;
        




        \

        @avi-rz אמר בהדפסת ד''וח מאקסס על בסיס קובץ וורד:

        אם אתה רוצה לייצא לpdf בזמן שהטופס פתוח אצלך, תוכל לסנן לפי הID שבטופס
        כך גם תוכל לייצא דפים ישנים אם תרצה לתקן בהם משהו או סתם להדפיס שוב.

        אשמח לדעת איך
        זה יעזור לי בכדי להדפיס קובץ ישן
        הסיבה השניה לא רלוונטית בשבילי מכיוון שהגדרתי בשאילתת העדכון לא לדרוס נתונים קיימים, אז גם אם אני מתקן נתונים בטופס זה לא ישפיע על שאר השדות בטבלה (אני יכול לתקן אותם ישירות בטבלה אבל עדיף כבר ליצור שורה חדשה...)
        בכל אופן, הסיבה הראשונה מספיקה...

        תגובה 1 תגובה אחרונה
        0
        • בערלב מנותק
          בערלב מנותק
          בערל ניהול
          כתב ב נערך לאחרונה על ידי
          #27

          ברוך השם המערכת עובדת מעולה
          מה שבעבר היה לוקח לי כעשר דקות עכשיו מתבצע תוך דקה!

          אפי' הוספתי ערך ברג'יסטרי שידלג על האזהרה של וורד בפתיחת המסמך על שימוש במיזוג נתונים.

          תודה רבה @OdedDvir היה נחמד לחזור לאקסס אחרי תקופה שלא נגעתי...😕 🙄

          תודה רבה לשאר החברים היקרים על ההתגייסות הנרחבת

          אני רוצה לנסות לשפר קצת ולשפשף אז אל תבטלו את המעקב בבקשה... 😊

          OdedDvirO תגובה 1 תגובה אחרונה
          5
          • OdedDvirO מנותק
            OdedDvirO מנותק
            OdedDvir
            השיב לבערל ב נערך לאחרונה על ידי OdedDvir
            #28

            @בערל
            א. השאילתא שכתבת מצויינת, פשוט חייכתי מאוזן לאוזן!
            ב. כדי להדפיס את העמודה הנוכחית, אתה יכול ליצור שאילתא באקסס שמסננת את הטבלה לפי הערך של השדה ID הנוכחי בטופס, כמו שציין @avi-rz, ולבחור אותה כמקור הנתונים בוורד. משהו כזה:

            SELECT *
            FROM Table1
            WHERE Table1.ID = Forms!YourFormName!ID
            

            זה היופי באקסס, שאפשר לשלב נתונים מהטופס ישירות בשאילתא.
            ג. אהבתי את הפטנט ברג'יסטרי, לא חשבתי על זה 👏

            היה נחמד לחזור לאקסס אחרי תקופה שלא נגעתי...

            נחמד לראות שאתה משתמש בה לתועלת, וזו זריקת עידוד בשבילי להמשיך עם ההדרכה 🤞

            בערלב תגובה 1 תגובה אחרונה
            4
            • בערלב מנותק
              בערלב מנותק
              בערל ניהול
              השיב לOdedDvir ב נערך לאחרונה על ידי בערל
              #29

              @odeddvir אמר בהדפסת ד''וח מאקסס על בסיס קובץ וורד:

              א. השאילתא שכתבת מצויינת, פשוט חייכתי מאוזן לאוזן!

              😊

              ב. כדי להדפיס את העמודה הנוכחית, אתה יכול ליצור שאילתא באקסס שמסננת את הטבלה לפי הערך של השדה ID הנוכחי בטופס, כמו שציין @avi-rz, ולבחור אותה כמקור הנתונים בוורד. משהו כזה:

              SELECT *
              FROM Table1
              WHERE Table1.ID = Forms!YourFormName!ID
              

              זה היופי באקסס, שאפשר לשלב נתונים מהטופס ישירות בשאילתא.

              פנטסטי!
              בדקתי ועבד מעולה.
              אבל אחר כך שמתי לב שזה עושה בעיות עם החיבור לוורד, לכאורה בגלל שמתי שהטופס סגור השאילתא לא מכילה כלום

              אז יצרתי טבלה חדשה בשם MailMerge שתכיל תמיד את הנתון האחרון
              והתיישבתי לחשוב איך להכין שאילתת עדכון מתאימה אבל הסתבכתי.
              ולמרבה שמחתי גיליתי סוג שאילתא חדשה שלא הכרתי "Make Table", נראה שנוצרה בדיוק בשביל זה.

              אבל לא הצלחתי לגרום לקוד VBA להריץ אותו, אני מקבל את השגיאה הבאה:
              467f3c32-63bf-4991-9bf2-615c0e2ec2af-image.png

              Debug מצביע על שורה 9

              בתחתית הטופס יש לחצן שמכיל את הקוד הבא:

              DoCmd.RunCommand (acCmdSaveRecord)
              
              On Error Resume Next
              DoCmd.DeleteObject acTable, "MailMerge"
              On Error GoTo 0
              
              CurrentDb.Execute "qryUpdate_Data", dbFailOnError
              
              CurrentDb.Execute "qryMake_MailMerge"
              
              DoCmd.GoToRecord , , acNext
              
              RunMailMerge "C:\Users\.....TEMPLATE.docx", "C:\Users......pdf", True
              

              יש לציין שהשאילתא עובדת מצוין בהרצה ידנית, רק לא דרך הקוד.
              תחביר השאילתא:

              
              SELECT qrySelect_currentID.Data.ID, qrySelect_currentID.Data.FirstName, qrySelect_currentID.Data.LastName, INTO MailMerge
              FROM qrySelect_currentID;
              
              

              מה יכול להיות?

              qrySelect_currentID = שאילתת קיבוץ שמביאה את נתוני הטופס שפתוח
              Data = טבלת הנתונים המרכזית

              ג. אהבתי את הפטנט ברג'יסטרי, לא חשבתי על זה 👏

              אכן חוסך המון זמן וגם גורם לוורד להיסגר מיד, לפני זה הייתי צריך לאשר שמירת שינויים...

              היה נחמד לחזור לאקסס אחרי תקופה שלא נגעתי...

              נחמד לראות שאתה משתמש בה לתועלת, וזו זריקת עידוד בשבילי להמשיך עם ההדרכה 🤞

              בעז"ה אשתדל יותר לשתף פעולה...

              OdedDvirO תגובה 1 תגובה אחרונה
              1
              • OdedDvirO מנותק
                OdedDvirO מנותק
                OdedDvir
                השיב לבערל ב נערך לאחרונה על ידי
                #30

                @בערל אני לא מבין את התחביר של השאילתא:

                SELECT qrySelect_currentID.Data.ID, qrySelect_currentID.Data.FirstName, qrySelect_currentID.Data.LastName, INTO MailMerge
                FROM qrySelect_currentID;
                
                1. איך יתכן שתי נקודות בשם שדה qrySelect_currentID.Data.ID, האם אתה משתמש בשדה עם ערכים מרובים?
                2. אחרי LastName יש פסיק מיותר
                בערלב תגובה 1 תגובה אחרונה
                1
                • בערלב מנותק
                  בערלב מנותק
                  בערל ניהול
                  השיב לOdedDvir ב נערך לאחרונה על ידי בערל
                  #31

                  @odeddvir אמר בהדפסת ד''וח מאקסס על בסיס קובץ וורד:

                  @בערל אני לא מבין את התחביר של השאילתא:

                  SELECT qrySelect_currentID.Data.ID, qrySelect_currentID.Data.FirstName, qrySelect_currentID.Data.LastName, INTO MailMerge
                  FROM qrySelect_currentID;
                  
                  1. איך יתכן שתי נקודות בשם שדה qrySelect_currentID.Data.ID, האם אתה משתמש בשדה עם ערכים מרובים?
                  2. אחרי LastName יש פסיק מיותר

                  האמת לא עשיתי את התחביר חבד אלא השתמשתי במעצב השאילתות ומשום מה ככה זה יצא (אולי בגלל שערכתי שאילתת קיבוץ קיימת והפכתי אותו ליצירת טבלה). הפסיק זה טעות שלי, (יש עוד שדות בהמשך שהשתמטתי בהעלאה לפורום...)

                  בכל אופן יצרתי אותו מחדש ועדיין אותו בעיה, ידנית זה עובד ומהקוד אני מקבל שגיאה כנ"ל.

                  SELECT qrySelect_currentID.ID, qrySelect_currentID.FirstName, qrySelect_currentID.LastName
                  INTO MailMerge
                  FROM qrySelect_currentID
                  
                  

                  ניסיתי גם לקחת ישירות מטבלת הנתונים:

                  SELECT Data.ID, Data.FirstName, Data.LastName
                  INTO MailMerge
                  FROM Data
                  WHERE (((Data.ID)=[Forms]![frmData]![ID]));
                  
                  OdedDvirO תגובה 1 תגובה אחרונה
                  0
                  • OdedDvirO מנותק
                    OdedDvirO מנותק
                    OdedDvir
                    השיב לבערל ב נערך לאחרונה על ידי
                    #32

                    @בערל מה התחביר של qryUpdate_Data?
                    (אגב: סליחה על הדיליי בתגובה, אני תוך כדי שיחה עם מישהו...)

                    בערלב תגובה 1 תגובה אחרונה
                    2
                    • בערלב מנותק
                      בערלב מנותק
                      בערל ניהול
                      השיב לOdedDvir ב נערך לאחרונה על ידי בערל
                      #33

                      @odeddvir אמר בהדפסת ד''וח מאקסס על בסיס קובץ וורד:

                      מה התחביר של qryUpdate_Data?

                      יש לי טופס שאני ממלא בו פרטים
                      וזה שאילתת עדכון שממלא חישובים לתוך שדות נוספים בטבלת הDATA
                      לדוגמה מחשב גיל לפי תאריך לידה, וממיר את תאריך הלידה לטקסט.

                      UPDATE Data SET Data.DobT = Format([dob],"dd/mm/yy"), 
                      Data.Age = IIf([age] Is Null,DateDiff("yyyy",[Dob],Now())+Int(Format(Now(),"mmdd")<Format([Dob],"mmdd")),[age]);
                      

                      אני צריך לפני ההדפסה שיעדכן את טבלת הנתונים במקום שאחשב אותם לבד במילוי הטופס.
                      גם כשאני מוחק את הכל מה-VBA ומשאיר רק את יצירת הטבלה הוא עושה בעיות.

                      
                      Private Sub cmdPrint_Click()
                      
                      CurrentDb.Execute "qryMake_MailMerge"
                      
                      End Sub
                      

                      @odeddvir אמר בהדפסת ד''וח מאקסס על בסיס קובץ וורד:

                      אגב: סליחה על הדיליי בתגובה

                      😱 🤔

                      סליחה???
                      אני זה שצריך לבקש...

                      OdedDvirO תגובה 1 תגובה אחרונה
                      1
                      • OdedDvirO מנותק
                        OdedDvirO מנותק
                        OdedDvir
                        השיב לבערל ב נערך לאחרונה על ידי
                        #34

                        @בערל אוקי. הניחוש שלי הוא שהטבלה MailMerge לא מספיקה להימחק לפני שאתה מנסה לבנות אותה מחדש. זה בגלל שיש השהייה בקריאה ל: "DoCmd.DeleteObject acTable, "MailMerge. ככה זה באקסס.

                        תוסיף את שתי הפונקציות השימושיות הבאות למודל חדש:

                        Public Function TableExist(TableName As String) As Boolean
                            TableExist = Not IsNull(DLookup("Name", "MSysObjects", "Name='" & TableName & "'"))
                        End Function
                        
                        Public Sub TableDelete(TableName As String)
                            If TableExist(TableName) Then CurrentDb.TableDefs.Delete (TableName)
                        End Sub
                        

                        ובקוד של הלחצן תמחק את הטבלה כך:

                        TableDelete "MailMerge"
                        CurrentDb.Execute "qryMake_MailMerge"
                        
                        בערלב תגובה 1 תגובה אחרונה
                        2
                        • בערלב מנותק
                          בערלב מנותק
                          בערל ניהול
                          השיב לOdedDvir ב נערך לאחרונה על ידי
                          #35

                          @odeddvir

                          אנסה
                          אבל השגיאה הנ"ל מתרחשת גם כאשר הטבלה נמחקת באופן ידני

                          OdedDvirO תגובה 1 תגובה אחרונה
                          1
                          • OdedDvirO מנותק
                            OdedDvirO מנותק
                            OdedDvir
                            השיב לבערל ב נערך לאחרונה על ידי OdedDvir
                            #36

                            @בערל אני חושב שהבנתי הפעם.
                            השגיאה הנ"ל פירושה ששדה מסויים בשאילתא לא נמצא.
                            כאשר אתה רוצה לקחת שדה מתוך טופס, הכל טוב ויפה כל עוד הדברים נשארים בתוך השאילתא.
                            אבל אם רוצים להריץ על ידי Execute שאילתא שמשתמשת בנתון מתוך טופס, זה גורם בעייה תחבירית, כי שם השדה [Forms]![frmData]![ID] לא תקין.

                            מה שאתה צריך לעשות הוא לחשב את הערך ואחר כך להכניס אותו לתחביר ה-SQL. כך:

                            TabeDelete "MailMerge"
                            Dim SQL as String
                            SQL = "SELECT Data.ID, Data.FirstName, Data.LastName " _
                                & "INTO MailMerge " _
                                & "FROM Data " _
                                & "WHERE (Data.ID = " & Me.ID & ");"
                            CurrentDb.Execute SQL
                            

                            הערה:
                            יש דרך יותר אלגנטית ותקנית לעשות את זה, על ידי העברת פרמטר לשאילתא, כך שתחביר השאילתא לא מופיע ישירות בקוד, אלא בשאילתא רגילה, דהיינו בתוך qryMake_MailMerge.
                            אם אכן כיוונתי לפתרון, אני אדריך אותך איך לעשות את זה.

                            בערלב 2 תגובות תגובה אחרונה
                            2
                            • בערלב מנותק
                              בערלב מנותק
                              בערל ניהול
                              השיב לOdedDvir ב נערך לאחרונה על ידי
                              #37

                              @odeddvir אמר בהדפסת ד''וח מאקסס על בסיס קובץ וורד:

                              @בערל אני חושב שהבנתי הפעם.
                              השגיאה הנ"ל פירושה ששדה מסויים בשאילתא לא נמצא.
                              כאשר אתה רוצה לקחת שדה מתוך טופס, הכל טוב ויפה כל עוד הדברים נשארים בתוך השאילתא.
                              אבל אם רוצים להריץ על ידי Execute שאילתא שמשתמשת בנתון מתוך טופס, זה גורם בעייה תחבירית, כי שם השדה [Forms]![frmData]![ID] לא תקין.

                              מה שאתה צריך לעשות הוא לחשב את הערך ואחר כך להכניס אותו לתחביר ה-SQL. כך:

                              TabeDelete "MailMerge"
                              Dim SQL as String
                              SQL = "SELECT Data.ID, Data.FirstName, Data.LastName " _
                                  & "INTO MailMerge " _
                                  & "FROM Data " _
                                  & "WHERE (Data.ID = " & Me.ID & ");"
                              CurrentDb.Execute SQL
                              

                              👍 👍 👏 👏

                              ת
                              עובד מעולה!!!
                              תודה ענקית על הכל!

                              תגובה 1 תגובה אחרונה
                              1
                              • בערלב מנותק
                                בערלב מנותק
                                בערל ניהול
                                השיב לOdedDvir ב נערך לאחרונה על ידי
                                #38

                                @odeddvir אמר בהדפסת ד''וח מאקסס על בסיס קובץ וורד:

                                הערה:
                                יש דרך יותר אלגנטית ותקנית לעשות את זה, על ידי העברת פרמטר לשאילתא, כך שתחביר השאילתא לא מופיע ישירות בקוד, אלא בשאילתא רגילה, דהיינו בתוך qryMake_MailMerge.
                                אם אכן כיוונתי לפתרון, אני אדריך אותך איך לעשות את זה.

                                לא אכפת לי שזה רץ מתוך VBA, אני לא זקוק לשאילתא לבד.
                                אבל מעניין אותי לשמוע כשיש לך זמן...

                                OdedDvirO תגובה 1 תגובה אחרונה
                                0
                                • OdedDvirO מנותק
                                  OdedDvirO מנותק
                                  OdedDvir
                                  השיב לבערל ב נערך לאחרונה על ידי OdedDvir
                                  #39

                                  @בערל כעת עלה לי רעיון הרבה יותר פשוט, שלא מצריך טבלת עזר כלל: פשוט נשנה ישירות את תחביר השאילתה של המיזוג.

                                  1. צור שאילתא qryMailMerge. (לא משנה מה התחביר שלה כרגע, אנו נשנה זאת מיד). ובמיזוג דואר תבחר אותה כמקור הנתונים.
                                  2. בקוד הלחצן:
                                  DoCmd.RunCommand (acCmdSaveRecord)
                                  CurrentDb.Execute "qryUpdate_Data", dbFailOnError
                                  
                                  Dim SQL as String
                                  SQL = "SELECT Data.ID, Data.FirstName, Data.LastName " _
                                      & "FROM Data " _
                                      & "WHERE (Data.ID = " & Me.ID & ");"
                                  CurrentDb.QueryDefs("qryMailMerge").SQL = SQL
                                  
                                  DoCmd.GoToRecord , , acNext
                                  RunMailMerge "C:\Users\.....TEMPLATE.docx", "C:\Users......pdf", True
                                  

                                  זהו. שורה 8 משנה את השאילתה כך שתציג את הנתונים הרלוונטים.
                                  זה גם עדיף למקרה שבו שינית את הנתונים ולא לחצת על הכפתור, הם יתעדכנו בוורד בכל מקרה.
                                  אמנם כך התחמקתי מלהסביר על שאילתת פרמטר, אבל עוד חזון למועד...

                                  תגובה 1 תגובה אחרונה
                                  5
                                  • בערלב מנותק
                                    בערלב מנותק
                                    בערל ניהול
                                    כתב ב נערך לאחרונה על ידי
                                    #40

                                    @odeddvir אמר בהדפסת ד''וח מאקסס על בסיס קובץ וורד:

                                    @בערל כעת עלה לי רעיון הרבה יותר פשוט, שלא מצריך טבלת עזר כלל: פשוט נשנה ישירות את תחביר השאילתה של המיזוג.

                                    1. צור שאילתא qryMailMerge. (לא משנה מה התחביר שלה כרגע, אנו נשנה זאת מיד). ובמיזוג דואר תבחר אותה כמקור הנתונים.
                                    2. בקוד הלחצן:
                                    DoCmd.RunCommand (acCmdSaveRecord)
                                    CurrentDb.Execute "qryUpdate_Data", dbFailOnError
                                    
                                    Dim SQL as String
                                    SQL = "SELECT Data.ID, Data.FirstName, Data.LastName " _
                                        & "FROM Data " _
                                        & "WHERE (Data.ID = " & Me.ID & ");"
                                    CurrentDb.QueryDefs("qryMailMerge").SQL = SQL
                                    
                                    DoCmd.GoToRecord , , acNext
                                    RunMailMerge "C:\Users\.....TEMPLATE.docx", "C:\Users......pdf", True
                                    

                                    זהו. שורה 8 משנה את השאילתה כך שתציג את הנתונים הרלוונטים.
                                    זה גם עדיף למקרה שבו שינית את הנתונים ולא לחצת על הכפתור, הם יתעדכנו בוורד בכל מקרה.
                                    אמנם כך התחמקתי מלהסביר על שאילתת פרמטר, אבל עוד חזון למועד...

                                    גאוני!

                                    עובד פנטסטי

                                    תודה על הכל!

                                    תגובה 1 תגובה אחרונה
                                    4
                                    • בערלב בערל התייחס לנושא זה ב
                                    • בערלב בערל התייחס לנושא זה ב
                                    • בערלב בערל התייחס לנושא זה ב
                                    • חייםיודלביץח חייםיודלביץ התייחס לנושא זה ב
                                    • OdedDvirO OdedDvir התייחס לנושא זה ב
                                    • OdedDvirO OdedDvir התייחס לנושא זה ב
                                    • OdedDvirO OdedDvir התייחס לנושא זה ב

                                    • 1
                                    • 2
                                    בא תתחבר לדף היומי!
                                    • התחברות

                                    • אין לך חשבון עדיין? הרשמה

                                    • התחברו או הירשמו כדי לחפש.
                                    • פוסט ראשון
                                      פוסט אחרון
                                    0
                                    • דף הבית
                                    • קטגוריות
                                    • פוסטים אחרונים
                                    • משתמשים
                                    • חיפוש
                                    • חוקי הפורום