@מעלה-ומוריד
תודה על הרעיון.
אבל לפי ההסבר של @one1010 זה לא מתאים לו.
צריך להביא את התאריך הקטן ביותר מבין אלו שגדולים מהנבחר.
=VLOOKUP(MIN(IF(D1<=A:A,A:A)),A:B,2,FALSE)
והוא צריך להיות פונקציית מערך, לא?
@מעלה-ומוריד
תודה על הרעיון.
אבל לפי ההסבר של @one1010 זה לא מתאים לו.
צריך להביא את התאריך הקטן ביותר מבין אלו שגדולים מהנבחר.
=VLOOKUP(MIN(IF(D1<=A:A,A:A)),A:B,2,FALSE)
והוא צריך להיות פונקציית מערך, לא?
@דוד-החדש כתב בקשרי גומלין בטבלאות חיצוניות מקושרות באקסס:
ואגב בשביל לעבוד בעבודה משותפת עם אותו מסד נתונים, האם הדרך הכי טובה להעלות ל-One Drive את המסד נתונים העורפי או להעלות למקום אחר או בצורה אחרת?
(מי אמר לך שיש דרך לעשות את זה בכלל, שהלכת לשאלה האם זה מתאים...)
אין דרך לשתף נתוני מסד נתונים של אקסס בענן.
אחזקת הנתונים בוואן דרייב או כל תקיה בענן רק תהרוס לך נתונים ותאכל ממנה הרבה הרבה קש בהמשך.
יש כמה וכמה אשכולות בנושא בפורום.
הדרך היחידה שבה ניתן לשתף מסד נתונים של אקסס היא בשרת מקומית, תקיית רשת או התחברות של כלל המשתמשים למחשב שרת אחת.
@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
@dovid כתב בבאקסס- פיתרון ליצירת טופס עם כניסה למנהלים בלבד-ללא שום קודים!!!:
תודה, אסדר זאת תיכף בע"ה.
שכחת מאיתנו
@one1010
נורא מסקרן אותי אם בנית את המערכת לבד או לקחת משהו קיים ומנסה להוסיף בו משהו.
לפי השאלות נראה שלא למדת עדיין את המדריך של @OdedDvir שנמצא כאן
אני לא רוצה להכניס לך את הכל עם כפית לפה. מלאתי את הכפית עכשיו תעבור קצת על הקוד ותנסה לראות מה אתה צריך להוסיף כדי שזה יעבוד.
לעצם שאלתך, אני לא יודע [לא בדקתי] אם הטפסי משנה שלך לוקחים נתונים מאותם טבלאות ואתה יכול לשלוח רק קובץ אחד לאימייל, או שאתה רוצה לשלוח 3 קבצים.
איך שתחליט, הארוחה מוכנה ועם קצת לימוד תוכל לעשות את זה לבד.
ולשאלה ב'. כדי לשלוח קובץ אקסל למייל עם תוצאות החיפוש אתה צריך לייצא קובץ אקסל מתוך שאילתה. את השאילתה הזאת אתה משכתב כל פעם לנתונים המתאימים בשבילך.
לחילופין אפשר גם לבנות קוד שיבנה סטרינג מלא של כל הנתונים ולשלוח למייל טקסט בגוף ההודעה בלי קובץ מצורף. אבל שוב, זה שאלה קצת אחרת וצריך לדעת איפה הידע שלך עומד ביחס לביצוע כדי שמישהו יוכל ל'הדריך' אותך.
@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 בקוד שלך,
זה ישכתב את השאילתה. כמובן, תחליף לפני זה את שםהשאילתה לשאילתה שיצרת.
ובקוד של הלחצן תכניס את הפקודה שמייצאת שאילתה שכתבתי לך למעלה ותוסיף גם את השליחה למייל.
תעשה חיפוש בVBA שלך של UpDateView
עד שתמצא מקום שהוא כתוב בשורה ראשונה של פונקציה, וכתוב אחריו סוגריים כאלו ()
ותדביק כאן את כל הפונקציה הזאת.
@one1010 כתב בשמירת שאילתא באקסס:
אשמח אם תסביר לי יותר את השאלה...
פשוט מאוד, איך הטופס מסתנן, יש לחצן שמסנן אותו? תביא את הקוד שמאחורי הלחצן,
אם זה מסתנן בצורה שונה, תביא את הקוד הזה.
יכול להיות שאם תעשה את מה שדוד אמר, אני מאמין שזה היה חוסך כמה פוסטים בפורום...
(@dovid יכול להיות שיש לו קובץ מוכן וקשה לו לבצע את הפירוק לנקודה הקנטה הזו, חוץ מזה שיכול להיות שזה לבד יגרור כמה פוסטים...)
איך אתה מסנן את הטופס?
@one1010 כתב בשמירת שאילתא באקסס:
איך אני יודע מה שם השאילתא?
אתה מחליט איזה שאילתה זה יהיה, תייצר שאילתה כל שהיא, ותכניס בה מה שאתה רוצה ותן לה כל שם שתרצה, בשורה הזאת תעדכן את שם השאילתה למה שכתבתי לך. (הנתונים בשאילתה לא משנה מה שתכניס, כי אתה משכתב את זה בשורה הראשונה שנתתי לך)
@one1010 כתב בשמירת שאילתא באקסס:
זה משנה?
בטח זה משנה,
איך שאתה מסנן את הטופס, ככה אתה מסנן את השאילתה.
@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
אתה צריך למחוק את כל המקומות שכתוב fsubForm
If Len(Me.txtFind) > 0 Then
Me.fsubForm.Form.Filter = "[" & Me.cobField & "] like " & Chr(34) & "*" & Me.txtFind & "*" & Chr(34)
Me.fsubForm.Form.FilterOn = True
Else
Me.fsubForm.Form.Filter = ""
Me.fsubForm.Form.FilterOn = False
End if
הקוד הזה עושה סינון לטופס משנה.
@ג-ינג-י @OdedDvir
אני משתמש עם הקוד הזה. בכל חיפושי הטפסים, נראה לי הרבה יותר קל.
בעת יציאה מתיבת החיפוש שכאן הוא txtFind הוא מבצע את החיפוש.
(אפשר להכניס אותו תוך כדי כתיבה ב'בעת שינוי', אבל בהרבה נתונים הוא ממש מאיט את העבודה)
והטופס משנה אצלי נקרא fsubForm
במקרה שאין טופס משנה, רק רוצים חיפוש בטופס הנוכחי, צריך להוריד את הfsubForm בכל המופעים
On Error GoTo err
Dim ctl As Control
Dim strFilter As String
If Me.fsubForm.SourceObject = "" Then Exit Sub
If Len(Me.txtFind.text) < 1 Then
Me.fsubForm.Form.FilterOn = False
Exit Sub
Else
End If
For Each ctl In Me.fsubForm.Form.Controls 'Me.Controls
If ctl.ControlType = acTextBox Or ctl.ControlType = acComboBox Then 'רק פקדי טקסט
If Left(ctl.ControlSource, 1) <> "=" Then 'דלג על תיבות טקסט מחושבים
strFilter = strFilter & "[" & ctl.ControlSource & "] Like " & Chr(34) & "*" & txtFind.text & "*" & Chr(34) & " OR "
End If
End If
Next
strFilter = Left(strFilter, Len(strFilter) - 4)
Me.fsubForm.Form.Filter = strFilter
Me.fsubForm.Form.FilterOn = True
Exit Sub
err:
Me.fsubForm.Form.Filter = ""
Me.fsubForm.Form.FilterOn = False
@מערכת
ביקשו לראות איך ה'טבלה' נראית. טבלה היא מקור נתונים לא פיווט.
אם אתה רוצה להיעזר, תן דוגמא של 2 הדברים,
1 הנתונים כפי שהם מופיעים.
2. איך אתה רוצה את התוצאה.
תוכל כמובן להשתמש עם נתוני דמה.
ואז ישמחו לעזור לך.
@evi952 כתב בWorkspace קבלת מיילים לדואר:
@מלא תודה לא לזה התכוונתי
יש לי מייל חשבון עסקי עם דומיין שרכשתי ואני צריך שם להגדיר את ההגדרות ושם זה קצת מסובך יש הרבה אפשרויות
כתבתי בתגובה הראשונה שלי, שאם הכוונה שלך זה בהגדרות של ג'ימייל.
אז התמונה שצירפתי לך, זה מהג'ימייל של חשבון workSpace עם דומיין פרטי.
@evi952
גלגל שיניים > הצגת כל ההגדרות > חשבונות
@evi952
מה שאני כתבתי לך זה בג'ימייל של חשבון וורקספייס
@evi952
לא הגדרתי אף פעם בפאוורלינק שליחת מיילים.
אם ההגדרה היא בגוגל אז כמו בכל חשבון ג'ימייל
יש לך אפשרות שליחת אימייל בשם
גלגל שיניים > הצג את כל ההגדרות > חשבונות
אם לזה התכוונת
@evi952
את ההגדרות האלה ביצעת?
https://www.powerlink.co.il/support/kb/הגדרות מערכת/הגדרות משתמש/הגדרת Team Inbox