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

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

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

אקסס - קוד VBA לחיפוש והחלפה

מתוזמן נעוץ נעול הועבר תוכנה
22 פוסטים 6 כותבים 633 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • א מנותק
    א מנותק
    איש פלוני
    השיב לOdedDvir ב נערך לאחרונה על ידי
    #8

    @odeddvir אמר באקסס - קוד VBA לחיפוש והחלפה:

    @איש-פלוני תוכל להשתמש בשאילתת עדכון ולשמור את הערך הקיים, פשוט תבצע Replace על הערך הקיים, כלומר למשל על השדה SomeField תעדכן ל:

    Replace([SomeField],'1','א')
    

    אני יכול להגדיר לו כמה נתונים להחלפה (דהיינו, Replace([SomeField],'1','א'), ו Replace([SomeField],'2','ב')) ? כשניסיתי לעשות שאילתה שבכל אחד מהשדות אותה פונקציה עם נתונים שונים זה מעלה לי הודעת שגיאה על כפילות ביעד הפלט.
    תודה רבה!

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

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

      OldValue NewValue
      1 א
      2 ב
      ...
      19 יט
      20 כ

      ב. תבודד את המספר מהשדה המקורי אל שדה נפרד X על ידי מניפולציה על המחרוזת.
      ג. קשר את הטבלאות על ידי השדות X-OldValue
      ד. תריץ שאילתת עדכון שתחליף בין הערך המספרי בשדה המקורי לערך NewValue:

      Replace([SomeField],OldValue, NewValue)
      
      א תגובה 1 תגובה אחרונה
      1
      • א מנותק
        א מנותק
        איש פלוני
        השיב לOdedDvir ב נערך לאחרונה על ידי
        #10

        @odeddvir אמר באקסס - קוד VBA לחיפוש והחלפה:

        ב. תבודד את המספר מהשדה המקורי אל שדה נפרד X על ידי מניפולציה על המחרוזת.
        ג. קשר את הטבלאות על ידי השדות X-OldValue

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

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

          @איש-פלוני ראשית כל אתה צריך להצליח לתשאל את הkatalogM באופן שמחלץ את המספר:

           SELECT Mid([kategHeara],1,InStr([kategHeara],".")-1) as מניפולציה, kategHeara
           FROM katalogM 
          

          תראה אם זה מוציא לך טוב את המספר.
          שלב שני זה לעשות מה ש@OdedDvir הציע.

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

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

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

            @dovid לא עובד. (שגיאת תחביר אופרטור חסר בביטוי השאילתה).
            המילה מניפולציה באמצע? ככה?

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

              @איש-פלוני תואיל להדביק פה את לשון השאילתה אחרי השינויים שעשית.

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

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

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

                @איש-פלוני
                או שתחלץ את המספר עם הפונקציה הזאת. (בהנחה שאין עוד מספרים בשדה)

                Public Function GetNumerals(str As String) As String
                
                Dim i As Integer
                
                    For i = 1 To Len(str)
                        If IsNumeric(Mid(str, i, 1)) Then
                            GetNumerals = GetNumerals & Mid(str, i, 1)
                        End If
                    Next i
                
                End Function
                תגובה 1 תגובה אחרונה
                1
                • א מנותק
                  א מנותק
                  איש פלוני
                  השיב לdovid ב נערך לאחרונה על ידי
                  #15

                  @dovid העתקתי את מה שכתבת לתוך שאילתה בתצוגה של SQL וזהו...

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

                    @איש-פלוני חסר פרמטר אחד בקוד של @dovid , צ"ל:

                     SELECT Mid([kategHeara],1,InStr(1,[kategHeara],".")-1) as מניפולציה, kategHeara
                     FROM katalogM 
                    

                    (עריכה: מה שכתבתי לעיל שגוי, עיין בהערת @dovid לקמן)

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

                      @odeddvir זה אופציונלי.

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

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

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

                        @dovid אמר באקסס - קוד VBA לחיפוש והחלפה:

                        זה אופציונלי.

                        נכון, אבל צריך לכל הפחות להשמיט ולהשאיר מקום ריק, כך:

                        SELECT Mid([kategHeara],1,InStr(,[kategHeara],".")-1) as מניפולציה, kategHeara
                        FROM katalogM 
                        
                        dovidD תגובה 1 תגובה אחרונה
                        1
                        • dovidD מנותק
                          dovidD מנותק
                          dovid ניהול
                          השיב לOdedDvir ב נערך לאחרונה על ידי
                          #19

                          @odeddvir לא צריך, אופציונלי זה אומר שניתן פשוט לדלג עליו לגמרי.
                          הוא מזהה את הארגומנט נכון לפי מספר הארגומנטים (2).

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

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

                          OdedDvirO תגובה 1 תגובה אחרונה
                          1
                          • A מנותק
                            A מנותק
                            avi rz
                            כתב ב נערך לאחרונה על ידי
                            #20

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

                            Public Function GetGimatryya(str_ As Variant) As Long
                                    
                                
                                Dim i As Long
                                Dim longht_ As Long
                                Dim Y As Long
                                Dim out As Long
                                Dim str_to_out As String
                                
                                longht_ = Len(Nz(str_, ""))
                                For i = 1 To longht_
                                    str_to_out = Mid(str_, i, 1)
                                    Select Case str_to_out
                                        Case "א", "ב", "ג", "ד", "ה", "ו", "ז", "ח", "ט", "י", "כ", "ל", "מ", "נ", "ס", "ע", "פ", "צ", "ק", "ר", "ש", "ת", "ך", "ם", "ן", "ף":
                                            Y = Asc(str_to_out) - 223
                                        Case Else
                                            Y = 0
                                    End Select
                                    arr_ = Array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 20, 20, 30, 40, 40, 50, 50, 60, 70, 80, 80, 90, 90, 100, 200, 300, 400)
                                    out = Nz(out, 0) + arr_(Y)
                                Next i
                                GetGimatryya = out
                            End Function
                            
                            Public Function GetGimatryyaStr(str_ As Variant) As String
                                    
                                
                                Dim i As Long
                                Dim longht_ As Long
                                Dim Y As Long
                                Dim out As String
                                Dim str_to_out As Long
                                
                                longht_ = Len(Nz(str_, ""))
                                arr_ = Array("", "א", "ב", "ג", "ד", "ה", "ו", "ז", "ח", "ט", "י", "י", "כ", "ל", "מ", "נ", "ס", "ע", "פ", "צ", "ק", "ק", "ר", "ש", "ת")
                                
                                For i = 1 To longht_
                                    Select Case (longht_ + 1) - i
                                        Case 1:
                                            str_to_out = CLng(IIf(Nz(Mid(str_, i, 1), "") = "", 0, Mid(str_, i, 1)))
                                            out = Nz(out, 0) + arr_(str_to_out)
                                        Case 2:
                                            str_to_out = CLng(IIf(Nz(Mid(str_, i, 1), "") = "", 0, Mid(str_, i, 1)))
                                            out = Nz(out, 0) + arr_(str_to_out + 10)
                                        Case Else
                                            str_to_out = CLng(IIf(Nz(Mid(str_, i, 1), "") = "", 0, Mid(str_, i, 1)))
                                            out = Nz(out, 0) + arr_(str_to_out + 20)
                                    End Select
                                Next i
                                GetGimatryyaStr = out
                            End Function
                            

                            אפשר לנסות

                            Debug.Print GetGimatryya("רמח")
                            Debug.Print GetGimatryyaStr(499)
                            
                            הללוהוה תגובה 1 תגובה אחרונה
                            1
                            • OdedDvirO מנותק
                              OdedDvirO מנותק
                              OdedDvir
                              השיב לdovid ב נערך לאחרונה על ידי OdedDvir
                              #21

                              @dovid אמר באקסס - קוד VBA לחיפוש והחלפה:

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

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

                              תגובה 1 תגובה אחרונה
                              2
                              • הללוהוה מנותק
                                הללוהוה מנותק
                                הללוהו
                                השיב לavi rz ב נערך לאחרונה על ידי
                                #22
                                פוסט זה נמחק!
                                תגובה 1 תגובה אחרונה
                                0

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

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

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