שגיאה באקסס 2465 | שגיאה מוגדרת יישום או מוגדרת אובייקט
-
יש לי פונקציה באקסס שמסתירה ומציגה פקדים בטופס
זה הקודPublic Function vb_HidesFieldsDonates(TrueOfFalse As Integer) 'ñëåí úøåîä Forms.board.TextBoxDonationAmount.Visible = TrueOfFalse Forms.board.LabelDonationAmount.Visible = TrueOfFalse 'ñåâ îèáò Forms.board.TextBoxCurrency.Visible = TrueOfFalse 'àåôï äúøåîä Forms.board.TextBoxDonationType.Visible = TrueOfFalse Forms.board.LabelDonationType.Visible = TrueOfFalse 'äòøåú úøåîä Forms.board.TextBoxRemarksDonates.Visible = TrueOfFalse Forms.board.LabelRemarksDonates.Visible = TrueOfFalse 'ô÷ã ÷áìú îñ Forms.board.CheckboxTaxReceipts.Visible = TrueOfFalse Forms.board.LabelTaxReceipts.Visible = TrueOfFalse End Function
ומשום מה בשורה 8 קופצת לו שגיאה כזו
והשגיאה הזו קופצת לו רק בשורה הזו לפני ואחרי הכל עובד טובהפקד קיים (כך שזו לא הבעיה)
זה העזרה שאקסס מביא אבל גם שם לא הצלחתי להבין למה מגיעה השגיאה הזו
אשמח להבין מן המומחים למה ומהי השגיאה הזו...
תודה רבה מראש -
@אוריי מבלי להרחיב מדוע, הגישה שבה השתמשת היא זו שגורמת את השגיאה.
הואיל והפונקציה הזו שייכת לטופס Board, היא אמורה להיות כתובה בתוך המחלקה שלו.
תעביר את הפונקציה לתוך הקוד של הטופס, ותשתמש במילה השמורה Me כדי לגשת לפקדים שלו.Public Function vb_HidesFieldsDonates(TrueOfFalse As Integer) 'ñëåí úøåîä Me.TextBoxDonationAmount.Visible = TrueOfFalse Me.LabelDonationAmount.Visible = TrueOfFalse 'ñåâ îèáò Me.TextBoxCurrency.Visible = TrueOfFalse ...
-
@odeddvir
להעתיק את כל הפונקציה בשלמותה לקוד של הטופס או להכניס את הקוד לתוך קוד הפקד?
כי סתם כך להכניס פונקציה לתוך הטופס הוא מחזיר שגיאה... -
@אוריי איזו שגיאה?
-
-
@אוריי תעלה צילום של הקוד שהדבקת בטופס בבקשה.
-
@odeddvir
אותו הדבר בדיוק כמו שכתבתי בפוסט הראשוןסורי
כתבתי כךPublic Function vb_HidesFieldsDonates(TrueOfFalse As Integer) 'ñëåí úøåîä Me!TextBoxDonationAmount.Visible = TrueOfFalse Me!LabelDonationAmount.Visible = TrueOfFalse 'ñåâ îèáò Me!TextBoxCurrency.Visible = TrueOfFalse 'àåôï äúøåîä Me!TextBoxDonationType.Visible = TrueOfFalse Me!LabelDonationType.Visible = TrueOfFalse 'äòøåú úøåîä Me!TextBoxRemarksDonates.Visible = TrueOfFalse Me!LabelRemarksDonates.Visible = TrueOfFalse 'ô÷ã ÷áìú îñ Me!CheckboxTaxReceipts.Visible = TrueOfFalse Me!LabelTaxReceipts.Visible = TrueOfFalse End Function
אבל זה לא כזה משנה כי הוא אפי' לא נכנס לריצת הקוד
אלא פשוט מחזיר שגיאה -
@אוריי ומתי אתה מקבל את ההערה, בזמן הקימפול? או בזמן הריצה? ובאיזו שורה?
-
@odeddvir
עוד לפני שהוא נכנס לריצה של הפונקציה
כאשר עשיתי למטה אנטר כדי להריץ את הפונקציה הוא הקפיץ את ההודעה
-
@אוריי ברור. הקוד שבטופס הוא מחלקה (Class). אתה לא יכול להריץ פונקציה ישירות מתוך מחלקה.
צור לחצן זמני בטופס שמריץ את הפונקציה ותבדוק. -
@odeddvir
עכשיו הוא מחזיר שגיאה שהוא לא מוצא את השדה
והשדה כן נמצא
-
@אוריי נראה לי פשוט שגיאת כתיב. תבדוק טוב.
-
@odeddvir אמר בשגיאה באקסס 2465 | שגיאה מוגדרת יישום או מוגדרת אובייקט:
@אוריי נראה לי פשוט שגיאת כתיב. תבדוק טוב.
חיפשתי טוב ולא מצאתי
עריכה: ניסיתי אפי' לשנות את השם וללא הצלחה
ראוי לציין שהפקד הזה הוא תיבה משולבת (שכחתי לציין בפוסט הראשון)
וזה לא סתם נשכח ממני כי יש עוד תיבה משולבת שזה כן עובד עליה (א"כ אז למה הוא נתקע).... -
@אוריי קודם כל טיפ:
כשאתה ניגש לפקד של הטופס, תשתמש בנקודה ולא בסימן קריאה:Me.SomeControlName
ולא
Me!SomeControlName
זה עדיף בהרבה, כי אז תרוויח את העזרה של Intellisense שיעזור לך להשלים את שם הפקד, וגם תגלה מיד בזמן כתיבת הקוד שגיאות בשמות של פקדים שלא נמצאים.
תשנה עכשיו את הקוד בפונקציה, ותראה אם יש הודעת שגיאה.
-
@odeddvir
תודה על הטיפ!! זה די עוזר
גם אני הרבה משתמש אבל עד עכשיו לא שמתי לזה חשיבות
לעניינינו באמת ה Intellisense לא מוצא את השדה ולמה ??? ממה זה יכול להיות?? -
@אוריי קשה לדעת מהנתונים ששיתפת.
פנה אלי בפרטי ואנסה לעזור. -
@אוריי
האם בפקד שאתה מנסה להסתיר נמצא בפוקוס, או שמקבל פוקוס לאחר שאתה מסתיר את הקודמים?תעביר את הפוקוס למיקום מחוץ לפקדים שאתה מטפל בהם.
-
@odeddvir אמר בשגיאה באקסס 2465 | שגיאה מוגדרת יישום או מוגדרת אובייקט:
פנה אלי בפרטי ואנסה לעזור.
את האמת @OdedDvir עזר לי בפרטי
הבעיה הייתה איזה סוג של באג לא ברור באקסס שהוא לא זיהה את שם השדה
לאחר משחק בשם של השדה האקסס חזר לזהות אותו@shmuel754 אמר בשגיאה באקסס 2465 | שגיאה מוגדרת יישום או מוגדרת אובייקט:
האם בפקד שאתה מנסה להסתיר נמצא בפוקוס
למה כוונתך פוקוס??
-
@אוריי אמר בשגיאה באקסס 2465 | שגיאה מוגדרת יישום או מוגדרת אובייקט:
למה כוונתך פוקוס??
שהסמן עומד עליו.
אי אפשר להסתיר כשהוא בפוקוס
https://docs.microsoft.com/en-us/office/vba/api/access.textbox.setfocus -
@מלא אמר בשגיאה באקסס 2465 | שגיאה מוגדרת יישום או מוגדרת אובייקט:
@אוריי אמר בשגיאה באקסס 2465 | שגיאה מוגדרת יישום או מוגדרת אובייקט:
למה כוונתך פוקוס??
שהסמן עומד עליו.
אי אפשר להסתיר כשהוא בפוקוס
https://docs.microsoft.com/en-us/office/vba/api/access.textbox.setfocusלא זה לא היה קשור לזה הסמן לא היה עליו ועם כל זה הוא לא הצליח להסתיר אותו
וכמו שכתבתי לעיל שהאקסס לא מוצא את שם הפקד@OdedDvir @Shmuel754 @מלא
הרבה תודה על העזרה... -
@odeddvir אמר בשגיאה באקסס 2465 | שגיאה מוגדרת יישום או מוגדרת אובייקט:
כשאתה ניגש לפקד של הטופס, תשתמש בנקודה ולא בסימן קריאה:
Me.SomeControlNameולא
Me!SomeControlNameזה עדיף בהרבה, כי אז תרוויח את העזרה של Intellisense שיעזור לך להשלים את שם הפקד, וגם תגלה מיד בזמן כתיבת הקוד שגיאות בשמות של פקדים שלא נמצאים.
אני לא משתמש בנקודה באקסס, במיקום שציינת.
לא זוכר כבר למה, אבל היה לזה בעיות (אולי רק בעבר)(זה אמנם לא קשור לנושא ישירות, אבל ש @אוריי והשאר ישימו לב שזה לא מייצר להם בעיות אחרות....)
לגבי ההשלמה אני אכן משתמש במקרים האלו בקונרול רווח
-
@clickone אמר בשגיאה באקסס 2465 | שגיאה מוגדרת יישום או מוגדרת אובייקט:
לא זוכר כבר למה, אבל היה לזה בעיות (אולי רק בעבר)
יש באג אחד שקיים עד היום, והוא: כאשר מוסיפים שדות בטבלה שהטופס מבוסס עליה, ה-Intellisense לא מכיר את השדות החדשים ולא מייבא אותם על ידי הנקודה, ואפילו לא מאפשר לקמפל את הקוד אם השתמשת בהם בקוד...
זה היה מוציא אותי מדעתי.
הפתרון הוא למחוק את מקור הרשומה מהטופס (דהיינו להפוך את הטופס ללא מאוגד) ואחר כך להקליד אותו שוב. ואז אקסס מעדכנת את רשימת השדות של הטופס ב-VBA. -
@clickone אמר בשגיאה באקסס 2465 | שגיאה מוגדרת יישום או מוגדרת אובייקט:
אני לא משתמש בנקודה באקסס, במיקום שציינת.
לא זוכר כבר למה, אבל היה לזה בעיות (אולי רק בעבר)השימוש בנקודה נותן את המאפיינים של הטופס/הפקד - כגון פקד טקסט אחרי הנקודה נקבל לשנות מאפיינים של אותו פקד טקסט (צבע טקסט,גודל וכו')
השימוש ב ! נותן את האובייקטים שנמצאים שבתוך אובייקט האב - כגון טופס אחרי ה ! ייתן את הפקדים שנמצאים באותו טופס. -
@zvinissim נקודה אחרי Me ייתן לך גם את שמות הפקדים - ובדיוק על זה דבריו של @OdedDvir