ריבוי מופעים בטופס אקסס
-
קליק וואן הביא שאפשר לעשות ריבוי מופעי טופס באקסס
תוך ניסיונות עליתי על כמה בעיות אולי יש פתרון:
א. הגרפיקה ב 2013 (בעיקר עיצוב כפתורים) משתבשת ומראה הכל בגווני אפור החל מהטופס השני ואילך.
ב. לפעמים הוא יוצר key שכבר קיים בטופס הקודם ואז הקוד נתקל בשגיאה שאי אפשר להכניס לקולקציה את האייטם החדש (זה קרה בינתיים בטפסים הנפתחים בתצוגת גליון נתונים)פורסם במקור בפורום CODE613 ב16/06/2014 11:43 (+03:00)
-
א. הגרפיקה ב 2013 (בעיקר עיצוב כפתורים) משתבשת ומראה הכל בגווני אפור החל מהטופס השני ואילך.
ב2010 לא ראיתי שום בעייה, וב2013 אכן יש בעייה, והייתי צריך להגדיר Me!cmd.UseTheme = True
בעיות נוספות:
אם עושים סינון פרמטר בתיבת רשימה(forms!frmMain!IDTxt וכו'), אז Requery לא עובד, כי הוא לא יודע לאיזה טופס להתייחס.פורסם במקור בפורום CODE613 ב16/06/2014 12:33 (+03:00)
-
בעיות נוספות:
אם עושים סינון פרמטר בתיבת רשימה(forms!frmMain!IDTxt וכו'), אז Requery לא עובד, כי הוא לא יודע לאיזה טופס להתייחס.אולי אפשר לעשות פונקצייה שתחזיר לפרמטר את הערך שנמצא בטופס שנמצא בפוקוס כעת. (כמובן שהפונקצייה תקבל בפרמטר מאיזה אובייקט להחזיר את הערך)
פורסם במקור בפורום CODE613 ב16/06/2014 12:37 (+03:00)
-
-
נוצרה לי בעיה כלשהי, אני עושה ריבוי מופעים גם בדו"ח, והנה המאפיין filter שנרכש רק לאחר שכבר נוצר מופע של הדו"ח בעצם מצייר את כל הדו"ח מחדש.
כלומר ככה, נניח שיש לנו דו"ח מורכב עד אין חקר, כאשר אני פותח אותו עם פקודת docmd.openreport פשוטה, אני מכניס את הפילטר בתוך הדו"ח ומקבל מיידית רק את הרשומות שאני רוצה, הרווח - חיסכון גדול בזמן שלוקח לו לעצב (כי אם נניח יש לך 10000 רשומות, הוא צריך לכתוב "עמוד X מתוך Y" אז הוא צריך לצייר את כל העמודים וכן הלאה. אולם אם אני משתמש בריבוי מופעים, הוא תחילה פותח את הדו"ח ללא פילטר, מעצב אותו במשך כ 2 דקות (!!!) ולאחר מכן מחיל את הפילטר ומעצב אותו מחדש. האם יש דרך להכריז על מופע ולהחיל פילטר לפני העיצוב???
חשוב ביותר.
פורסם במקור בפורום CODE613 ב14/09/2014 15:44 (+03:00)
-
נוצרה לי בעיה כלשהי, אני עושה ריבוי מופעים גם בדו"ח, והנה המאפיין filter שנרכש רק לאחר שכבר נוצר מופע של הדו"ח בעצם מצייר את כל הדו"ח מחדש.
כלומר ככה, נניח שיש לנו דו"ח מורכב עד אין חקר, כאשר אני פותח אותו עם פקודת docmd.openreport פשוטה, אני מכניס את הפילטר בתוך הדו"ח ומקבל מיידית רק את הרשומות שאני רוצה, הרווח - חיסכון גדול בזמן שלוקח לו לעצב (כי אם נניח יש לך 10000 רשומות, הוא צריך לכתוב "עמוד X מתוך Y" אז הוא צריך לצייר את כל העמודים וכן הלאה. אולם אם אני משתמש בריבוי מופעים, הוא תחילה פותח את הדו"ח ללא פילטר, מעצב אותו במשך כ 2 דקות (!!!) ולאחר מכן מחיל את הפילטר ומעצב אותו מחדש. האם יש דרך להכריז על מופע ולהחיל פילטר לפני העיצוב???
חשוב ביותר.
אולי כשאילתה צדדית שתקח משם את הנתונים שהיא תיהיה מסוננת מראש?!
פורסם במקור בפורום CODE613 ב15/09/2014 23:46 (+03:00)
-
בגלל שאין לי כרגע דוגמא ספציפית עם "ים" נתונים ועיצובים כדי לעשות עליה טסטים. (נשמח אם תעלה לכאן),
אני מציע את ההצעה הבאה:
לעשות בדוח השמור מסנן שלא יכול להיות, לדוגמא: UserId=-1, ואז אחרי שאתה טוען את הדוח אתה משנה את הסינון שאתה רוצה.
דוגמא לקוד:Dim r As New Report_QrySumByHebDate r.Filter = "UserId=2" r.FilterOn = True r.Visible = True
בעייה שיכולה להיות עם השיטה הזו זה אם אתה משתמש באירוע NoData, ושם אתה יוצא.
מה שאני מציע זה או ליצור משתנה בדוח שמחזיק בתוכו אם עשית כבר את הסינון שלך, ורק אם כבר עשית את הסינון אז אתה יוצא כשאין נתונים, או לא להשתמש באירוע אלא לבדוק כמה רשומות יש בפונקצייה שפותחת את הדוח.
למרות שלפי בדיקה ראשונית שעשיתי נראה שהאקסס לא מעצב ולא מושך שום נתון לפני שאתה מאפשר Visible, אבל זה ב2013. אני זוכר שב2003 באמת הייתה לי את הבעייה הזו, ולא התעמקתי בזה אז כי מצאתי פיתרון עוקף.פורסם במקור בפורום CODE613 ב16/09/2014 22:05 (+03:00)
-
הרעיון של קליק וואן מעולה, שמתי לב שאתה טוב מאוד בעקיפות בעיות (אופייני למי שעובד הרבה עם אקסס, אבל כשרון חשוב מאוד בתיכנות!)
פורסם במקור בפורום CODE613 ב27/09/2014 23:51 (+03:00)
-
-
שאלה נוספת, קורה הרבה פעמים שהפקידות פותחות את אותו כרטיס פעמיים ושלוש לאחר שהוא כבר פתוח, אז איך אני יכול לעקוב אחרי המערכת, האם כבר פתוח כזה כרטיס, ופשוט לאקטב אותו, במקום שייפתח שלוש פעמים.
יש לך מערך שמחזיק בתוכו את כל הטפסים הפתוחים.
כשאתה רוצה לפתוח כרטיס חדש, רוץ עליו בלופ, ותבדוק אם הID מתאים למה שאתה רוצה לפתוח.
במידה וכן, פשוט תעשה לאיבר במערך (שהוא בעצם הטופס) SetFocus במקום לפתוח טופס חדש.פורסם במקור בפורום CODE613 ב30/09/2014 22:10 (+03:00)