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

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

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

שמירת שאילתא באקסס

מתוזמן נעוץ נעול הועבר תכנות
42 פוסטים 4 כותבים 946 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • O מנותק
    O מנותק
    one1010
    כתב ב נערך לאחרונה על ידי
    #1

    בהמשך לפוסט הזה: https://tchumim.com/post/152933

    יש לי קובץ אקסס שמכיל דאטה של שמות פלוס טופס חיפוש שבו ניתן לחפש לפי שם, משפחה, כתובות וכדו',

    אני מעוניין ליצור העתק מכל שאילתא [כלומר של השאילתא והתוצאות שלה] שתשלח במייל [שליחת המייל מטופלת בפוסט האמור] דרך שרת STMP.

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

    1. זו באמת הדרך הנכונה?
    2. במידה וכן אשמח להדרכה ממי שיש לו סבלנות... [אני לא באמת מבין בזה...]

    תודה רבה

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

      @one1010
      אתה צריך ליצור או לשכתב שאילתה ייעודית לחיפוש הנוכחי.
      לייצא אותה לאקסל
      ולשלוח את האקסל במייל.

      ככה אתה משכתב שאילתה קיימת:

      CurrentDb.QueryDefs("שםהשאילתה").SQL = "select * from [שם הטבלה] " & " where " & תוצאותהחיפוש
      

      'תוצאותהחיפוש' תלוי איך עשית את החיפוש, אבל בהמשך לפוסט הזה,
      זה תוצאות החיפוש
      "[" & Me.cobField & "] like " & Chr(34) & "" & Me.txtFind & "" & Chr(34)

      וככה אתה מייצא את השאילתה לאקסל:

          DoCmd.TransferSpreadsheet acExport, , "שםהשאילתה", strPath , False
      

      למשתנה strPath צריך לתת נתיב מלא ושם הקובץ לפני הפעלת השורה.
      זה דוגמא לאיך לתת לו נתיב ושם עם התאריך הנוכחי

          Dim strPath As String
          strPath = CurrentProject.Path & "\" & "שםכלשהו" & Format(Date, "dd-mm-yyyy")  & ".xls"
      
      

      ואז לשלוח את הנתיב הזה למייל.

      תוכל למחוק את הקובץ מהמחשב אחרי השליחה ככה

      If Len(dir(strPath)) > 0 Then Kill strPath
      
      O תגובה 1 תגובה אחרונה
      6
      • O מנותק
        O מנותק
        one1010
        השיב למלא ב נערך לאחרונה על ידי
        #3

        @מלא כתב ב[שמירת שאילתא באקסס]כמו שכתבתי אני לא באמת מבין בזה...
        אשמח לקבל הסברים לנקודות הבאות:

        ככה אתה משכתב שאילתה קיימת:

        CurrentDb.QueryDefs("שםהשאילתה").SQL = "select * from [שם הטבלה] " & " where " & 
        

        איך אני יודע מה שם השאילתא?

        תוצאותהחיפוש

        'תוצאותהחיפוש' תלוי איך עשית את החיפוש, אבל בהמשך לפוסט [*הזה*](https://tchumim.com/topic/15033/%D7%A2%D7%96%D7%A8%D7%94-%D7%91%D7%97%D7%99%D7%A4%D7%95%D7%A9-%D7%91%D7%90%D7%A7%D7%A1%D7%A1), 
        זה תוצאות החיפוש
         "[" & Me.cobField & "] like " & Chr(34) & "*" & Me.txtFind & "*" & Chr(34)
        

        במקרה שלי יש טופס עם כמה שדות שניתן להכניס בכל אחת מהן לחיפוש [שם בתא של השם כתובת בתא של הכתובת וכן הלאה]
        זה משנה?

        זהו כרגע... נגמור עם זה ונתקדם...

        תודה רבה

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

          @one1010 כתב בשמירת שאילתא באקסס:

          איך אני יודע מה שם השאילתא?

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

          @one1010 כתב בשמירת שאילתא באקסס:

          זה משנה?

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

          O תגובה 1 תגובה אחרונה
          0
          • O מנותק
            O מנותק
            one1010
            השיב למלא ב נערך לאחרונה על ידי
            #5

            @מלא כתב בשמירת שאילתא באקסס:

            @one1010 כתב בשמירת שאילתא באקסס:

            איך אני יודע מה שם השאילתא?

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

            אתה מתכוון שאחרי שעשיתי את החיפוש בפועל אני צריך לעדכן ידנית בכל פעם? כי אם כן אני מעוניין שבאופן אוטומטי אחרי כל חיפוש התהלך יתבצע אוטומטי.

            @one1010 כתב בשמירת שאילתא באקסס:

            זה משנה?

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

            יש דרך לבנאדם פשוט כמוני לדעת מה צריך לשנות?...

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

              איך אתה מסנן את הטופס?

              O תגובה 1 תגובה אחרונה
              0
              • O מנותק
                O מנותק
                one1010
                השיב למלא ב נערך לאחרונה על ידי
                #7

                @מלא כתב בשמירת שאילתא באקסס:

                איך אתה מסנן את הטופס?

                אשמח אם תסביר לי יותר את השאלה...

                [כל הכבוד על הסבלנות!..]

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

                  @one1010 יש סיבה למה לא העלית עד עכשיו קובץ דוגמה?

                  מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                  בכל נושא אפשר ליצור קשר dovid@tchumim.com

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

                    @one1010 כתב בשמירת שאילתא באקסס:

                    אשמח אם תסביר לי יותר את השאלה...

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

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

                    dovidD O 2 תגובות תגובה אחרונה
                    0
                    • dovidD מנותק
                      dovidD מנותק
                      dovid ניהול
                      השיב למלא ב נערך לאחרונה על ידי
                      #10

                      @מלא כתב בשמירת שאילתא באקסס:

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

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

                      מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                      בכל נושא אפשר ליצור קשר dovid@tchumim.com

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

                        @מלא כתב בשמירת שאילתא באקסס:

                        יש לחצן שמסנן אותו? תביא את הקוד שמאחורי הלחצן,

                        כן,
                        אני מדביק אותו. הוא נראה לי קצר מדי בשביל מה שאתה שואל...

                        Private Sub FilterB_Click()
                        On Error Resume Next
                        UpDateView
                        End Sub

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

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

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

                            @מלא

                            Private Sub UpDateView()
                            On Error Resume Next
                            st0 = 1
                            st = 0
                            'On Error GoTo UpDateView_Err
                            [Forms]![SearchPage2].More.Form.RecordSource = ""
                            Dim stLinkCriteria As String
                            Dim stLinkCriteriaE As String
                            
                            If Not IsNull([ID]) Then
                            stLinkCriteria = stLinkCriteria & " and M.ID" & Fld2Txt(ID) '((M.ID) = " & ID & ") "
                            stLinkCriteriaE = stLinkCriteriaE & " and campaign_voters.voter_id" & Fld2Txt(ID)
                            End If
                            If Not IsNull([ID_FATHER2]) Then stLinkCriteria = stLinkCriteria & " and ((M.ID_FATHER) = " & ID_FATHER2 & ") "
                            
                            If Not IsNull([ID_MOTHER2]) Then stLinkCriteria = stLinkCriteria & " and ((M.ID_MOTHER) = " & ID_MOTHER2 & ") "
                            If Not IsNull([B_COUNTRY]) Then stLinkCriteria = stLinkCriteria & " and B_COUNTRY " & Fld2Txt([B_COUNTRY])
                            If Not IsNull([B_YEAR]) Then stLinkCriteria = stLinkCriteria & " and B_YEAR" & Fld2Txt([B_YEAR], True)
                            If Not IsNull([SEX]) Then stLinkCriteria = stLinkCriteria & " and SEX" & Fld2Txt([SEX])
                            
                            If Not IsNull([L_NAME]) Then
                            stLinkCriteria = stLinkCriteria & " and L_NAME" & Fld2Txt([L_NAME])
                            stLinkCriteriaE = stLinkCriteriaE & " and campaign_voters.last_name" & Fld2Txt(L_NAME)
                            End If
                            If Not IsNull([F_NAME]) Then
                            stLinkCriteria = stLinkCriteria & " and F_NAME" & Fld2Txt([F_NAME])
                            stLinkCriteriaE = stLinkCriteriaE & " and campaign_voters.first_name" & Fld2Txt(F_NAME)
                            End If
                            If Not IsNull([FATHER_NAME]) Then
                            stLinkCriteria = stLinkCriteria & " and FATHER_NAME" & Fld2Txt([FATHER_NAME])
                            stLinkCriteriaE = stLinkCriteriaE & " and campaign_voters.father_name" & Fld2Txt([FATHER_NAME])
                            End If
                            If Not IsNull([MOTHER_NAME]) Then stLinkCriteria = stLinkCriteria & " and MOTHER_NAME" & Fld2Txt([MOTHER_NAME])
                            If Not IsNull([STREET]) Then
                            stLinkCriteria = stLinkCriteria & " and STREET" & Fld2Txt([STREET])
                            stLinkCriteriaE = stLinkCriteriaE & " and campaign_voters.street" & Fld2Txt([STREET])
                            End If
                            If Not IsNull([HOUSE]) Then
                            stLinkCriteria = stLinkCriteria & " and HOUSE" & Fld2Txt([HOUSE])
                            stLinkCriteriaE = stLinkCriteriaE & " and campaign_voters.house_number" & Fld2Txt([HOUSE])
                            End If
                            If Not IsNull([ID_CITY]) Then
                            stLinkCriteria = stLinkCriteria & " and ID_CITY" & Fld2Txt([ID_CITY])
                            stLinkCriteriaE = stLinkCriteriaE & " and cities.name" & Fld2Txt(DLookup("NAME_CITY", "[CITY]", "[ID] = " & [ID_CITY]))
                            
                            End If
                            stLinkCriteria = Right(stLinkCriteria, Len(stLinkCriteria) - InStr(2, stLinkCriteria, " ", vbTextCompare))
                            stLinkCriteriaE = Right(stLinkCriteriaE, Len(stLinkCriteriaE) - InStr(2, stLinkCriteriaE, " ", vbTextCompare))
                            If stLinkCriteria = "" Then
                            MsgBox ("חובה למלאות לפחות שדה אחד")
                            ID.SetFocus
                            Exit Sub
                            End If
                            Application.Echo False, "מחשב נתונים..."
                            Me.Main.Form.RecordSource = ""
                            Me.Main.Form.RecordSource = "SELECT TOP " & TOPF & " M.*, CITY.NAME_CITY, COUNTRY.NAME_HEB" & _
                                              " FROM (M LEFT JOIN CITY ON M.ID_CITY = CITY.ID) LEFT JOIN COUNTRY ON M.B_COUNTRY = COUNTRY.ID" & _
                                              " WHERE (" & stLinkCriteria & ")"
                            Me.Main.SetFocus
                            
                            stLinkCriteria2 = " (((M.ID)=[Forms]![SearchPage2].[main]![MainMAID])) OR (((M.ID)=[Forms]![SearchPage2].[main]![MainFaID])) "
                            Me.More.Form.RecordSource = "SELECT  M.*, CITY.NAME_CITY, COUNTRY.NAME_HEB" & _
                                              " FROM (M LEFT JOIN CITY ON M.ID_CITY = CITY.ID) LEFT JOIN COUNTRY ON M.B_COUNTRY = COUNTRY.ID" & _
                                              " WHERE (" & stLinkCriteria2 & ")" & _
                                              " ORDER BY M.B_YEAR"
                            TabStrip6.Object.Value = 0
                            TabStrip6_Updated (0)
                                              
                            Dim stLink As String
                            
                            Me.BB.Form.RecordSource = ""
                            stLink = "SELECT TOP " & TOPF & " campaign_voters.voter_id, campaign_voters.last_name, campaign_voters.first_name, campaign_voters.father_name, campaign_voters.street, campaign_voters.house_number, campaign_voters.apartment_number, cities.name, voters.phone, voters.email, voters.home_phone, voters.extra_phone, voters.comment, admin_users.name" & _
                                              " FROM ((voters RIGHT JOIN campaign_voters ON voters.campaign_voter_oid = campaign_voters.oid) LEFT JOIN admin_users ON voters.admin_user_oid = admin_users.[oid]) LEFT JOIN cities ON campaign_voters.city_oid = cities.[oid]" & _
                                              " WHERE (" & stLinkCriteriaE & ")" & _
                                             " ORDER BY campaign_voters.voter_id"
                            Me.BB.Form.RecordSource = stLink
                            Me.BB.SetFocus
                            
                            Application.Echo True
                            
                            UpDateView_Exit:
                                Exit Sub
                            
                            UpDateView_Err:
                                MsgBox Error$, , "שגיאה מס' " & err
                                Resume UpDateView_Exit
                            
                            End Sub
                            
                            
                            מלאמ תגובה 1 תגובה אחרונה
                            0
                            • מלאמ מנותק
                              מלאמ מנותק
                              מלא
                              השיב לone1010 ב נערך לאחרונה על ידי
                              #14

                              @one1010
                              זה נראה שיש לך בטופס 3 טפסי משנה והמסנן שלך מסנן את שלשתם.
                              אז אני לא יודע איזה מהם תרצה לשלוח במייל.

                              אני לקחתי את הסינון הראשון בקוד שלך, תדביק את זה

                              CurrentDb.QueryDefs("שםהשאילתה").SQL = "SELECT TOP " & TOPF & " M.*, CITY.NAME_CITY, COUNTRY.NAME_HEB" & _
                                                " FROM (M LEFT JOIN CITY ON M.ID_CITY = CITY.ID) LEFT JOIN COUNTRY ON M.B_COUNTRY = COUNTRY.ID" & _
                                                " WHERE (" & stLinkCriteria & ")"
                              

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

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

                              O 2 תגובות תגובה אחרונה
                              1
                              • O מנותק
                                O מנותק
                                one1010
                                השיב למלא ב נערך לאחרונה על ידי
                                #15
                                פוסט זה נמחק!
                                תגובה 1 תגובה אחרונה
                                0
                                • O מנותק
                                  O מנותק
                                  one1010
                                  השיב למלא ב נערך לאחרונה על ידי
                                  #16

                                  @מלא כתב בשמירת שאילתא באקסס:

                                  @one1010
                                  זה נראה שיש לך בטופס 3 טפסי משנה והמסנן שלך מסנן את שלשתם.
                                  אז אני לא יודע איזה מהם תרצה לשלוח במייל.

                                  אני לקחתי את הסינון הראשון בקוד שלך, תדביק את זה

                                  ואם אני רוצה את שלושתם?

                                  זה ישכתב את השאילתה. כמובן, תחליף לפני זה את שםהשאילתה לשאילתה שיצרת.

                                  מה הכוונה?! איזו שאילתא יצרתי!? אני רק משתמש בטופס הקיים.

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

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

                                    O תגובה 1 תגובה אחרונה
                                    0
                                    • מלאמ מנותק
                                      מלאמ מנותק
                                      מלא
                                      השיב לone1010 ב נערך לאחרונה על ידי
                                      #18

                                      @one1010
                                      נורא מסקרן אותי אם בנית את המערכת לבד או לקחת משהו קיים ומנסה להוסיף בו משהו.

                                      לפי השאלות נראה שלא למדת עדיין את המדריך של @OdedDvir שנמצא כאן

                                      אני לא רוצה להכניס לך את הכל עם כפית לפה. מלאתי את הכפית עכשיו תעבור קצת על הקוד ותנסה לראות מה אתה צריך להוסיף כדי שזה יעבוד.

                                      לעצם שאלתך, אני לא יודע [לא בדקתי] אם הטפסי משנה שלך לוקחים נתונים מאותם טבלאות ואתה יכול לשלוח רק קובץ אחד לאימייל, או שאתה רוצה לשלוח 3 קבצים.
                                      איך שתחליט, הארוחה מוכנה ועם קצת לימוד תוכל לעשות את זה לבד.

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

                                      א O 2 תגובות תגובה אחרונה
                                      0
                                      • O מנותק
                                        O מנותק
                                        one1010
                                        השיב לארי ב נערך לאחרונה על ידי
                                        #19

                                        @ארי כתב בשמירת שאילתא באקסס:

                                        @מלא כל הכבוד על הסבלנות.

                                        נכון מאד!

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

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

                                        בהצלחה!

                                        תודה רבה!

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

                                          @מלא כתב בשמירת שאילתא באקסס:

                                          נורא מסקרן אותי אם בנית את המערכת לבד או לקחת משהו קיים ומנסה להוסיף בו משהו.

                                          זה תוכנה מוכרת (ולא חוקית....)

                                          O תגובה 1 תגובה אחרונה
                                          1

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

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

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