שמירת שאילתא באקסס
-
@one1010 כתב בשמירת שאילתא באקסס:
אשמח אם תסביר לי יותר את השאלה...
פשוט מאוד, איך הטופס מסתנן, יש לחצן שמסנן אותו? תביא את הקוד שמאחורי הלחצן,
אם זה מסתנן בצורה שונה, תביא את הקוד הזה.יכול להיות שאם תעשה את מה שדוד אמר, אני מאמין שזה היה חוסך כמה פוסטים בפורום...
(@dovid יכול להיות שיש לו קובץ מוכן וקשה לו לבצע את הפירוק לנקודה הקנטה הזו, חוץ מזה שיכול להיות שזה לבד יגרור כמה פוסטים...) -
@מלא כתב בשמירת שאילתא באקסס:
(@dovid יכול להיות שיש לו קובץ מוכן וקשה לו לבצע את הפירוק לנקודה הקנטה הזו, חוץ מזה שיכול להיות שזה לבד יגרור כמה פוסטים...)
כל הכבוד הן על הסבלנות והן על לימוד הזכות.
אני ביקשתי ממנו להעלות והוא אמר שיש לו מוכן.
אני מבין שזה יכול להיות קשה ואפילו בלתי אפשרי לרמה מסויימת לבודד את המקרה לקובץ דוגמה, אבל כשזה מגיע לכזה דו שיח פוחתת הליגטימציה להיעזר בכגון דא דרך פורום. -
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
-
@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 בקוד שלך,
זה ישכתב את השאילתה. כמובן, תחליף לפני זה את שםהשאילתה לשאילתה שיצרת.ובקוד של הלחצן תכניס את הפקודה שמייצאת שאילתה שכתבתי לך למעלה ותוסיף גם את השליחה למייל.
-
@מלא כתב בשמירת שאילתא באקסס:
@one1010
זה נראה שיש לך בטופס 3 טפסי משנה והמסנן שלך מסנן את שלשתם.
אז אני לא יודע איזה מהם תרצה לשלוח במייל.אני לקחתי את הסינון הראשון בקוד שלך, תדביק את זה
ואם אני רוצה את שלושתם?
זה ישכתב את השאילתה. כמובן, תחליף לפני זה את שםהשאילתה לשאילתה שיצרת.
מה הכוונה?! איזו שאילתא יצרתי!? אני רק משתמש בטופס הקיים.
-
-
@one1010
נורא מסקרן אותי אם בנית את המערכת לבד או לקחת משהו קיים ומנסה להוסיף בו משהו.לפי השאלות נראה שלא למדת עדיין את המדריך של @OdedDvir שנמצא כאן
אני לא רוצה להכניס לך את הכל עם כפית לפה. מלאתי את הכפית עכשיו תעבור קצת על הקוד ותנסה לראות מה אתה צריך להוסיף כדי שזה יעבוד.
לעצם שאלתך, אני לא יודע [לא בדקתי] אם הטפסי משנה שלך לוקחים נתונים מאותם טבלאות ואתה יכול לשלוח רק קובץ אחד לאימייל, או שאתה רוצה לשלוח 3 קבצים.
איך שתחליט, הארוחה מוכנה ועם קצת לימוד תוכל לעשות את זה לבד.ולשאלה ב'. כדי לשלוח קובץ אקסל למייל עם תוצאות החיפוש אתה צריך לייצא קובץ אקסל מתוך שאילתה. את השאילתה הזאת אתה משכתב כל פעם לנתונים המתאימים בשבילך.
לחילופין אפשר גם לבנות קוד שיבנה סטרינג מלא של כל הנתונים ולשלוח למייל טקסט בגוף ההודעה בלי קובץ מצורף. אבל שוב, זה שאלה קצת אחרת וצריך לדעת איפה הידע שלך עומד ביחס לביצוע כדי שמישהו יוכל ל'הדריך' אותך. -
@ארי כתב בשמירת שאילתא באקסס:
@מלא כל הכבוד על הסבלנות.
נכון מאד!
@one1010 נראה לי שהגיע הזמן שתעשה קצת גוגל על דברים שמציעים לך, לא נראה לי שזו הדרך ללמוד אקסס.
תחפש איך יוצרים שאילתה, תעשה חיפוש על כל שורת קוד שמביאים לך כדי ללמוד מה היא עושה, ובסוף כמו שכולם לומדים תדע גם אתה מה לעשות.אתה צודק עקרונית, אני מאד אשמח ללמוד אקסס רק כרגע זה גדול עלי...
בהצלחה!
תודה רבה!
-
@מלא כתב בשמירת שאילתא באקסס:
@one1010
נורא מסקרן אותי אם בנית את המערכת לבד או לקחת משהו קיים ומנסה להוסיף בו משהו.כמו שכתבתי אני לא באמת מבין בזה כך שלא נראה לי באמת שאני יכול לבנות את זה לבד... -אני משתמש במשהו מוכן.
לפי השאלות נראה שלא למדת עדיין את המדריך של @OdedDvir שנמצא כאן
אני לא רוצה להכניס לך את הכל עם כפית לפה. מלאתי את הכפית עכשיו תעבור קצת על הקוד ותנסה לראות מה אתה צריך להוסיף כדי שזה יעבוד.
אני מבין... כמו שכתבתי כאן למעלה אני לא מבין בתכנות ואני לא חושב שבאמת אוכל ללמוד זאת ללא השקעה גדולה ולכן האמת היא שכרגע פשוט ביקשתי עזרה יותר מאשר ללמוד...
לעצם שאלתך, אני לא יודע [לא בדקתי] אם הטפסי משנה שלך לוקחים נתונים מאותם טבלאות ואתה יכול לשלוח רק קובץ אחד לאימייל, או שאתה רוצה לשלוח 3 קבצים.
אני רוצה לשלוח 3 קבצים- או קובץ אחד שיכיל את 3 התוצאות.
איך שתחליט, הארוחה מוכנה ועם קצת לימוד תוכל לעשות את זה לבד.
אני אנסה לבד קצת, מקווה שאצליח להגיע לאיזו שהיא תוצאה... אם לא אנסה שוב את סבלנותך..
ולשאלה ב'. כדי לשלוח קובץ אקסל למייל עם תוצאות החיפוש אתה צריך לייצא קובץ אקסל מתוך שאילתה. את השאילתה הזאת אתה משכתב כל פעם לנתונים המתאימים בשבילך.
מודה שאני לא מבין...[זאת הרמה שלי באקסס...] יש לי טופס חיפוש קיים, יש לי דאטה קיימת שבה נעשית החיפוש, איפה נכנסת כאן 'שאילתא' [מקווה שאני לא יוצא הדיוט..] אני סה"כ רוצה שברגע שאני מכניס לטופס הקיים שם לחיפוש יישלח למייל מה נכתב בטופס החיפוש ומה התוצאות שהתקבלו.
לחילופין אפשר גם לבנות קוד שיבנה סטרינג מלא של כל הנתונים ולשלוח למייל טקסט בגוף ההודעה בלי קובץ מצורף. אבל שוב, זה שאלה קצת אחרת וצריך לדעת איפה הידע שלך עומד ביחס לביצוע כדי שמישהו יוכל ל'הדריך' אותך.
עקרונית על זה חשבתי מראש, אבל אני בכלל לא בכיוון לדעת איך לעשות את זה. אני עומד במקום נמוך מדי...
שוב תודה רבה!
-
@ארי כתב בשמירת שאילתא באקסס:
@מלא כתב בשמירת שאילתא באקסס:
נורא מסקרן אותי אם בנית את המערכת לבד או לקחת משהו קיים ומנסה להוסיף בו משהו.
זה תוכנה מוכרת (ולא חוקית....)
לא צריך לכתוב כל דבר... לכן לא רציתי להעלות... אולי כדאי שתמחק?!
-
@one1010
אל תגלה לאף אחד... , בסוף הכנתי לך את הכל בכפית של כסף ממש.
תעדכן את הכתובות מייל במקומות המתאימים כמו שהדריכו אותך באשכול הסמוך.
הכנסתי גם את הקוד לשליחת מיילים משם, אז אם הוא כבר בקוד שלך, תמחק אותו, ותדביק את שלי.תמחק את השורות האלו
Private Sub FilterB_Click() On Error Resume Next UpDateView End Sub
ותדביק את כל זה
Private Sub FilterB_Click() On Error Resume Next UpDateView Dim strBodyText As String strBodyText = getBodyText(Me.Main.Form.RecordSource) & vbCrLf & vbCrLf strBodyText = strBodyText & getBodyText(Me.More.Form.RecordSource) & vbCrLf & vbCrLf strBodyText = strBodyText & getBodyText(Me.BB.Form.RecordSource) MsgBox Send(strBodyText) End Sub Function getBodyText(strSql As String) As String Dim rs As DAO.Recordset Dim i As Integer Dim strSeparator As String strSeparator = vbTab Set rs = CurrentDb.OpenRecordset(strSql) For i = 0 To rs.Fields.Count - 1 getBodyText = getBodyText & rs.Fields(i).Name & strSeparator Next i getBodyText = getBodyText & vbCrLf rs.MoveFirst Do While Not rs.EOF For i = 0 To rs.Fields.Count - 1 getBodyText = getBodyText & rs.Fields(i) & strSeparator Next i getBodyText = getBodyText & vbCrLf rs.MoveNext Loop rs.Clone rs.Close Set rs = Nothing End Function Public Function Send(strBodyText) Dim cdoConfig Dim msgOne Dim ErrStr Set cdoConfig = CreateObject("CDO.Configuration") With cdoConfig.Fields .Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = 465 .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.gmail.com" .Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "YourEmail@gmail.com" .Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "YourPasswoed" .Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True .Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1 .Update End With Set msgOne = CreateObject("CDO.Message") Set msgOne.Configuration = cdoConfig msgOne.To = "To name <SendTo@gmail.com>" msgOne.From = "Your Name <YourEmail@gmail.com>" msgOne.Subject = "Subject" msgOne.TextBody = "TextBody" 'msgOne.AddAttachment "C:\Users\1\Downloads\Some File.pdf" msgOne.Send End Function
-
@one1010 זה ממש לא תקין.
אם אתה רוצה שלא רק יתנו לך בכפית אלא גם יאכילו אותך, ואתה לא רוצה להעלות את הקובץ שלך לכאן. אתה יכול לייצא רק את המודול VBA לקובץ ואתו להעלות.
ככה אולי @מלא ירצה לעזור לך יותר...
תעמוד בחלון הVBA על הטופס שבו נמצא הקוד הנ"ל, תלחץ על מקש ימני, ואז על Export File, ותשמור אותו במחשב.
לאמח"כ תעלה לכאן את הקובץ הזה, ונראה אם יהיה קל יותר לעזור לך.