תחומים
    • הרשמה
    • התחברות
    • חיפוש
    • קטגוריות
    • פוסטים אחרונים
    • משתמשים
    • חיפוש
    חוקי הפורום

    אקסס | RecordCount מחזיר ערך לא נכון

    תכנות
    3
    19
    48
    טוען פוסטים נוספים
    • מהישן לחדש
    • מהחדש לישן
    • הכי הרבה הצבעות
    תגובה
    • הגב כנושא
    התחבר בכדי לפרסם תגובה
    נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
    • WWW
      WWW נערך לאחרונה על ידי WWW

      כבר קרה לי כמה פעמים שאקסס משתגע ומוסיף או מחסיר כמה רשומות ממספר הרשומות בגישה דרך VBA:

      RS.RecordCount
      

      לא עוזר להוסיף לפני כן:

      If RS.EOF And RS.BOF Then RS.MoveLast
      

      כי כשהטבלה ריקה זה פשוט מחזיר שגיאה שהרשומה לא קיימת.
      וזה מחזיר RecordCount של 23.

      במקרה אחר, שזה הציג פחות ממה שיש באמת, אז לאחר מחיקת כל הרשומות, זה הציג לי RecordCount: -3 🙂

      מה עושים?

      בדקתי ב 2 גרסאות, 2010 ו 365.

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

      תגובה 1 תגובה אחרונה תגובה ציטוט 0
      • OdedDvir
        OdedDvir נערך לאחרונה על ידי

        כנראה שהטופס עוד לא סיים לטעון את כל ה RS
        תנסה לזוז קודם לרשומה האחרונה ואז לאחזר את הערך של RecordCount
        if rs.eof then
        result = 0
        else
        rs.MoveLast
        result = rs.RecordCount

        תגובה 1 תגובה אחרונה תגובה ציטוט 0
        • מלא
          מלא נערך לאחרונה על ידי

          @WWW אמר באקסס | RecordCount מחזיר ערך לא נכון:

          לא עוזר להוסיף לפני כן:
          If RS.EOF And RS.BOF Then RS.MoveLast

          כי כשהטבלה ריקה זה פשוט מחזיר שגיאה שהרשומה לא קיימת.
          וזה מחזיר RecordCount של 23.

          צריך להיות IF NOT

          @WWW אמר באקסס | RecordCount מחזיר ערך לא נכון:

          במקרה אחר, שזה הציג פחות ממה שיש באמת, אז לאחר מחיקת כל הרשומות, זה הציג לי RecordCount: -3

          כמה הוא החסיר לפני שמחקת את כל הרשומות,
          אם הוא החסיר 3 ייתכן שיש איזה שורה מפוספסת שמחסירה 3...

          WWW 2 תגובות תגובה אחרונה תגובה ציטוט 0
          • WWW
            WWW @מלא נערך לאחרונה על ידי

            @מלא אמר באקסס | RecordCount מחזיר ערך לא נכון:

            אם הוא החסיר 3 ייתכן שיש איזה שורה מפוספסת שמחסירה 3...

            מה הכוונה?

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

            מלא תגובה 1 תגובה אחרונה תגובה ציטוט 0
            • WWW
              WWW @מלא נערך לאחרונה על ידי WWW

              @מלא אמר באקסס | RecordCount מחזיר ערך לא נכון:

              צריך להיות IF NOT

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

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

              תגובה 1 תגובה אחרונה תגובה ציטוט 0
              • מלא
                מלא @WWW נערך לאחרונה על ידי

                @WWW אמר באקסס | RecordCount מחזיר ערך לא נכון:

                @מלא אמר באקסס | RecordCount מחזיר ערך לא נכון:

                אם הוא החסיר 3 ייתכן שיש איזה שורה מפוספסת שמחסירה 3...

                מה הכוונה?

                התכוונתי שזה דבר מוזר שהוא יחזיר -3 על טבלה ריקה.
                ואם תמיד הוא החזר - 3 לפעמים יש איזה שורה שמחסירה 3

                כאן בסעיף 3 הם כותבים שהא מחזיר 100% אמת...

                WWW תגובה 1 תגובה אחרונה תגובה ציטוט 0
                • WWW
                  WWW @מלא נערך לאחרונה על ידי

                  @מלא אמר באקסס | RecordCount מחזיר ערך לא נכון:

                  התכוונתי שזה דבר מוזר שהוא יחזיר -3 על טבלה ריקה.
                  ואם תמיד הוא החזר - 3 לפעמים יש איזה שורה שמחסירה 3

                  ברור שזה מוזר.

                  הוא החזיר נראה לי כל הזמן 3 פחות, ואז ב 0 הוא תרגם ל -3 ...

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

                  תגובה 1 תגובה אחרונה תגובה ציטוט 0
                  • OdedDvir
                    OdedDvir נערך לאחרונה על ידי

                    אני חושב שזה בגלל שבVBA כל משפט IF בודק את כל התנאים שב-AND יחד, גם אם הראשון FALSE.
                    תנסה להפריד את התנאים, ולבדוק אחד אחד:
                    If RS.EOF then
                    result =0
                    else
                    RS.Movelast
                    result = RS.recordCount
                    end if

                    WWW תגובה 1 תגובה אחרונה תגובה ציטוט 0
                    • WWW
                      WWW @OdedDvir נערך לאחרונה על ידי

                      @OdedDvir גם כשאני כותב RS.Movelast בלי IF, זה לא עוזר.

                      עכשיו הטבלה ריקה לגמרי
                      וזה מציג לי 75...

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

                      אני מאמין שדחוס ותקן יפתור את הבעיה.

                      אבל זה קובץ ענק אין לי זמן לזה 😞

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

                      תגובה 1 תגובה אחרונה תגובה ציטוט 0
                      • OdedDvir
                        OdedDvir נערך לאחרונה על ידי

                        יש לי רעיון:
                        אם אתה צריך רק את מספר הרשומות, אולי DCount יעזור?
                        עוד רעיון
                        אולי תריץ שאילתת יצירת טבלה, ותכניס רק עמודה אחת לתוכה (אם אתה צריך רק את מספר הרשומות), ותבדוק כמה שורות יש בה
                        SELECT [id] INTO [NewTable] FROM [TableName]
                        ותבדוק כמה רשומות יש ב-NewTable

                        תגובה 1 תגובה אחרונה תגובה ציטוט 1
                        • OdedDvir
                          OdedDvir נערך לאחרונה על ידי

                          עוד כיוון:
                          איך את פותח את ה-RS? מה פקודת OpenRecordset?
                          תנסה להוסיף את הדגל dbReadOnly או dbOpenSnapshot

                          WWW תגובה 1 תגובה אחרונה תגובה ציטוט 2
                          • WWW
                            WWW @OdedDvir נערך לאחרונה על ידי WWW

                            @OdedDvir אמר באקסס | RecordCount מחזיר ערך לא נכון:

                            dbOpenSnapshot

                            עזר!
                            עדכון:
                            לא עזר, כעת זה מציג לי על 7000 רשומות 1.

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

                            OdedDvir תגובה 1 תגובה אחרונה תגובה ציטוט 0
                            • OdedDvir
                              OdedDvir @WWW נערך לאחרונה על ידי

                              @WWW מה פקודת OpenRecordset שאתה משתמש בה?

                              WWW תגובה 1 תגובה אחרונה תגובה ציטוט 0
                              • WWW
                                WWW @OdedDvir נערך לאחרונה על ידי

                                @OdedDvir

                                CurrentDb.OpenRecordset("A")
                                

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

                                תגובה 1 תגובה אחרונה תגובה ציטוט 0
                                • OdedDvir
                                  OdedDvir נערך לאחרונה על ידי

                                  תנסה OpenRecordset("A", dbOpenSnapshot, dbReadOnly)

                                  תגובה 1 תגובה אחרונה תגובה ציטוט 0
                                  • OdedDvir
                                    OdedDvir נערך לאחרונה על ידי

                                    או OpenRecordset("A", dbPessimistic, dbReadOnly)

                                    WWW תגובה 1 תגובה אחרונה תגובה ציטוט 0
                                    • WWW
                                      WWW @OdedDvir נערך לאחרונה על ידי

                                      @OdedDvir אמר באקסס | RecordCount מחזיר ערך לא נכון:

                                      או OpenRecordset("A", dbPessimistic, dbReadOnly)
                                      תנסה OpenRecordset("A", dbOpenSnapshot, dbReadOnly)

                                      כנ"ל מחזיר 1.

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

                                      OdedDvir תגובה 1 תגובה אחרונה תגובה ציטוט 0
                                      • OdedDvir
                                        OdedDvir @WWW נערך לאחרונה על ידי

                                        @WWW וואו איזה תיסכול
                                        ניסית ליצור טבלת עזר ולספור את הרשומות שם (כמו שהצעתי למעלה)?
                                        או אולי במקום שם הטבלה "A" תכניס שאילתא (זה יוצר עותק של הטבלה)
                                        set RS = currentdb.OpenRecordset("SELECT id FROM A", dbOpenSnapshot, dbReadOnly)

                                        WWW תגובה 1 תגובה אחרונה תגובה ציטוט 0
                                        • WWW
                                          WWW @OdedDvir נערך לאחרונה על ידי

                                          @OdedDvir אמר באקסס | RecordCount מחזיר ערך לא נכון:

                                          set RS = currentdb.OpenRecordset("SELECT id FROM A", dbOpenSnapshot, dbReadOnly)

                                          ניסיתי כבר בהתחלה.
                                          לא עזר.

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

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

                                          תגובה 1 תגובה אחרונה תגובה ציטוט 0
                                          • 1 / 1
                                          • פוסט ראשון
                                            פוסט אחרון
                                          בא תתחבר לדף היומי!