@אוריי תיקנתי במקור (הסוגריים היו מיותרות)
סליחה על הבורות לא הבנתי בדיוק מה אני אמור לעשות (איך ליצור את המשתנים)
פשוט תרשום את השורה בקוד של הטופס (מחוץ לפונקציה)
@אוריי תיקנתי במקור (הסוגריים היו מיותרות)
סליחה על הבורות לא הבנתי בדיוק מה אני אמור לעשות (איך ליצור את המשתנים)
פשוט תרשום את השורה בקוד של הטופס (מחוץ לפונקציה)
@NOKIA אמר באישור רופא לא ללבוש מסיכה:
אני צריך מסמך אישור מרופא שלא צריך ללבוש מסיכה עקב בעיה רפואית בנשימה וכד'
אם יש הצדקה לכך - למה שלא תבקש מהרופא?
אם אין - כדאי שתעיין בחוקי הפורום
@אוריי
שלב א: קוד בסיסי להעתקת בסיס הנתונים לקובץ חדש:
Private Sub BackupDatabase()
Dim FSO As Object
Set FSO = CreateObject("Scripting.FileSystemObject")
FSO.CopyFile "MyDB.accdb", "BackupDB.accdb", True 'Overwrite old file
End Sub
שלב ב: בדיקה אם התאריך השתנה:
עליך לבצע בדיקה האם התאריך השתנה, לשם כך עליך לשמור במשתנה את תאריך הגיבוי האחרון
צור בטופס הראשי משתנה LastBackupDate
Private LastBackupTime as Date
שלב ג: אתחול המשתנה בפתיחת התוכנה
נשתמש בארוע Form_Load() של הטופס הראשי
Private Sub Form_Load()
' ...
LastBackupTime = #1/1/2000# 'סתם ערך ישן לדוגמא
End Sub
כמובן שבתרחיש האמיתי עליך לשמור את הערך היכן שהוא (למשל בטבלה) ולשלוף אותו משם בפתיחת התוכנה.
שלב ד: יצירת ארוע פסיקת שעון בטופס הראשי:
עכשיו צריך לבדוק מדי פעם האם התאריך השתנה מהגיבוי האחרון, ואם כן - לקרוא לפונקציה BackupDatabase
לשם כך תשתמש בארוע Form_Timer() של הטופס הראשי (זה שפתוח תמיד בתוכנה):
Private Sub Form_Timer()
dateNow = Date()
If (Abs(DateDiff("d", LastBackupTime, dateNow)) > 0) Then
BackupDatabase
LastBackupTime = dateNow 'שמירת התאריך החדש
End If
End Sub
שלב ה (ואחרון): קביעת מרווח הזמן שבו ייקרא הארוע Timer
במאפייני הטופס הראשי יש מאפיין בשם "קצב פסיקת שעון". שם מגדירים (באלפיות שניה) את מרווח הזמן שעבורו הטופס קורא לפונקציה Timer(). כרגע הוא 0. תכניס שם ערך חדש כמו 60000 (=60 שניות).
זהו. עכשיו תתבצע בדיקה לשינוי התאריך בכל דקה!
בהצלחה
סליחה על שאני מעורר רדומים
ומסתמא יש ל @dovid עוד דברים חשובים
אבל חכמה היא וללמוד אני צריך
אז אם אפשר להוסיף עוד קצת למדריך
אפילו אלמלא לא זכינו
לפעם אחת בחודש
- דיינו
@אוריי תבדוק במאפייני הדוח האם מסומן "אפשר תצוגת דוח"

