@אוריי אההה, זו לא באמת שגיאה, אלא מוגבלות של השפה:
תשנה את הקוד ל:
Forms!as.SetColors
או
Forms("as").Form.SetColors
דהיינו בלי סוגריים, או אם דווקא אתה רוצה סוגריים תוסיף את המילה Call בהתחלה
Call Forms("as").Form.SetColors()
@אוריי אההה, זו לא באמת שגיאה, אלא מוגבלות של השפה:
תשנה את הקוד ל:
Forms!as.SetColors
או
Forms("as").Form.SetColors
דהיינו בלי סוגריים, או אם דווקא אתה רוצה סוגריים תוסיף את המילה Call בהתחלה
Call Forms("as").Form.SetColors()
@אוריי מה השגיאה שמחזיר?
@אוריי זו שגיאה כי הקומפיילר לא מזהה את הפונקציה.
תוכל לעקוף את השגיאה על ידי
Forms("as").Form.SetColors()
או על ידי
Forms!as.SetColors()
@אוריי אמר בהאם אפשר לעשות עיצוב מותנה לפקד באקסס?:
א. איך להפוך לציבורית
רשמתי לך למעלה (לשנות את המילה Private למילה Public)
ב. האם אני אמור לשנות את זה?
כן, תכניס שם את שם הטופס שמכיל את הפקדים, למשל:
Forms("Shelves").SetColors()
@אוריי אתה צריך לקרוא לפונקציה SetColors() אחרי כל עדכון של הטבלה.
ראשית תשנה את הפונקציה לציבורית, כדי שתוכל לקרוא לה מטופס אחר:
Public Sub SetColors()
.....
אחר כך תוסיף לטופס שבו נמצאת הטבלה את הארוע After_Apdate() ושם תקרא לפונקציה של הטופס:
Private Sub After_Update()
Forms("<form-name>").SetColors()
End Sub
@אוריי צודק, ערכתי את הקוד למעלה
@אוריי יש לך כנראה כבר קוד עבור הארוע Form_Load
פשוט תוסיף רק את הקוד של הפונקציה הראשונה SetColors() שבשורות 1-10, ואת השאר לא, ותוסיף לפונקציה Form_Load הקיימת בטופס את הקריאה שבשורה 13
@אוריי כיצד נקראים הפקדים ביחס למספרים?
@אוריי מה שם הטבלה והשדות הרלוונטיים?
@אוריי אתה יכול בארוע הטעינה של הטופס להריץ לולאה על הטבלה ולשנות את הצבע של כל פקד בטופס שמסומן.
@אוריי הקוד נראה תקין, זו נראית בעיה של תצוגה.
האם כשאתה מרענן את הטופס (F5) התצוגה מסתדרת?
@אוריי נא להסביר יותר מה אתה מבקש
@clickone אמר בתוכנות לניהול תורמים כמו APT:
נראה לי שהוא נמצא אצלם ולא אצלך אבל אני לא בטוח בזה ב100%
לפי המידע באתר שלהם זה בסיס נתונים מקומי:
@אוריי אתה צריך לרשום כך
=DSum("book", "qq")
@אוריי כך זה לא יעבוד, האופרטור Me זמין רק במופע של הטופס הפעיל ושבו כתוב הקוד VBA.
אתה פותח טופס אחר ולכן אתה צריך לציין את הנתיב המלא שלו:
DoCmd.OpenForm "as"
Forms("as")!Libraries.Pages("Page3").SetFocus
כפי שציינתי קודם, ניתן לעבור לפי מספר הכרטסת (בסיס 0)
Me.Libraries = 2 ' עובר לכרטיסיה השלישית
אפשר גם לציין את שם הכרטיסיה בפירוש:
Me.Libraries.Pages("Page3").SetFocus 'עובר לכרטיסיה השלישית
@אוריי אמר בשאלה באקסס // שאילתא לפי שם כפתור:
Page1
Page2
וכו'
אלו שמות העמודים (ה"חוצצים" או הכותרות) של הפקד, מה שם הפקד שמכיל את כל העמודים?
@אוריי מה שם פקד הכרטיסיה בטופס?
@אוריי באקסס ניתן לכתוב ולקרוא למשתנה עם שם הפקד של הכרטיסיה, על מנת לקבל את מספר הכרטיסת הפתוחה או לעבור לכרטסת מסויימת. הכרטיסיות ממוספרות עם בסיס 0, ז"א הכרטסת הראשונה מספרה 0, השנייה 1 וכו'.
ניתן לעבור אל כרטסת על ידי כתיבה למשתנה עם שם הפקד.
למשל כדי לעבור לכרטסת השלישית, נכתוב את המספר 2:
me.TabCtrName = 2
כדי לבדוק איזה כרטסת מוצגת כרגע, אפשר לקרוא את הערך בפקד
if me.TabCtrlName = 1 then ... 'אם הכרטסת השנייה פתוחה
@OdedDvir אני מרשה לעצמי להזכיר לך שפתיחה של שאילתה באופן של DoCmd.OpenQuery עלולה לאפשר למשתמש לשנות נתונים בטבלאות, ואם זו לא ההתנהגות שאתה מחפש, תציין זאת במפורש בפתיחה:
DoCmd.OpenQuery "qq", acViewNormal, acReadOnly