@אוריי אמר בהפעלת קוד vba באקסל דרך אקסס:
יש לי קובץ אקסל שבו יש לי קוד vba להדפסה שלו.
ואני רוצה דרך האקסס להדפיס ואפי' מבחינתי לא לפתוח את האקסל בכלל (אם אפשרי)
תפרט יותר את הקוד שבאקסל, מה עשית לקוד שמצאת, ומה השגיאה
@אוריי אמר בהפעלת קוד vba באקסל דרך אקסס:
יש לי קובץ אקסל שבו יש לי קוד vba להדפסה שלו.
ואני רוצה דרך האקסס להדפיס ואפי' מבחינתי לא לפתוח את האקסל בכלל (אם אפשרי)
תפרט יותר את הקוד שבאקסל, מה עשית לקוד שמצאת, ומה השגיאה
@אוריי זה אומר שאין לך פקד בשם "5" בטופס, אבל בטבלה יש
@אוריי זה בגלל שמעיקרא הפונקציה סורקת רק את הפקדים שמסומנים
אפשר לשנות שתסרוק הכל ולעדכן את כולם, כך
Public Sub SetColors()
Dim rs As DAO.Recordset
Set rs = CurrentDb.OpenRecordset("ShelfCharacteristics", dbOpenSnapshot, dbReadOnly)
rs.MoveFirst
While Not rs.EOF
If rs!ClosedShelf Then
Me.Controls(CStr(rs!ShelfNumber)).ForeColor = vbRed
Else
Me.Controls(CStr(rs!ShelfNumber)).ForeColor = vbBlack
End If
rs.MoveNext
Wend
rs.Close
End Sub
@אוריי אתה צריך להוריד את המילה Form
Call Forms("as").SetColors()
@אוריי האם מתבצעת בכלל קריאה לפונקציה בזמן הריצה?
@אוריי הקוד צריך להמצא בטופס שמציג את השאילתא על ShelfCharacteristics
העובדה שהטופס הנ"ל נמצא בעוד טופס אחר לא משנה.
י יש שאילתה לפי מס' מדף השאילתה מוצגת בתוך טופס
נקרא לו A
והטופס הזה בתוך טופס אחר
נקרא לו B
הקוד צריך להיות בטופס A
@אוריי אההה, זו לא באמת שגיאה, אלא מוגבלות של השפה:
תשנה את הקוד ל:
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")