OpenFrom באקסס
-
@ליבל פתרון אפשרי הוא להעביר את הערך על ידי שימוש ב
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
הרצוי, ולא את השם שמיוצג על ידו.