- הוסף לסימניות
- #1
שלו' וברכה
אציג בעיה, ועמה פתרונים שניתן לעשות
ואשמח אם למישהו יש פתרונות יותר טובים
כידוע לכל רשומה עושים בדר"כ מספר מזהה (ID), בתוכנות מקצועיות להנהלת חשבונות וכו', יש חשיבות מיוחדת שמספרים המזהים יהיו עוקבים (אם משרד המיסים יעשה ביקור בחברה מסוימת, וימצאו שחסר מספר של חשבונית מסוימת זה יעורר סימני שאלה...)
לצורך כך יש באקסס "מספור אוטומטי", אשר מוסיף בכל רשומה שנפתחה, את המספר העוקב הבא.
ועכשיו לבעיה, שאם מתחילים להוסיף רשומה, האקסס מייד מקצה את המספר הבא, ואם בסוף נחליט שלא להוסיף כרגע, ונמחק את הרשומה (ואם יש לנו טופס להוספת הרשומה, אז נעשה בלחצן ביטול, פקודת מחיקת רשומה), יקרה שבפעם הבאה שנפתח רשומה חדשה נקבל את המספר העוקב שאחרי הרשומה שנפתחה (כנראה שיש איזשהו אינדקס פנימי שמקצה את המספרים, ללא קשר למספר הקיים כרגע בטבלה, אלא למספרים שהוא הקצה), וכמובן שזוהי בעיה בכך שיווצר חוסר עקביות במספרים.
יש פיתרון ידני, לבצע על הקובץ "דחיסה ותיקון של מסד הנתונים", ואז אקסס ימשיך במספר אחרי מה שיש כרגע בטבלה (כנראה שבדחיסה הוא בונה מחדש את האינדקסים הפנימיים).
אבל כמובן שפיתרון זה אינו בר ביצוע כאשר אנו נותנים לאחרים להשתמש בקובץ שאנו בונים, (וגם לעשות פקודה שתבצע דחיסה אם מוחקים רשומה שהוסיפו, אינו בר ביצוע מכיוון שהמערת צריכה לסגור את עצמה כשעושים דחיסה...).
יש פיתרון נוסף, שבכל טופס של הוספת רשומה, מביאים פעמיים את השדות, פעם אחת כאשר הם מאוגדים לטבלה אמנם מגדירים אותם כ"לא גלוי", ופעם נוספת כאשר הם לא מאוגדים, ואת הטופס מעצבים על השדות הלא מאוגדים, ואז כמובן כל נתון שנכניס בשדות האלו לא ישפיעו כלום על הנתונים בטבלה, ועושים לחצן אישור שמפעיל פקודה אשר מכניסה את הנתונים מהשדות הלא מאוגדים לשדות המאוגדים.
מה שיוצא הוא שכל זמן שלא לוחצים אישור הרשומה החדשה לא נפתחה, ועדיין ניתן לסגור את הכל.
(למי שרוצה להשתמש בפיתרון הזה, אז שם המאקרו הוא "SetValue", בשורה הראשונה מכניסים לאיפה אנו רוצים להכניס את הנתונים, כלומר לאיזה שדה, ובשורה השניה אנו מכניסים מה אנו רוצים להכניס, זה יכול להיות פונקציה, או נתון משדה מסוים
בקוד זה הפונקציה הבאה
).
אמנם להשתמש את הפיתרון גורם לכל טופס שאנו בונים לעבודה ארוכה ומפרכת.
אשמח אם למישהו יש פיתרונות יותר קלים ומהירים לנושא.
אציג בעיה, ועמה פתרונים שניתן לעשות
ואשמח אם למישהו יש פתרונות יותר טובים
כידוע לכל רשומה עושים בדר"כ מספר מזהה (ID), בתוכנות מקצועיות להנהלת חשבונות וכו', יש חשיבות מיוחדת שמספרים המזהים יהיו עוקבים (אם משרד המיסים יעשה ביקור בחברה מסוימת, וימצאו שחסר מספר של חשבונית מסוימת זה יעורר סימני שאלה...)
לצורך כך יש באקסס "מספור אוטומטי", אשר מוסיף בכל רשומה שנפתחה, את המספר העוקב הבא.
ועכשיו לבעיה, שאם מתחילים להוסיף רשומה, האקסס מייד מקצה את המספר הבא, ואם בסוף נחליט שלא להוסיף כרגע, ונמחק את הרשומה (ואם יש לנו טופס להוספת הרשומה, אז נעשה בלחצן ביטול, פקודת מחיקת רשומה), יקרה שבפעם הבאה שנפתח רשומה חדשה נקבל את המספר העוקב שאחרי הרשומה שנפתחה (כנראה שיש איזשהו אינדקס פנימי שמקצה את המספרים, ללא קשר למספר הקיים כרגע בטבלה, אלא למספרים שהוא הקצה), וכמובן שזוהי בעיה בכך שיווצר חוסר עקביות במספרים.
יש פיתרון ידני, לבצע על הקובץ "דחיסה ותיקון של מסד הנתונים", ואז אקסס ימשיך במספר אחרי מה שיש כרגע בטבלה (כנראה שבדחיסה הוא בונה מחדש את האינדקסים הפנימיים).
אבל כמובן שפיתרון זה אינו בר ביצוע כאשר אנו נותנים לאחרים להשתמש בקובץ שאנו בונים, (וגם לעשות פקודה שתבצע דחיסה אם מוחקים רשומה שהוסיפו, אינו בר ביצוע מכיוון שהמערת צריכה לסגור את עצמה כשעושים דחיסה...).
יש פיתרון נוסף, שבכל טופס של הוספת רשומה, מביאים פעמיים את השדות, פעם אחת כאשר הם מאוגדים לטבלה אמנם מגדירים אותם כ"לא גלוי", ופעם נוספת כאשר הם לא מאוגדים, ואת הטופס מעצבים על השדות הלא מאוגדים, ואז כמובן כל נתון שנכניס בשדות האלו לא ישפיעו כלום על הנתונים בטבלה, ועושים לחצן אישור שמפעיל פקודה אשר מכניסה את הנתונים מהשדות הלא מאוגדים לשדות המאוגדים.
מה שיוצא הוא שכל זמן שלא לוחצים אישור הרשומה החדשה לא נפתחה, ועדיין ניתן לסגור את הכל.
(למי שרוצה להשתמש בפיתרון הזה, אז שם המאקרו הוא "SetValue", בשורה הראשונה מכניסים לאיפה אנו רוצים להכניס את הנתונים, כלומר לאיזה שדה, ובשורה השניה אנו מכניסים מה אנו רוצים להכניס, זה יכול להיות פונקציה, או נתון משדה מסוים
בקוד זה הפונקציה הבאה
קוד:
With CodeContextObject
.[שדהמאוגד1] = .[שדהלאמאוגד1]
.[שדהמאוגד2] = .[שדהלאמאוגד2]
End With
אמנם להשתמש את הפיתרון גורם לכל טופס שאנו בונים לעבודה ארוכה ומפרכת.
אשמח אם למישהו יש פיתרונות יותר קלים ומהירים לנושא.
הנושאים החמים