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

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

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

מיספור שורות בשאילתא - אקסס

מתוזמן נעוץ נעול הועבר ארכיון code613m
12 פוסטים 5 כותבים 691 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • ק מנותק
    ק מנותק
    קפה
    כתב ב נערך לאחרונה על ידי
    #1

    יש לי טבלה שמרכזת נניח תשלומים בפריסה,
    יש ID לכל לקוח (CustID), ובטבלת Payments מזהה ייחודי (PaymentID) לכל הוראת תשלום (עתידית כלשעברית).
    חשוב לי מאד לדעת כל תשלום כמה מתוך כמה הוא, כלומר תשלום X מתוך Y תשלומים. אז Y תשלומים זה פשוט: Count(CustID.Payments)
    אבל אני לא מצליח (ולא שלא ניסיתי) למצוא דרך למצוא את מספר התשלום מתוך השורה.
    עד כה השתמשתי בדרך מאד בנאלית ולא נכונה, חישבתי את הID של כל שורה מינוס הID של שורה הראשונה ללקוח, מה שיצר כמובן בעיה כאשר מחקתי שורה (=תשלום 10 מתוך 9) או הוספתי שורה (=תשלום 134 מתוך 11). כך שאני לא יכול לסמוך על חישוב מעוקל שכזה.
    מצאתי כל מיני קודי VB שמיועדים להעתיק את סרגל Record X of Y אבל תכל'ס, זה לא עובד.
    ניסיתי:

     DCount("CustID","Customers","CustID <=" & [CustID]) אבל זה מחשב רק זיהוי יחודי, אני לא יכול להפעיל את זה על PaymentID כי הוא מופיע כפול, והוא לא ייחודי.
    

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

    פורסם במקור בפורום CODE613 ב05/02/2014 18:52 (+02:00)

    תגובה 1 תגובה אחרונה
    0
    • dovidD מנותק
      dovidD מנותק
      dovid ניהול
      כתב ב נערך לאחרונה על ידי
      #2

      נראה לי שמותר לשמור את זה בשורת התשלום, אבל נניח שאתה לא שומר.

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

      עריכה, כעת ראיתי שכבר ניסית קודים בכיוון. מה קורה כשאתה עושה ככה:

      DCount("CustID","Customers","PaymentID <= " & [PaymentID] & " AND CustID = " & [CustID])
      

      פורסם במקור בפורום CODE613 ב05/02/2014 19:07 (+02:00)

      מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

      בכל נושא אפשר ליצור קשר dovid@tchumim.com

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

        אם אתה מוותר על שאילתה, אתה יכול לעשות את זה בדו"ח ואז לעשות שדה אחד שהערך שלו הוא "=1" ולעשות סכומים מצטברים מעל קבוצה (כמובן בתנאי שכל לקוח יש לו קיבוץ בפני עצמו.

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

        לעשות את זה בשאילתה, זה מסובך והדרך הטובה ביותר היא באמצעות קוד, אם תרצה אוכל לעזור לך בזה שלח לי את המסד, זה קוד שעשוי להאט מאוד את השאילתה אם לא עושים אותו יעיל.

        בהצלחה.

        פורסם במקור בפורום CODE613 ב05/02/2014 20:38 (+02:00)

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

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

          עיין כאן בדוגמא שהביא moishy
          http://www.prog.co.il/showthread.php?t=138631

          פורסם במקור בפורום CODE613 ב05/02/2014 21:52 (+02:00)

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

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

            פורסם במקור בפורום CODE613 ב06/02/2014 01:18 (+02:00)

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

            תגובה 1 תגובה אחרונה
            0
            • dovidD מנותק
              dovidD מנותק
              dovid ניהול
              כתב ב נערך לאחרונה על ידי
              #6

              @רחמים

              עיין כאן בדוגמא שהביא moishy
              http://www.prog.co.il/showthread.php?t=138631

              השאלה שם זה מספור רץ פשוט לגמרי.
              כלומר כמו שבאקסס יש מספר שורה למטה, אז זה מביא את זה בשדה בשאילתה.
              זה שימושי רק לייצוא וגם אז לא ממש.

              פורסם במקור בפורום CODE613 ב06/02/2014 10:55 (+02:00)

              מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

              בכל נושא אפשר ליצור קשר dovid@tchumim.com

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

                @דוד ל.ט.

                השאלה שם זה מספור רץ פשוט לגמרי.
                כלומר כמו שבאקסס יש מספר שורה למטה, אז זה מביא את זה בשדה בשאילתה.

                ממש ממש לא.

                פורסם במקור בפורום CODE613 ב06/02/2014 14:19 (+02:00)

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

                תגובה 1 תגובה אחרונה
                0
                • dovidD מנותק
                  dovidD מנותק
                  dovid ניהול
                  כתב ב נערך לאחרונה על ידי
                  #8

                  @ארכיטקט

                  @דוד ל.ט.
                  השאלה שם זה מספור רץ פשוט לגמרי.

                  כלומר כמו שבאקסס יש מספר שורה למטה, אז זה מביא את זה בשדה בשאילתה.

                  ממש ממש לא.

                  אתה יכול לנמק?

                  פורסם במקור בפורום CODE613 ב06/02/2014 14:50 (+02:00)

                  מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                  בכל נושא אפשר ליצור קשר dovid@tchumim.com

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

                    @דוד ל.ט.

                    אתה יכול לנמק?

                    תוריד את הקובץ תשנה את המיון ordrr by ותראה בעצמך.

                    פורסם במקור בפורום CODE613 ב06/02/2014 14:51 (+02:00)

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

                    תגובה 1 תגובה אחרונה
                    0
                    • dovidD מנותק
                      dovidD מנותק
                      dovid ניהול
                      כתב ב נערך לאחרונה על ידי
                      #10

                      @ארכיטקט

                      @דוד ל.ט.
                      אתה יכול לנמק?

                      תוריד את הקובץ תשנה את המיון ordrr by ותראה בעצמך.

                      אז לא הבנת אותי. לא אמרתי שלא.
                      התכוונתי שכמו שכשאתה עמוד על שורה אז כתוב למטה 5 מתוך XXXX
                      אז ה5 הזה יהיה כתוב באחת העמודות בשורה ה5 במיון הנוכחי.

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

                      פורסם במקור בפורום CODE613 ב06/02/2014 15:29 (+02:00)

                      מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                      בכל נושא אפשר ליצור קשר dovid@tchumim.com

                      תגובה 1 תגובה אחרונה
                      0
                      • clickoneC מנותק
                        clickoneC מנותק
                        clickone
                        כתב ב נערך לאחרונה על ידי
                        #11

                        אני מצרף דוגמא שכתבתי בעקבות השאלה. (לאחראים: נשמח אם תאפשרו גם את הסיומת accdb בהעלאת קבצים <!-- s8-) --><img src="{SMILIES_PATH}/icon_cool.gif" alt="8-)" title="מגניב" /><!-- s8-) --> )
                        השאילתא לא תלוייה במיון ולא בסינון. (גם אם נסנן רק תשלום אחד זה יראה איזה תשלום מתוך כמה)

                        בעייה שלא היה לי זמן להתעסק איתה:
                        אם יש יותר מתשלום אחד הוא יכתוב על שתי התשלומים את אותו מספר תשלומים. (יש בקובץ דוגמא לזה) - הסיבה היא שהשאילתא בודקת וסופרת את מה שיותר קטן או שווה לתאריך התשלום.
                        יש לי אולי פיתרון זה ליצור שדה נוסף מסוג תאריך שיכיל בתוכו את התאריך + שעה שבה נוצרה התנועה ולסנן לפי זה. (יכול להועיל גם במקרה שמפיקים קבלה מאוחרת על תשלום ורוצים שזה ייכנס בסוף [בתאריך ההפקה של הקבלה] ולא בתאריך של השיק - אם יש שדה של נוצר בתאריך אז זה יפתור את הבעייה)

                        השתמשתי בכוונה בשאילתת משנה ולא בDLookUp כי היא יותר זריזה מאשר DLookUp.

                        Database1.zip

                        פורסם במקור בפורום CODE613 ב09/02/2014 01:40 (+02:00)

                        אין טסט כמו פרודקשן.

                        המייל שלי urivpn@gmail.com

                        תגובה 1 תגובה אחרונה
                        3
                        • ק מנותק
                          ק מנותק
                          קפה
                          כתב ב נערך לאחרונה על ידי
                          #12

                          פנטסטי!
                          בדיוק מה שחיפשתי!
                          ClickOne הייתי שמח להמשיך את שיתוף הפעולה, להתראות במייל...

                          פורסם במקור בפורום CODE613 ב18/02/2014 22:28 (+02:00)

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

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

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

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