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

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

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

עזרה | הזנת ערך הפרמטר באקסס

מתוזמן נעוץ נעול הועבר תוכנה
15 פוסטים 7 כותבים 998 צפיות 4 עוקבים
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
תגובה
  • תגובה כנושא
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • chagoldC chagold

    @אוריי אולי ככה
    CostPerProduct: vb_AveragePerMonthlyProduct((vb0MN(),[IDLtem])*([SealsCM]))

    אורייא
    אורייא
    אוריי
    כתב ב נערך לאחרונה על ידי
    #5

    @chagold אמר בעזרה | הזנת ערך הפרמטר באקסס:

    @אוריי אולי ככה
    CostPerProduct: vb_AveragePerMonthlyProduct((vb0MN(),[IDLtem])*([SealsCM]))

    לצערי גם כך לא עובד

    ניתן לפנות אלי גם ב al0548446188@gmail.com

    מלאמ תגובה 1 תגובה אחרונה
    0
    • אורייא אוריי

      @chagold אמר בעזרה | הזנת ערך הפרמטר באקסס:

      @אוריי אולי ככה
      CostPerProduct: vb_AveragePerMonthlyProduct((vb0MN(),[IDLtem])*([SealsCM]))

      לצערי גם כך לא עובד

      מלאמ
      מלאמ
      מלא
      כתב ב נערך לאחרונה על ידי מלא
      #6

      @אוריי אמר בעזרה | הזנת ערך הפרמטר באקסס:

      לצערי גם כך לא עובד

      לא נראה שיש סיבה שהסוגריים יעזרו משהו.

      בעיה מוכרת.

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

      אולי @clickone יש לו יותר מידע מתי זה קורה.

      אורייא תגובה 1 תגובה אחרונה
      0
      • מלאמ מלא

        @אוריי אמר בעזרה | הזנת ערך הפרמטר באקסס:

        לצערי גם כך לא עובד

        לא נראה שיש סיבה שהסוגריים יעזרו משהו.

        בעיה מוכרת.

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

        אולי @clickone יש לו יותר מידע מתי זה קורה.

        אורייא
        אורייא
        אוריי
        כתב ב נערך לאחרונה על ידי
        #7

        @מלא אמר בעזרה | הזנת ערך הפרמטר באקסס:

        @אוריי אמר בעזרה | הזנת ערך הפרמטר באקסס:

        לצערי גם כך לא עובד

        לא נראה שיש סיבה שהסוגריים יעזרו משהו.

        בעיה מוכרת.

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

        אולי @clickone יש לו יותר מידע מתי זה קורה.

        ככל הנראה זה מה שאני יעשה אבל זה לוקח הרבה משאבים לאקסס
        בכל אופן שאילתה על שאילתה זה מה ש @clickone הציע לי אבל זה לא יותר קצר מלעשות את החישוב גם בחדש

        ניתן לפנות אלי גם ב al0548446188@gmail.com

        OdedDvirO תגובה 1 תגובה אחרונה
        0
        • אורייא אוריי

          למה זה קורה
          כתבתי ביטוי בבונה, זה הביטוי:

          CostPerProduct: vb_AveragePerMonthlyProduct(vb0MN(),[IDLtem])*[SealsCM]
          

          כמובן כל השדות קיימים הכל כתוב נכון (ככל מה שידוע לי)

          ראוי לציין ששדה SealsCM הוא שדה מחושב באותה השאילתה

          תכלס בהפעלת השאילתה הוא מקפיץ חלון כזה
          e0a1cb25-0809-49e1-bd42-e10f22f3b01e-image.png

          לאחר שאני לוחץ אישור (בלי לכתוב כלום בפנים)
          אני מקבל את השדה מחושב בדיוק לפי מה שכתבתי בביטוי

          b40c9841-7fb5-450c-8527-6e51667fccc1-image.png

          מישהו יודע למה קופץ החלון הזה?
          ומה אני צריך לכתוב כדי שלא יקפוץ?

          S
          S
          Shmuel754
          כתב ב נערך לאחרונה על ידי
          #8

          @אוריי
          תכתוב הפניה מלאה כולל שם שאילתא או טבלה ולא רק שם שדה.

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

            @מלא אמר בעזרה | הזנת ערך הפרמטר באקסס:

            @אוריי אמר בעזרה | הזנת ערך הפרמטר באקסס:

            לצערי גם כך לא עובד

            לא נראה שיש סיבה שהסוגריים יעזרו משהו.

            בעיה מוכרת.

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

            אולי @clickone יש לו יותר מידע מתי זה קורה.

            ככל הנראה זה מה שאני יעשה אבל זה לוקח הרבה משאבים לאקסס
            בכל אופן שאילתה על שאילתה זה מה ש @clickone הציע לי אבל זה לא יותר קצר מלעשות את החישוב גם בחדש

            OdedDvirO
            OdedDvirO
            OdedDvir
            כתב ב נערך לאחרונה על ידי
            #9

            יש דרך ארוכה וקצרה ויש קצרה וארוכה:

            הדרך הקצרה והארוכה

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

            הדרך הארוכה והקצרה

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

            כללי אצבע:

            1. חישובים שאמורים להתבצע רק פעם אחת - לבצע רק פעם אחת ולשמור בטבלה.
            2. להמנע כמה שניתן מלהכניס פונקציות בשאילתות. בפרט פונקציות שמוגדרות על ידי המשתמש.

            זה נכון הן מבחינת יעילות:

            • שאילתות רצות הרבה יותר מהר מקוד VBA באקסס, כי כל קריאה לפונקציה דורשת משאבים מהמערכת.
            • אתה לא צריך לחשב חישובים מיותרים פעמיים (או יותר) כדי שהשאילתא תואיל בטובה לקבל את הערך של הפונקציה.
            • שים לב שאפילו בפונקציות טריוויאליות, כמו Nz() או IsNull() עדיף לרשום בSQL טהור ולא לבצע קריאה ל-VBA, תשווה למשל בין:
            IsNull(SomeField) AS ValueIsEmpty
            

            ל:

            (SomeField Is Null) AS ValueIsEmpty
            

            הראשונה קוראת לפונקצית VBA בשם IsNull() בעוד השניה משתמשת רק בSQL והיא הרבה יותר מהירה.

            דוגמה שניה:
            תשווה בין:

            Nz(Amount,0)
            

            ל:

            IIf(Amount Is Null, 0, Amount)
            

            האופציה השנייה עדיפה בהרבה, כי היא משתמשת ב SQL טהור, ולכן

            • אתה לא מבצע קריאה לפונקציה
            • אתה שומר על טיפוס המשתנה בשדה (Data Type)
            • הקריטריון (אם יש בשאילתה) מחושב נכון
            • העמודה ממויינת נכון

            (הערה: יש הבדל עצום בין IIF של SQL שהיא פונקציה יעילה, לבין IIF של VBA, שהוא פונקציה גרועה שמחשבת תמיד את שתי התוצאות האפשריות!)

            והן מבחינת תחזוקה:

            • לפעמים פונקציה כתובה לא נכון ומייצרת שגיאת ריצה שמוכפלת אלפי פעמים בשאילתא - תרחיש לא נעים בכלל הן לך כמפתח וכ"ש למשתמש.
            • אם תרצה אי פעם לשדרג לבסיס נתונים אחר - הפונקציות לא יעבדו.
            WWWW תגובה 1 תגובה אחרונה
            6
            • OdedDvirO OdedDvir

              יש דרך ארוכה וקצרה ויש קצרה וארוכה:

              הדרך הקצרה והארוכה

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

              הדרך הארוכה והקצרה

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

              כללי אצבע:

              1. חישובים שאמורים להתבצע רק פעם אחת - לבצע רק פעם אחת ולשמור בטבלה.
              2. להמנע כמה שניתן מלהכניס פונקציות בשאילתות. בפרט פונקציות שמוגדרות על ידי המשתמש.

              זה נכון הן מבחינת יעילות:

              • שאילתות רצות הרבה יותר מהר מקוד VBA באקסס, כי כל קריאה לפונקציה דורשת משאבים מהמערכת.
              • אתה לא צריך לחשב חישובים מיותרים פעמיים (או יותר) כדי שהשאילתא תואיל בטובה לקבל את הערך של הפונקציה.
              • שים לב שאפילו בפונקציות טריוויאליות, כמו Nz() או IsNull() עדיף לרשום בSQL טהור ולא לבצע קריאה ל-VBA, תשווה למשל בין:
              IsNull(SomeField) AS ValueIsEmpty
              

              ל:

              (SomeField Is Null) AS ValueIsEmpty
              

              הראשונה קוראת לפונקצית VBA בשם IsNull() בעוד השניה משתמשת רק בSQL והיא הרבה יותר מהירה.

              דוגמה שניה:
              תשווה בין:

              Nz(Amount,0)
              

              ל:

              IIf(Amount Is Null, 0, Amount)
              

              האופציה השנייה עדיפה בהרבה, כי היא משתמשת ב SQL טהור, ולכן

              • אתה לא מבצע קריאה לפונקציה
              • אתה שומר על טיפוס המשתנה בשדה (Data Type)
              • הקריטריון (אם יש בשאילתה) מחושב נכון
              • העמודה ממויינת נכון

              (הערה: יש הבדל עצום בין IIF של SQL שהיא פונקציה יעילה, לבין IIF של VBA, שהוא פונקציה גרועה שמחשבת תמיד את שתי התוצאות האפשריות!)

              והן מבחינת תחזוקה:

              • לפעמים פונקציה כתובה לא נכון ומייצרת שגיאת ריצה שמוכפלת אלפי פעמים בשאילתא - תרחיש לא נעים בכלל הן לך כמפתח וכ"ש למשתמש.
              • אם תרצה אי פעם לשדרג לבסיס נתונים אחר - הפונקציות לא יעבדו.
              WWWW
              WWWW
              WWW
              כתב ב נערך לאחרונה על ידי WWW
              #10

              @odeddvir כל מילה פנינה!

              @odeddvir אמר בעזרה | הזנת ערך הפרמטר באקסס:

              לבין IIF של VBA, שהוא פונקציה גרועה שמחשבת תמיד את שתי התוצאות האפשריות!

              מה ההסבר בזה? למה זה נצרך? הרי ב 90% מהמקרים זה לא נצרך, מה הסברא לעשות ברירת מחדל כזה?

              WWW.netfree@gmail.com || קשבק! החזר כספי לבנק על רכישות באינטרנט || עונים על סקרים ומרוויחים כסף!

              OdedDvirO תגובה 1 תגובה אחרונה
              0
              • WWWW WWW

                @odeddvir כל מילה פנינה!

                @odeddvir אמר בעזרה | הזנת ערך הפרמטר באקסס:

                לבין IIF של VBA, שהוא פונקציה גרועה שמחשבת תמיד את שתי התוצאות האפשריות!

                מה ההסבר בזה? למה זה נצרך? הרי ב 90% מהמקרים זה לא נצרך, מה הסברא לעשות ברירת מחדל כזה?

                OdedDvirO
                OdedDvirO
                OdedDvir
                כתב ב נערך לאחרונה על ידי OdedDvir
                #11

                @www אמר בעזרה | הזנת ערך הפרמטר באקסס:

                מה ההסבר בזה? למה זה נצרך? הרי ב 90% מהמקרים זה לא נצרך, מה הסברא לעשות ברירת מחדל כזה?

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

                Debug.Print MyMax(2, SquareRoot(2))
                

                התוכנה תחשב גם את השורש הריבועי של 2, עוד לפני הקריאה לפונקציה MyMax, למרות שבסוף לא תשתמש בו.
                היתרון ב-IIF של SQL הוא שאם התנאי נכון, לא מבוצע חישוב של הפרמטר השני, והשאילתא מתעלמת ממנו.
                הניחוש שלי הוא שב-VBA הפונקציה IIF מיושמת כפונקציה רגילה ולא כקיצור ל IF שלם, דהיינו:

                IIF (Condition, A, B)
                

                אינו מיושם כ:

                If (Condition) Then
                Do A
                Else
                Do B
                End If
                
                WWWW תגובה 1 תגובה אחרונה
                3
                • OdedDvirO OdedDvir

                  @www אמר בעזרה | הזנת ערך הפרמטר באקסס:

                  מה ההסבר בזה? למה זה נצרך? הרי ב 90% מהמקרים זה לא נצרך, מה הסברא לעשות ברירת מחדל כזה?

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

                  Debug.Print MyMax(2, SquareRoot(2))
                  

                  התוכנה תחשב גם את השורש הריבועי של 2, עוד לפני הקריאה לפונקציה MyMax, למרות שבסוף לא תשתמש בו.
                  היתרון ב-IIF של SQL הוא שאם התנאי נכון, לא מבוצע חישוב של הפרמטר השני, והשאילתא מתעלמת ממנו.
                  הניחוש שלי הוא שב-VBA הפונקציה IIF מיושמת כפונקציה רגילה ולא כקיצור ל IF שלם, דהיינו:

                  IIF (Condition, A, B)
                  

                  אינו מיושם כ:

                  If (Condition) Then
                  Do A
                  Else
                  Do B
                  End If
                  
                  WWWW
                  WWWW
                  WWW
                  כתב ב נערך לאחרונה על ידי WWW
                  #12

                  @odeddvir אמר בעזרה | הזנת ערך הפרמטר באקסס:

                  התוכנה תחשב גם את השורש הריבועי של 2, עוד לפני הקריאה לפונקציה MyMax, למרות שבסוף לא תשתמש בו.

                  מי גילה למחשב (לפני החישוב של הפרמטר השני) שבסוף לא אשתמש בו?
                  משא"כ ב IIF יש הסתברות (ממוצעת) של 50% שלא אשתמש בתנאי השני.

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

                  WWW.netfree@gmail.com || קשבק! החזר כספי לבנק על רכישות באינטרנט || עונים על סקרים ומרוויחים כסף!

                  OdedDvirO תגובה 1 תגובה אחרונה
                  0
                  • WWWW WWW

                    @odeddvir אמר בעזרה | הזנת ערך הפרמטר באקסס:

                    התוכנה תחשב גם את השורש הריבועי של 2, עוד לפני הקריאה לפונקציה MyMax, למרות שבסוף לא תשתמש בו.

                    מי גילה למחשב (לפני החישוב של הפרמטר השני) שבסוף לא אשתמש בו?
                    משא"כ ב IIF יש הסתברות (ממוצעת) של 50% שלא אשתמש בתנאי השני.

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

                    OdedDvirO
                    OdedDvirO
                    OdedDvir
                    כתב ב נערך לאחרונה על ידי
                    #13

                    @www אמר בעזרה | הזנת ערך הפרמטר באקסס:

                    שהפלטפורמה מיושנת

                    נכון. בשפות מתקדמות יותר קיים אופרטור יעיל לכך, למשל ב-C#:

                    condition ? consequent : alternative
                    

                    אם התנאי (condition) נכון, לא מבוצעת הערכה של הפרמטר השני (alternative)

                    WWWW תגובה 1 תגובה אחרונה
                    2
                    • OdedDvirO OdedDvir

                      @www אמר בעזרה | הזנת ערך הפרמטר באקסס:

                      שהפלטפורמה מיושנת

                      נכון. בשפות מתקדמות יותר קיים אופרטור יעיל לכך, למשל ב-C#:

                      condition ? consequent : alternative
                      

                      אם התנאי (condition) נכון, לא מבוצעת הערכה של הפרמטר השני (alternative)

                      WWWW
                      WWWW
                      WWW
                      כתב ב נערך לאחרונה על ידי WWW
                      #14

                      @odeddvir אני מכיר את זה מפלטפורמות אחרות, בפלטפורמות הסטנדרטיות יש תמיד אפשרות של && ו || גם ב שתי תנאים של IF.

                      איך זה ב VBA? לדוגמה:

                      IF (a = 1 OR b = 2)
                      

                      WWW.netfree@gmail.com || קשבק! החזר כספי לבנק על רכישות באינטרנט || עונים על סקרים ומרוויחים כסף!

                      OdedDvirO תגובה 1 תגובה אחרונה
                      0
                      • WWWW WWW

                        @odeddvir אני מכיר את זה מפלטפורמות אחרות, בפלטפורמות הסטנדרטיות יש תמיד אפשרות של && ו || גם ב שתי תנאים של IF.

                        איך זה ב VBA? לדוגמה:

                        IF (a = 1 OR b = 2)
                        
                        OdedDvirO
                        OdedDvirO
                        OdedDvir
                        כתב ב נערך לאחרונה על ידי OdedDvir
                        #15

                        @www אגב, המונח שאנו עוסקים בו נקרא Short-circuit evaluation.
                        לצערי הוא לא קיים בשפת VBA.
                        תמיד שני הצדדים יחושבו, דהיינו גם אם a = 1 עדיין תבוצע ההשוואה האם b=1 למרות שהתנאי הוא or והתוצאה היא ודאי אמת.

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

                        שלום! נראה שהשיחה הזו מעניינת אותך, אבל עדיין אין לך חשבון.

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

                        בעזרת התרומה שלך, הפוסט הזה יכול להיות אפילו טוב יותר 💗

                        הרשמה התחברות
                        תגובה
                        • תגובה כנושא
                        התחברו כדי לפרסם תגובה
                        • מהישן לחדש
                        • מהחדש לישן
                        • הכי הרבה הצבעות


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

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

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