OpenFrom באקסס
-
אני רוצה לפתוח טופס מתוך טופס אחר, שמתבסס על נתוני הלקוח
אז הגדרתי תנאי where="[מזהה]=" & [מזהה]
אבל הטופס הנפתח אין "מקור רשומה" אלא אני רוצה שיתאים את המזהה לתוך התיבה המשולבת, ובפועל לא מסנן
-
@ליבל נראה אם הבנתי:
אתה רוצה לפתוח טופס כלשהו. לצורך העניין נקרא לו: טופס A, מתוך טופס B. בטופס A יש תיבה משולבת, שעם פתיחת הטופס אתה רוצה לאתחל לערך X. את הערך של X אתה רוצה להעביר לטופס A מתוך הטופס B. עד כאן אני צודק? -
@ליבל פתרון אפשרי הוא להעביר את הערך על ידי שימוש ב
OpenArgs
.
כיון שלא צרפת דוגמא מהקוד שלך, אני אענה בכלליות, אבל זה יהיה פחות מובן.בטופס A אתה פותח את B כך:
DoCmd.OpenForm "B",,,,,,X
אני יודע, כל הפסיקים האלו נראים מאוד מוזר... אם תצרף את הקוד לפתיחה של טופס B, זה יהיה יותר קל להסביר מאשר בכלליות.עריכה: במחשבה שניה, יש עוד צורת כתיבה, והיא הרבה יותר מובנת, כך:
DoCmd.OpenForm "B", OpenArgs:=X
ובטופס B, בארוע טעינה של הטופס אתה מאתחל את התיבה המשולבת עם הערך שב OpenArgs, כך:
Private Sub Form_Load() Me.MyComboBox.Value = Me.OpenArgs End Sub -
@ליבל בפשיטות, זו אפשרות להעביר לטופס הנפתח, נתונים על ידי הפונקציה (= ארגומנטים,
Args
) בצורה פתוחה (=Open
).
הנתונים שמועברים הם מסוגVariant
, כלומר סוג הנתונים נקבע בזמן ריצה. לכן אפשר להעביר מחרוזת או מספר.
החסרון הוא שאם רוצים להעביר כמה ארגומנטים, זה דורש יותר תחכום. אפשרות אחת היא לשרשר אותם על ידי מחרוזת Key-Value, או JSON. -
@OdedDvir אמר בOpenFrom באקסס:
@ליבל השאלה לא מובנת לי. הערך של התיבה המשולבת והעמודה המאוגדת הם תמיד זהים.
לגבי תיבה משולבת:
אני מגדיר במקור שורה עמודה א'ID
עמודה ב'שם ומשפחה
ובמונה עמודות2
וברוחב עמודות0ס"מ
לעמודה א'2ס"מ
לב' (יוצא שעמודה א' מוסתר)
בעמודה מאוגדת =1
(שזה ערך הפקד = לעמודה א')
שים לב כרגע אני מעביר ערך לפי עמודה ב' ומעתיק אותו כנ"ל אבל הבעיה שערך עמודה א' לא מתעדכןמקווה שהבנת
-
@ליבל כעת זה ברור מה הבעיה: אתה מנסה להכניס לערך התיבה המשולבת מחרוזת במקום מספר.
התיבה המשולבת מאחסנת ערך אחד בלבד, והוא: השדה המאוגד
ID
. אני מניח שהוא מספר. אם התיבה המשולבת מאוגדת לעמודהID
- זה הוא הערך האמיתי שהתיבה מאחסנת, ללא כל חשיבות לערך שמוצג בסופו של דבר (שם ומשפחה
).אתה פשוט צריך להעביר אליה את המזהה
ID
הרצוי, ולא את השם שמיוצג על ידו.
9/11