עזרה לקוד באקסס
-
האם ואיך ניתן להכניס תפקידים של לחצנים (בטופס) כחלק מקוד ארוך יותר?
כלומר, כשכותבים קוד ללחצן זה נמצא בתוך Private Sub, ואילו אני רוצה שלמשל לחצן מסויים יגדיר משתנה כX, בתוך קוד ארוך יותר, לדוג'Private Sub Current_Form() Dim Yossi as String Yossi = 1
ואז
Private Sub לחצן1_Click() Yossi = 2 If Yossi = 1 Then Me.Current_Form.AllowAdditions = True Else ……… End Sub
(כמובן שזו רק דוגמא ויש כאן הרבה שגיאות קוד, אז נא לא להעיר על זה...)
ליתר ביאור - אני מנסה ליצור טופס לצורך פירוט על תמיכות בקופת צדקה (בערך...) ואני מעוניין שיהיה אפשר לבחור סוג מקרה כדי להתאים נוסח אוטומטי לפרוטוקול, ועל פי סוג המקרה יהיו שינויים נוספים אוטומטיים בטופס.
לכן אני מנסה ליצור כמה לחצנים שתפקידם יהיה רק להגדיר את המשתנה, ולתלות את כל השינויים באותו משתנה.
(ייתכן מאד שאני עושה סתם סיבובים מיותרים, תסלחו לי כי זה הקוד הראשון פחות או יותר שאני מנסה... -
@ארי תודה אבל לא זה מה ששאלתי...
אני מעוניין שהלחצן יגדיר את ערך המשתנה ל 2 וממילא לאחר לחיצה על הלחצן בטופס זה יחול התהליך שהגדרתי אם Yossi = 2
בעצם השאלה היא איך לקשר את החלק הזה>Private Sub לחצן1_Click() Me.BlaBla.Form.AllowAdditions = True End Sub
לשאר הקוד, וכן איך להגדיר שהלחיצה תשנה את המשתנה רק ביחס לחישוב הנוכחי (כיון שגם ההגדרות של הלחיצות על לחצנים אחרים משנות את ערך המשתנה והקוד צריך לדלג עליהם...)
-
אם המשתנה רלוונטי רק לטופס הזה, תגדיר אותו מחוץ לסקופ של הפונקציה. ואז תוכל לגשת אליו מכל פונקציה בטופס. (זו גם הדרך שהציע @ארי)
לדוגמא:Private UserClicked As Boolean Private Sub MyButton_Click() UserClicked = True End Sub Private Sub AnotherButton_Click() If (UserClicked = False) Then MsgBox("I'm sorry, but you must first click the other button.") Else MsgBox("Great, you're a good boy.") End If End Sub
אם המשתנה רלוונטי לכל הפרוייקט, אתה יכול להגדיר משתנה גלובלי בתוך מודול ולתת לו הרשאת גישה ציבורית (Public Access Modifer) על ידי שימוש במילה השמורה
Public
:Public UserFavoriteColor As String
ולגשת אליו מכל מקום בקוד, למשל בטופס:
txtUserFavoriteColor.Value = "Your favourite color is: " & UserFavoriteColor
או להשתמש ב
TempVars
, שהיתרון שלהם הוא בכך שהערך שלהם נשמר גם לאחר זמן הריצה (עד שתסגור את הקובץ).
למשל:TempVars("UserFavoriteColor").Value = "Green"
ומכל מקום בקוד:
txtUserFavoriteColor.Value = "Your favourite color is: " & TempVars("UserFavoriteColor").Value
-
@OdedDvir ייש"כ על התגובה המפורטת. (ואולי זה הזמן למדריך אקסס למתקדמים...? בהתחשב בכך שרוב מוחלט של הידע שלי בנושא הוא מהמדריך המדהים והמחכים שלך...)
רק חלק אחד עדיין לא הבנתי (ואני רואה שלא פירטתי מספיק בשאלה) בקוד כזה:
Private UserClicked As Long Private Sub MyButton_Click() UserClicked = 1 End Sub
וכאן אני מוסיף עוד לחצן שמגדיר את הערך ל2
Private Sub YourButton_Click() UserClicked = 2 End Sub
וכן הלאה, ואני מעוניין שאם UserClicked = 1 אז X ואם שווה 2 אז Y וכן הלאה, איך אני מגדיר שבלחיצה על כפתור ישתנה הערך רק לצורך ה If.
Private Sub AfterInsert() If (UserClicked = 1) Then MsgBox("I'm sorry, but you must first click the other button.") Else If (UserClicked = 2) Then MsgBox("Great, you're a good boy.") End If End If End Sub
וכן הודעות ל3 וכו'
השאלה אחרי לחיצה במופע מסויים של הטופס, האם הערך לא ייקבע גם למופעים הבאים, למשל אם כעת הערך הוא 3, ובמופע הבא אני מעוניין שהוא יחזור אוטומטית לערך הראשון (כיון שהלחצנים הם לשינויים ספציפיים בטופס ולא לברירת מחדל)
מקווה שהצלחתי להסביר... (אני לא מכיר את הטרמינולוגיה בכלל ) -
@סקרן-0 אמר בעזרה לקוד באקסס:
השאלה אחרי לחיצה במופע מסויים של הטופס, האם הערך לא ייקבע גם למופעים הבאים, למשל אם כעת הערך הוא 3, ובמופע הבא אני מעוניין שהוא יחזור אוטומטית לערך הראשון (כיון שהלחצנים הם לשינויים ספציפיים בטופס ולא לברירת מחדל)
יש כאן עירוב נושאים:
- איך להגדיר משתנה שערכו לא נאבד ביציאה מהפונקציה?
על זה עניתי. - איך לאתחל אותו מחדש בכל מופע של הטופס?
תשתמש בארוע טעינת טופס, הוא רץ אוטומטית בכל מופע חדש של הטופס:
Private Sub Form_Load() UserClicked = 0 End Sub
- אולי זה הזמן למדריך אקסס למתקדמים?
התלבטתי בזה תקופה ארוכה, ולא הגעתי להחלטה.
דווקא לאחרונה יש לי הרבה יותר חשק לכתוב מדריך לדוט נט...
- איך להגדיר משתנה שערכו לא נאבד ביציאה מהפונקציה?
-
@OdedDvir אמר בעזרה לקוד באקסס:
אולי זה הזמן למדריך אקסס למתקדמים?
התלבטתי בזה תקופה ארוכה, ולא הגעתי להחלטה.
דווקא לאחרונה יש לי הרבה יותר חשק לכתוב מדריך לדוט נט...הלוואי, אשמח מאד מאד!!