האם אפשר לעשות עיצוב מותנה לפקד באקסס?
-
אני רוצה לעשות עיצוב מותנה על הפקדים באקסס לפי ביטוי או קיטריון מסויים האם זה אפשר?
-
@אוריי אמר בהאם אפשר לעשות עיצוב מותנה לפקד באקסס?:
אני רוצה לעשות עיצוב מותנה על הפקדים באקסס לפי ביטוי או קיטריון מסויים האם זה אפשר?
יש עיצוב מותנה גם באקסס,
מה אתה רוצה לעשות? ועל איזה פקד? -
@חייםיודלביץ
יש לי כמות של פקדים כך שכל פקד יש לו מס' מסויים בנוסף יש לי טבלה עם מספרי הפקדים ושם יש לי תיבת סימון ואני רוצה שאם המס' פקד בטבלה יהיה מסומן אז הפקד עצמו ישתנה לו הצבע -
@אוריי אתה יכול בארוע הטעינה של הטופס להריץ לולאה על הטבלה ולשנות את הצבע של כל פקד בטופס שמסומן.
-
@OdedDvir
תודה רבה
ואיך אני כותב את זה? -
@אוריי מה שם הטבלה והשדות הרלוונטיים?
-
@OdedDvir
שם הטבלה: ShelfCharacteristics
שם שדה של מספרי פקדים : ShelfNumber
שם שדה של תיבות סימון בטבלה: ClosedShelf -
@אוריי כיצד נקראים הפקדים ביחס למספרים?
-
@OdedDvir
שמות הפקדים הם מספרים מ1 ומעלה ללא שום אותיות וכדו'.. -
@אוריי תוסיף את הקוד הבא לטופס (הופך את צבע הקידמה של הפקד לאדום):
Private Sub SetColors() Dim rs As DAO.Recordset Set rs = CurrentDb.OpenRecordset("SELECT * FROM ShelfCharacteristics WHERE ClosedShelf=True", dbOpenSnapshot, dbReadOnly) rs.MoveFirst While Not rs.EOF Me.Controls(CStr(rs!ShelfNumber)).ForeColor = vbRed rs.MoveNext Wend rs.Close End Sub Private Sub Form_Load() SetColors End Sub
-
@OdedDvir
מחזיר שגיאה
-
@אוריי יש לך כנראה כבר קוד עבור הארוע Form_Load
פשוט תוסיף רק את הקוד של הפונקציה הראשונה SetColors() שבשורות 1-10, ואת השאר לא, ותוסיף לפונקציה Form_Load הקיימת בטופס את הקריאה שבשורה 13 -
@OdedDvir אמר בהאם אפשר לעשות עיצוב מותנה לפקד באקסס?:
פשוט תוסיף רק את הקוד של הפונקציה הראשונה SetColors() שבשורות 1-10, ואת השאר לא
את זה איפה אני מוסיף באיזה אירוע?
-
@OdedDvir
הוספתי ומחזיר כזו שגיאה
-
@אוריי צודק, ערכתי את הקוד למעלה
-
@OdedDvir
תודה עובד מצויין -
@OdedDvir
איך אני גורם לו שבכל עידכון בטבלה הוא ישנה מייד את הצבע? -
@אוריי אתה צריך לקרוא לפונקציה SetColors() אחרי כל עדכון של הטבלה.
ראשית תשנה את הפונקציה לציבורית, כדי שתוכל לקרוא לה מטופס אחר:Public Sub SetColors() .....
אחר כך תוסיף לטופס שבו נמצאת הטבלה את הארוע After_Apdate() ושם תקרא לפונקציה של הטופס:
Private Sub After_Update() Forms("<form-name>").SetColors() End Sub
-
@OdedDvir
מה אני אמור לכתוב? -
@OdedDvir
סליחה אבל לא הבנתי מה לעשות בדיוק
א. איך להפוך לציבורית
ב. האם אני אמור לשנות את זה?("<form-name>")
-
@אוריי אמר בהאם אפשר לעשות עיצוב מותנה לפקד באקסס?:
א. איך להפוך לציבורית
רשמתי לך למעלה (לשנות את המילה Private למילה Public)
ב. האם אני אמור לשנות את זה?
כן, תכניס שם את שם הטופס שמכיל את הפקדים, למשל:
Forms("Shelves").SetColors()
-
@OdedDvir
מחזיר שגיאה
-
@אוריי זו שגיאה כי הקומפיילר לא מזהה את הפונקציה.
תוכל לעקוף את השגיאה על ידיForms("as").Form.SetColors()
או על ידי
Forms!as.SetColors()
-
@OdedDvir
עדיין מחזיר שגיאה
אולי עדיף לעבוד כמודול? -
@אוריי מה השגיאה שמחזיר?
-
-
@אוריי אההה, זו לא באמת שגיאה, אלא מוגבלות של השפה:
תשנה את הקוד ל:Forms!as.SetColors או Forms("as").Form.SetColors
דהיינו בלי סוגריים, או אם דווקא אתה רוצה סוגריים תוסיף את המילה Call בהתחלה
Call Forms("as").Form.SetColors()
-
@OdedDvir
משום מה לא מצליח
יכול להיות שאני לא כותב את זה במקום הנכון
אני אסביר מה יש לי ואיפה אני כותב כעת
לי יש שאילתה לפי מס' מדף השאילתה מוצגת בתוך טופס והטופס הזה בתוך טופס אחר
אני ניסתי לכתוב את זה באירוע לאחר עידכון של הטופס האמצעי (המקשר בין השאילתה לטופס המוצג)
ושם כתבתי כךPrivate Sub Form_AfterUpdate() Call Forms("as").Form.SetColors End Sub
וזה לא עובד.
-
@אוריי הקוד צריך להמצא בטופס שמציג את השאילתא על ShelfCharacteristics
העובדה שהטופס הנ"ל נמצא בעוד טופס אחר לא משנה.י יש שאילתה לפי מס' מדף השאילתה מוצגת בתוך טופס
נקרא לו A
והטופס הזה בתוך טופס אחר
נקרא לו B
הקוד צריך להיות בטופס A
-
@OdedDvir
עכשיו זה נמצא שם (A) באירוע לאחר עידכון ולא עובד