אקסס | מה הדרך הנכונה והמהירה לשינוי מקור פקד ע"י המשתמש?
-
שלום וברכה
יש לי כמה טפסים באקסס שאני צריך לתת למשתמש לבחור ב 10 תיבות טקסט, ערכים מאיזה שנה להציג.
חשבתי לעשות ארוע בעת טעינת הטופס שיבדוק עם הפונקציה DLookup מהם הגדרות המשתמש בטבלה ואז לשנות את מקור הפקד לפי המוחזר מהפונקציה בקוד VBA.
האם זו הדרך הנכונה לבצע את זה? זה לא מאט את התוכנה?
זכור לי שבעבר היה על זה נידון כאן בפורום איך לבצע את זה הכי נכון אבל אני לא מוצא את השירשור.
אודה לעזרתכם
-
@חייםיודלביץ כתב באקסס | מה הדרך הנכונה והמהירה לשינוי מקור פקד ע"י המשתמש?:
האם זו הדרך הנכונה לבצע את זה?
זה אפשרי.
זה לא מאט את התוכנה?
זה זניח במקרה של 10 תיבות טקסט.
זכור לי שבעבר היה על זה נידון כאן בפורום איך לבצע את זה הכי נכון אבל אני לא מוצא את השירשור.
זכור לי הדיון כאן על שינוי שפת הממשק של טפסים בזמן ריצה. שמא כוונתך לזה?
כהערת אגב, אני לא יודע אם זו דרך המלך לפתרון הבעיה שלך.
לענ"ד השיטה של בניית טפסים דינמיים טובה רק כשאין מוצא אחר לפתרון הבעיה, כי זה לפעמים מסבך ללא צורך. -
@OdedDvir כתב באקסס | מה הדרך הנכונה והמהירה לשינוי מקור פקד ע"י המשתמש?:
זכור לי הדיון כאן על שינוי שפת הממשק של טפסים בזמן ריצה. שמא כוונתך לזה?
אכן את זה חיפשתי, תודה!
@OdedDvir כתב באקסס | מה הדרך הנכונה והמהירה לשינוי מקור פקד ע"י המשתמש?:
כהערת אגב, אני לא יודע אם זו דרך המלך לפתרון הבעיה שלך.
לענ"ד השיטה של בניית טפסים דינמיים טובה רק כשאין מוצא אחר לפתרון הבעיה, כי זה לפעמים מסבך ללא צורך.המדובר הוא שיש טבלה עם תרומות, לכל שנה עמודה, אני רוצה שהמשתמש יוכל לבחור איזה שנים להציג.
יש דרך יותר נכונה או שבמקרה זה הדרך הנכונה היא עם dlookup ?
-
@חייםיודלביץ
ראשית חשוב לי לומר שבמסד נתונים SQL הדרך הכי טובה לבניית טבלאות היא נירמול הנתונים.
כלומר, מבנה הטבלה (ובפרט מספר העמודות בטבלה) לעולם לא יהיה מושפע או תלוי במספר הרשומות שנכניס לתוכה.
למשל, אם יש ללקוחות כמה מספרי טלפון, לא אשמור אותם בעמודות Phone1, Phone2, אלא בטבלה נפרדת עם מפתח זר המפנה לטבלת הלקוחות.
ובנידון דידן, גם אם אני מתכנן לשמור נתונים של שנים על גבי שנים, לא אצור לכל שנה עמודה משלה, אלא אשמור את התאריך בעמודה אחת, ובמקרה הצורך, אסנן את הטבלה כולה על פיה.
בהנחה שהבננו את הקו המנחה הזה, המימוש של הסינון הופך לטריוויאלי.
אם התחכמנו \ התעצלנו מללכת אחר ההתוויה של ה-SQL, כמעט תמיד נגלה כי לאחר מעשה, נדיר שיתאפשר לי לעצב מחדש את הטבלה (וזה כאב ראש גדול), ופעמים רבות זה לא מעשי בכלל. ובכגון דא אמרינן סוף מעשה במחשבה תחילה.ולעניינך, הייתי משתמש בפקד יחיד של רשימה, עם אפשרות לבחירה מרובה
בה הייתי מציג את כל השנים הרלוונטיות, ומאפשר למשתמש לבחור שנים כרצונו
לאחר מכן הייתי בונה שאילתת בחירה ב-SQL דינמי, רץ בלולאה על השורות בפקד, ומשרשר את הערכים שסומנו למחרוזת.כתבתי בקיצור, יש דוגמא נחמדה ש-@clickone פעם הכין, ראה כאן: https://tchumim.com/topic/474/סינון-מרובה/11
עריכה: מה שמופיע שם זה לא בדיוק המקרה שלך, כי שם מסננים עמודה יחידה על פי מספר ערכים נבחרים:
Where City In('ירושלים', 'צפת',....)
אבל הרעיון של בניית SQL דינמי ממומש שם. במקרה שלך הערכים הנבחרים יהיו שמות העמודות, כלומר:
SELECT Year2017, Year2023 FROM ...
-
@OdedDvir
זה תוכנה ישנה שבניתי לפני הרבה שנים לפני שהיה לי בכלל מושגים במבנה טבלאות תקין.@OdedDvir כתב באקסס | מה הדרך הנכונה והמהירה לשינוי מקור פקד ע"י המשתמש?:
כמעט תמיד נגלה כי לאחר מעשה, נדיר שיתאפשר לי לעצב מחדש את הטבלה (וזה כאב ראש גדול), ופעמים רבות זה לא מעשי בכלל. ובכגון דא אמרינן סוף מעשה במחשבה תחילה.
אני היום הרבה פעמים ממש מסתבך בלתחזק את התוכנה הזאת עד כדי שאני חושב לבנות את כולה מחדש כמו שצריך...
@OdedDvir כתב באקסס | מה הדרך הנכונה והמהירה לשינוי מקור פקד ע"י המשתמש?:
לעניינך, הייתי משתמש בפקד יחיד של רשימה, עם אפשרות לבחירה מרובה
בה הייתי מציג את כל השנים הרלוונטיות, ומאפשר למשתמש לבחור שנים כרצונו
לאחר מכן הייתי בונה שאילתת בחירה ב-SQL דינמי, רץ בלולאה על השורות בפקד, ומשרשר את הערכים שסומנו למחרוזת.כתבתי בקיצור, יש דוגמא נחמדה ש-@clickone פעם הכין, ראה כאן: https://tchumim.com/topic/474/סינון-מרובה/11
הפתרון נראה מעולה, תודה!
עריכה:
@OdedDvir כתב באקסס | מה הדרך הנכונה והמהירה לשינוי מקור פקד ע"י המשתמש?:
אבל הרעיון של בניית SQL דינמי ממומש שם. במקרה שלך הערכים הנבחרים יהיו שמות העמודות, כלומר:
SELECT Year2017, Year2023 FROM ...
אני חשבתי לתת רשימת שדות עם סינון לשדות הרלוונטים