המאפיין CurrentRecord מזייף
-
שלום וברכה
יש לי טופס שמציג רשומות באקסס (טופס בודד), ויש לחצנים למעבר לרשומה הבא ולמעבר לרשומה הקודמת
אני מעוניין שכאשר הטופס טעון לרשומה הראשונה שלא יהיה מאופשר הלחצן של רשומה קודמת וכאשר הוא על הרשומה האחרונה שלא יהיה מאופשר הלחצן של רשומה הבאהכתבתי קוד כזה
GoPrevious.Enabled = CurrentRecord <> 1 GoNext.Enabled = CurrentRecord <> RecordsetClone.RecordCountאבל משום מה כאשר אני פותח את הטופס מתוך טופס אחר שמכיל את הרשומות בצורה של טפסים רציפים ואני עושה בתוכו חיפוש (על ידי
bookmarkבRecordSetClone) פתאום הוא משתבש ולפעמים חוסם את הכפתור הנ"ל למרות שהוא לא הראשון וכן להיפך
אשמח להכוונה
תודה! -
שלום וברכה
יש לי טופס שמציג רשומות באקסס (טופס בודד), ויש לחצנים למעבר לרשומה הבא ולמעבר לרשומה הקודמת
אני מעוניין שכאשר הטופס טעון לרשומה הראשונה שלא יהיה מאופשר הלחצן של רשומה קודמת וכאשר הוא על הרשומה האחרונה שלא יהיה מאופשר הלחצן של רשומה הבאהכתבתי קוד כזה
GoPrevious.Enabled = CurrentRecord <> 1 GoNext.Enabled = CurrentRecord <> RecordsetClone.RecordCountאבל משום מה כאשר אני פותח את הטופס מתוך טופס אחר שמכיל את הרשומות בצורה של טפסים רציפים ואני עושה בתוכו חיפוש (על ידי
bookmarkבRecordSetClone) פתאום הוא משתבש ולפעמים חוסם את הכפתור הנ"ל למרות שהוא לא הראשון וכן להיפך
אשמח להכוונה
תודה!@מומחה-באקסס המאפיינים CurrentRecord ו-RecordCount מתעדכנים בצורה א-סינכרונית. כלומר, אקסס לא טוענת מייד את כל הרשומות, ולכן הם עלולים להציג ערך שגוי כל עוד הרשימה לא נטענה במלואה.
תוכל לאלץ את הטופס לטעון את כל הרשומות על ידי קפיצה לרשומה האחרונה על ידי MoveLast. -
@מומחה-באקסס המאפיינים CurrentRecord ו-RecordCount מתעדכנים בצורה א-סינכרונית. כלומר, אקסס לא טוענת מייד את כל הרשומות, ולכן הם עלולים להציג ערך שגוי כל עוד הרשימה לא נטענה במלואה.
תוכל לאלץ את הטופס לטעון את כל הרשומות על ידי קפיצה לרשומה האחרונה על ידי MoveLast. -
@www ערך המאפיין נקבע רק בזמן שכל הרשומות נטענו, ובוצעה גישה לרשומה האחרונה. בשעת מחיקת רשומה על ידי המשתמש שפתח את קבוצת הרשומות (להלן RS) המאפיין יוקטן. עם זאת, אם נמחקה רשומה על ידי משתמשים אחרים שלא פתחו את ה-RS, המאפיין לא יעודכן עד שהמשתמש שפתח את ה-RS מנסה לגשת לרשומה שנמחקה. מה שיגרום לתוצאות לא נכונות.
במקרה של ריבוי משתמשים, עדיף להשתמש בשאילתת קיבוץ או ב-DCount כדי לקבל את הערך העכשווי.
יש באתר של מיקרוסופט הסבר נרחב על התופעה, כולל דוגמאות המחשה. -
@www ערך המאפיין נקבע רק בזמן שכל הרשומות נטענו, ובוצעה גישה לרשומה האחרונה. בשעת מחיקת רשומה על ידי המשתמש שפתח את קבוצת הרשומות (להלן RS) המאפיין יוקטן. עם זאת, אם נמחקה רשומה על ידי משתמשים אחרים שלא פתחו את ה-RS, המאפיין לא יעודכן עד שהמשתמש שפתח את ה-RS מנסה לגשת לרשומה שנמחקה. מה שיגרום לתוצאות לא נכונות.
במקרה של ריבוי משתמשים, עדיף להשתמש בשאילתת קיבוץ או ב-DCount כדי לקבל את הערך העכשווי.
יש באתר של מיקרוסופט הסבר נרחב על התופעה, כולל דוגמאות המחשה. -
@odeddvir אמר בהמאפיין CurrentRecord מזייף:
@www מעניין. מהי הפקודה שבה אתה משתמש לפתיחת ה-RS?
Dim NN As Recordset Set NN = CurrentDb.OpenRecordset("NN") If Not NN.EOF And NN.BOF Then NN.MoveLast MsgBox NN.RecordCount For n = 1 To NN.RecordCountאני רואה כרגע שכבר ניסיתי בעבר לשים MoveLast, וזה לא עזר...
-
@odeddvir אמר בהמאפיין CurrentRecord מזייף:
@www מעניין. מהי הפקודה שבה אתה משתמש לפתיחת ה-RS?
Dim NN As Recordset Set NN = CurrentDb.OpenRecordset("NN") If Not NN.EOF And NN.BOF Then NN.MoveLast MsgBox NN.RecordCount For n = 1 To NN.RecordCountאני רואה כרגע שכבר ניסיתי בעבר לשים MoveLast, וזה לא עזר...
@www אמר בהמאפיין CurrentRecord מזייף:
If Not NN.EOF And NN.BOF Then NN.MoveLastהשורה הזו נראית שגויה, כי בפתיחה של RecordSet שמכיל לפחות רשומה אחת, התנאי יחזיר False ולא יבוצע MoveLast, כי Not קודם ל-And, לכן הקוד מתפרש כך:
If (Not NN.EOF) And (NN.BOF) Then NN.MoveLastאולי התכוונת כך:
If Not NN.EOF And Not NN.BOF Then NN.MoveLastשפירושו כך:
If (Not NN.EOF) And (Not NN.BOF) Then NN.MoveLast -
@www אמר בהמאפיין CurrentRecord מזייף:
If Not NN.EOF And NN.BOF Then NN.MoveLastהשורה הזו נראית שגויה, כי בפתיחה של RecordSet שמכיל לפחות רשומה אחת, התנאי יחזיר False ולא יבוצע MoveLast, כי Not קודם ל-And, לכן הקוד מתפרש כך:
If (Not NN.EOF) And (NN.BOF) Then NN.MoveLastאולי התכוונת כך:
If Not NN.EOF And Not NN.BOF Then NN.MoveLastשפירושו כך:
If (Not NN.EOF) And (Not NN.BOF) Then NN.MoveLast