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

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

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

שימוש בפרמטרים בשאילתת עדכון באקסס

מתוזמן נעוץ נעול הועבר תוכנה
18 פוסטים 3 כותבים 459 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • איש ימיניא מנותק
    איש ימיניא מנותק
    איש ימיני
    השיב לOdedDvir ב נערך לאחרונה על ידי איש ימיני
    #7

    @OdedDvir
    תודה רבה !!!
    עשיתי את זה כך:

    Dim iMonth, iYear As Integer
    iYear = InputBox("הזן שנה")
    iMonth = InputBox("הזן חודש")
    
        Dim db As DAO.Database
        Set db = CurrentDb
        Dim qryDef As DAO.QueryDef
        Dim selectSQL As String
        Dim fieldName As String
        fieldName = "חודש " & iMonth & "/" & iYear
        Dim SQL As String
        
        Dim newSelectSQL As String
        newSelectSQL = "UPDATE ראשי LEFT JOIN חודשי ON [ראשי].[מזהה]=[חודשי].[מזהה] SET ראשי.[" & fieldName & "] = IIf(Not (IsNull([חודשי].[Name])),'1','') WHERE Nz([ראשי].[" & fieldName & "],0)=0;"
        With db.QueryDefs("1234")
            .SQL = newSelectSQL
        End With
        
        DoCmd.OpenQuery "1234"
        
        Set qryDef = Nothing
        Set db = Nothing
    

    @OdedDvir אמר בשימוש בפרמטרים בשאילתת עדכון באקסס:

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

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

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

      @איש-ימיני אמר בשימוש בפרמטרים בשאילתת עדכון באקסס:

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

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

      ID   | UpdatedOn
      100  | 10/01/2020
      101  | 10/01/2020
      

      אגב, מדוע שינית את הקוד ומה הרווחת בזה?

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

        @OdedDvir אמר ב[שימוש בפרמטרים בשאילתת עדכון

        אגב, מדוע שינית את הקוד ומה הרווחת בזה?

        ניסיתי בדיוק כמו שכתבת וזה החזיר שגיאה
        265604d0-529d-4dc6-99a2-226b0e8af285-image.png
        עשיתי חיפוש קצר על הקוד ומצאתי את זה ושילבתי את זה ביחד ועובד מצוין וזה גם מיד מריץ את השאילתה.

        @OdedDvir אמר בשימוש בפרמטרים בשאילתת עדכון באקסס:

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

        ID   | UpdatedOn
        100  | 10/01/2020
        101  | 10/01/2020
        

        איך אני מוסיף לשאילתה שיעדכן בטבלה אחרת את המזהה ואת התאריך?

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

          @איש-ימיני אמר בשימוש בפרמטרים בשאילתת עדכון באקסס:

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

          שורות 8-9 בקוד שלי אמורות להכתב כשורה אחת ארוכה. ייתכן והדבקת אותן כשתי שורות כמו שמופיע בפוסט.

          איך אני מוסיף לשאילתה שיעדכן בטבלה אחרת את המזהה ואת התאריך?

          INSERT INTO UserUpdates(Id, UpdatedOn) VALUES (UserId, UpdateDate);
          
          איש ימיניא תגובה 1 תגובה אחרונה
          1
          • איש ימיניא מנותק
            איש ימיניא מנותק
            איש ימיני
            השיב לOdedDvir ב נערך לאחרונה על ידי איש ימיני
            #11

            @OdedDvir אמר בשימוש בפרמטרים בשאילתת עדכון באקסס:

            INSERT INTO UserUpdates(Id, UpdatedOn) VALUES (UserId, UpdateDate);
            

            איך אני משלב את זה עם:

            UPDATE ראשי LEFT JOIN חודשי ON [ראשי].[מזהה]=[חודשי].[מזהה] SET ראשי.[" & fieldName & "] = IIf(Not (IsNull([חודשי].[Name])),'1','') WHERE Nz([ראשי].[" & fieldName & "],0)=0;
            
            OdedDvirO תגובה 1 תגובה אחרונה
            0
            • OdedDvirO מנותק
              OdedDvirO מנותק
              OdedDvir
              השיב לאיש ימיני ב נערך לאחרונה על ידי
              #12

              @איש-ימיני אני לא מצליח להבין מה ברצונך לעשות ומה תפקידה של כל טבלה.
              אם נניח שאכן יש לך טבלת עדכונים כנ"ל (ID,UpdatedOn)
              מה ההגיון שעומד מאחורי השאילתא שרצית, מה אתה מבקש לעשות או לדעת?

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

                @OdedDvir
                אני רוצה לעדכן בטבלה 'ראשי' בשדה 'כמות' שכל חודש יעלה מספר אחד, לדוגמה: אם יצחק שה-ID שלו הוא 55 נמצא בטבלת 'חודשי' שיוסיף לו 1 בשדה 'כמות' (+1), וחוץ מזה יעדכן גם בטבלת 'UserUpdates' שהיה עדכון ביום X
                מקווה שכתבתי מספיק ברור

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

                  @איש-ימיני האם אתה צריך לזכור את כל תאריכי העדכונים או רק את תאריך העדכון האחרון?

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

                    @OdedDvir
                    את כל התאריכים

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

                      @איש-ימיני תצטרך ליצור שתי שאילתות ולהריץ אחת אחרי השניה:

                      שאילתא לעדכון המונה:

                      UPDATE Users INNER JOIN Monthly ON Users.Id = Monthly.UserId SET Users.[Counter] = [Users].[Counter]+1;
                      

                      שאילתא להוספת רשומת עדכון לטבלת UserUpdates:

                      INSERT INTO UserUpdates ( UserId, UpdatedOn )
                      SELECT Monthly.UserId, Now() AS UpdatedOn
                      FROM Monthly;
                      

                      או שתוכל להקצות ערך ברירת מחדל לשדה UpdatedOn בטבלה UserUpdates

                      =Now()
                      

                      ואז השאילתא יותר פשוטה:

                      INSERT INTO UserUpdates ( UserId )
                      SELECT Monthly.UserId
                      FROM Monthly;
                      
                      איש ימיניא תגובה 1 תגובה אחרונה
                      3
                      • איש ימיניא מנותק
                        איש ימיניא מנותק
                        איש ימיני
                        השיב לOdedDvir ב נערך לאחרונה על ידי איש ימיני
                        #17

                        @OdedDvir
                        תודה רבה!!!
                        עובד טוב מאוד!!
                        עריכה: הוספתי רק את זה:

                        Nz([Users].[Counter],0)+1
                        
                        OdedDvirO תגובה 1 תגובה אחרונה
                        0
                        • OdedDvirO מנותק
                          OdedDvirO מנותק
                          OdedDvir
                          השיב לאיש ימיני ב נערך לאחרונה על ידי
                          #18

                          @איש-ימיני אמר בשימוש בפרמטרים בשאילתת עדכון באקסס:

                          עריכה: הוספתי רק את זה:
                          Nz([Users].[Counter],0)+1

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

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

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

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

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