@אוריי אמר במחפש קוד vba להדפיס דוחות אקסס במהירות לפי רשימת אקסל או אקסס:
אבל אני רוצה שהוא ידפיס לי בלי תצוגה מקדימה
עריכה:
תשנה ל:
DoCmd.OpenReport "yy", acViewNormal
@אוריי אמר במחפש קוד vba להדפיס דוחות אקסס במהירות לפי רשימת אקסל או אקסס:
האם יש סיכוי שאתה קצת מסביר לי על הקוד הזה
אשמח להסביר הכל, אבל לצערי אני חייב לסיים כעת. אהיה פנוי יותר לקראת הערב אם תרצה
@אוריי אמר במחפש קוד vba להדפיס דוחות אקסס במהירות לפי רשימת אקסל או אקסס:
אבל אני חשבתי על פתרון אחר יותר קל לעניות דעתי בצורה כזו
מצוין.
אתה צריך לעשות לולאה על טבלה. אני אדגים כאן באופן כללי:
נניח שיש לי טבלה MyTable ואני רוצה לעבור על כל השורות ולהדפיס את השדה MyNumber:
Dim rs as DAO.Recordset
Set rs = CurrentDb.OpenRecordset("MyTable", dbReadOnly, dbSnapshot)
rs.MoveFirst
While Not rs.EOF
Debug.Print rs!MyNumber 'הדפס את הערך בשדה
rs.MoveNext
Wend
rs.Close
@אוריי אתה צריך ליצור פונקציה שמשנה את השאילתא שעליו מבוסס הדוח. אני מניח שכרגע השאילתא הנ"ל שולפת את המספר ישירות מהטופס, אתה צריך ליצור משפט SQL שבונה את השאילתא בהתאם לפרמטר שאתה תעביר לו בשעת הקריאה.
עבור לשאילתא שעליה מבוסס הטופס, ותציג אותה בתצוגת SQL, ותדביק כאן את הנוסח שקיבלת.
@אוריי זו אכן הדרך הנכונה.
אם אין ענין דווקא בקובץ אקסל - יהיה יותר נוח על טבלה באקסס, למרות שאקסס מסוגלת לייבא בקלות קובץ אקסל עם מבנה טבלה תקין. (הבעיות מתחילות כשהקובץ לא נראה כמו טבלה)
בוא ונפרק את המשימה לשלבים:
מישהו מכיר מקום שאפשר לקנות בו פרסים \ צעצועים בסיטונאות בזול (לקראת סיום מבצע גדול בת"ת)?
@NOKIA אמר בעזרה בבחירת מאוורר \ ונטה מחו"ל:
התקציב הוא 200 ש"ח
מנסיון שלי, בארץ תצטרך להשקיע לפחות פי 4 על מה שאתה מבקש.
יש לי יחידת מקלחת 3 מ"ר והיא זקוקה לוונטה טורבו בשביל שלא יצטברו אדים ועובש. קניתי במחיר 800 ש"ח. קניתי פעמיים מ"אוורור רמת גן" (החלפתי אחרי 8 שנים) והמוצרים שלהם טובים (אמנם לא כל כך זולים)
@אוריי אין אפשרות בקוד, אפשר על ידי מאקרו על הטבלה - אבל אני לא ממליץ.
צור טופס רציף המכיל את השדות בטבלה ושם תוסיף את הקוד.
@אוריי אמר בתאריך ושעת יצירת שורה בטבלת אקסס:
ואיפה אני כותב את זה בגיליון נתונים?
אם אתה מתכוון להגדרות ערך ברירת מחדל השדה בטבלה - לא צריך, הקוד מחליף אותן.
@אוריי זה לא יעבוד מפני שערך ברירת המחדל נקבע בשעת יצירת הרשומה ולא בשעת השמירה שלה, ואתה רוצה את האפשרות השניה.
הנכון בעיני כמו ש @zvinissim יעץ לך, להשתמש באירוע לפני שמירה של הטופס.
Private Sub Form_BeforeUpdate(Cancel As Integer)
If Me.NewRecord Then
Me.CreatedOn = Now()
End If
End Sub
כמו כן לא כדאי להפריד את התאריך והשעה לשתי שדות נפרדים, אלא הנכון לשמור רק שדה אחד של תאריך, ואח"כ בתצוגה ניתן להציג בנפרד
@אוריי אמר בתאריך ושעת יצירת שורה בטבלת אקסס:
ניסית לכתוב בבונה נוסחת iif בצורה כזו ומשום מה לא עובד אולי צריך לכתוב את זה בצורה שונה
באיזה בונה רשמת, מה המטרה של ה-iif?
@אוריי במאפייני השדה בטבלה תכניס ערך ברירת מחדל Now()
