דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תוכנה
  3. עזרה לקוד באקסס

עזרה לקוד באקסס

מתוזמן נעוץ נעול הועבר תוכנה
9 פוסטים 4 כותבים 217 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • ס מנותק
    ס מנותק
    סקרן 0
    כתב ב נערך לאחרונה על ידי סקרן 0
    #1

    האם ואיך ניתן להכניס תפקידים של לחצנים (בטופס) כחלק מקוד ארוך יותר?
    כלומר, כשכותבים קוד ללחצן זה נמצא בתוך 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
    
    

    (כמובן שזו רק דוגמא ויש כאן הרבה שגיאות קוד, אז נא לא להעיר על זה...)
    ליתר ביאור - אני מנסה ליצור טופס לצורך פירוט על תמיכות בקופת צדקה (בערך...) ואני מעוניין שיהיה אפשר לבחור סוג מקרה כדי להתאים נוסח אוטומטי לפרוטוקול, ועל פי סוג המקרה יהיו שינויים נוספים אוטומטיים בטופס.
    לכן אני מנסה ליצור כמה לחצנים שתפקידם יהיה רק להגדיר את המשתנה, ולתלות את כל השינויים באותו משתנה.
    (ייתכן מאד שאני עושה סתם סיבובים מיותרים, תסלחו לי כי זה הקוד הראשון פחות או יותר שאני מנסה... 🤔 🙄

    א תגובה 1 תגובה אחרונה
    0
    • א מנותק
      א מנותק
      ארי
      השיב לסקרן 0 ב נערך לאחרונה על ידי
      #2

      @סקרן-0 אתה יכול להגדיר משתנה לא בתוך שום לחצן.
      ככה:

      Option Compare Database
      Option Explicit
      
      dim Yossi as string
      

      זה מה שאתה מחפש?

      ס תגובה 1 תגובה אחרונה
      1
      • ס מנותק
        ס מנותק
        סקרן 0
        השיב לארי ב נערך לאחרונה על ידי סקרן 0
        #3

        @ארי תודה אבל לא זה מה ששאלתי...
        אני מעוניין שהלחצן יגדיר את ערך המשתנה ל 2 וממילא לאחר לחיצה על הלחצן בטופס זה יחול התהליך שהגדרתי אם Yossi = 2
        בעצם השאלה היא איך לקשר את החלק הזה>

        Private Sub לחצן1_Click()
        Me.BlaBla.Form.AllowAdditions = True
        End Sub
        

        לשאר הקוד, וכן איך להגדיר שהלחיצה תשנה את המשתנה רק ביחס לחישוב הנוכחי (כיון שגם ההגדרות של הלחיצות על לחצנים אחרים משנות את ערך המשתנה והקוד צריך לדלג עליהם...)

        א תגובה 1 תגובה אחרונה
        0
        • א מנותק
          א מנותק
          ארי
          השיב לסקרן 0 ב נערך לאחרונה על ידי
          #4

          @סקרן-0 אמר בעזרה לקוד באקסס:

          איך להגדיר שהלחיצה תשנה את המשתנה רק ביחס לחישוב הנוכחי

          מה הכוונה?

          במה שכתבתי למעלה אתה יכול אח"כ לכתוב בכל קוד

          Yossi = 2
          

          וזה ישנה את הערך של המשתנה.

          תגובה 1 תגובה אחרונה
          0
          • OdedDvirO מנותק
            OdedDvirO מנותק
            OdedDvir
            כתב ב נערך לאחרונה על ידי OdedDvir
            #5

            אם המשתנה רלוונטי רק לטופס הזה, תגדיר אותו מחוץ לסקופ של הפונקציה. ואז תוכל לגשת אליו מכל פונקציה בטופס. (זו גם הדרך שהציע @ארי)
            לדוגמא:

            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
            
            ס תגובה 1 תגובה אחרונה
            5
            • ס מנותק
              ס מנותק
              סקרן 0
              השיב לOdedDvir ב נערך לאחרונה על ידי סקרן 0
              #6

              @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, ובמופע הבא אני מעוניין שהוא יחזור אוטומטית לערך הראשון (כיון שהלחצנים הם לשינויים ספציפיים בטופס ולא לברירת מחדל)
              מקווה שהצלחתי להסביר... (אני לא מכיר את הטרמינולוגיה בכלל😧 🙄 )

              OdedDvirO תגובה 1 תגובה אחרונה
              0
              • OdedDvirO מנותק
                OdedDvirO מנותק
                OdedDvir
                השיב לסקרן 0 ב נערך לאחרונה על ידי
                #7

                @סקרן-0 אמר בעזרה לקוד באקסס:

                השאלה אחרי לחיצה במופע מסויים של הטופס, האם הערך לא ייקבע גם למופעים הבאים, למשל אם כעת הערך הוא 3, ובמופע הבא אני מעוניין שהוא יחזור אוטומטית לערך הראשון (כיון שהלחצנים הם לשינויים ספציפיים בטופס ולא לברירת מחדל)

                יש כאן עירוב נושאים:

                1. איך להגדיר משתנה שערכו לא נאבד ביציאה מהפונקציה?
                  על זה עניתי.
                2. איך לאתחל אותו מחדש בכל מופע של הטופס?
                  תשתמש בארוע טעינת טופס, הוא רץ אוטומטית בכל מופע חדש של הטופס:
                Private Sub Form_Load()
                   UserClicked = 0
                End Sub
                
                1. אולי זה הזמן למדריך אקסס למתקדמים?
                  התלבטתי בזה תקופה ארוכה, ולא הגעתי להחלטה.
                  דווקא לאחרונה יש לי הרבה יותר חשק לכתוב מדריך לדוט נט...
                חייםיודלביץח ס 2 תגובות תגובה אחרונה
                5
                • חייםיודלביץח מנותק
                  חייםיודלביץח מנותק
                  חייםיודלביץ
                  השיב לOdedDvir ב נערך לאחרונה על ידי
                  #8

                  @OdedDvir אמר בעזרה לקוד באקסס:

                  אולי זה הזמן למדריך אקסס למתקדמים?
                  התלבטתי בזה תקופה ארוכה, ולא הגעתי להחלטה.
                  דווקא לאחרונה יש לי הרבה יותר חשק לכתוב מדריך לדוט נט...

                  הלוואי, אשמח מאד מאד!!

                  תגובה 1 תגובה אחרונה
                  1
                  • ס מנותק
                    ס מנותק
                    סקרן 0
                    השיב לOdedDvir ב נערך לאחרונה על ידי
                    #9

                    @OdedDvir כך או כך סביר שהוא מדריך טוב...
                    הנקודה היא שמדריכים לדוט נט נפוצים יותר ברשת ממדריכים לVBA... ודאי מדריכים ברמה כזו...
                    בכל אופן תודה רבה!!!

                    תגובה 1 תגובה אחרונה
                    0

                    בא תתחבר לדף היומי!
                    • התחברות

                    • אין לך חשבון עדיין? הרשמה

                    • התחברו או הירשמו כדי לחפש.
                    • פוסט ראשון
                      פוסט אחרון
                    0
                    • דף הבית
                    • קטגוריות
                    • פוסטים אחרונים
                    • משתמשים
                    • חיפוש
                    • חוקי הפורום