אקסס - קוד VBA לחיפוש והחלפה
-
@איש-פלוני ראשית כל אתה צריך להצליח לתשאל את הkatalogM באופן שמחלץ את המספר:
SELECT Mid([kategHeara],1,InStr([kategHeara],".")-1) as מניפולציה, kategHeara FROM katalogM
תראה אם זה מוציא לך טוב את המספר.
שלב שני זה לעשות מה ש@OdedDvir הציע. -
@איש-פלוני תואיל להדביק פה את לשון השאילתה אחרי השינויים שעשית.
-
@איש-פלוני
או שתחלץ את המספר עם הפונקציה הזאת. (בהנחה שאין עוד מספרים בשדה)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
-
OdedDvirהשיב לאיש פלוני ב 10 במרץ 2021, 11:47 נערך לאחרונה על ידי OdedDvir 3 באוק׳ 2021, 14:07
@איש-פלוני חסר פרמטר אחד בקוד של @dovid , צ"ל:
SELECT Mid([kategHeara],1,InStr(1,[kategHeara],".")-1) as מניפולציה, kategHeara FROM katalogM
(עריכה: מה שכתבתי לעיל שגוי, עיין בהערת @dovid לקמן)
-
@dovid אמר באקסס - קוד VBA לחיפוש והחלפה:
זה אופציונלי.
נכון, אבל צריך לכל הפחות להשמיט ולהשאיר מקום ריק, כך:
SELECT Mid([kategHeara],1,InStr(,[kategHeara],".")-1) as מניפולציה, kategHeara FROM katalogM
-
בס"ד
אולי יעזור לך:
הקוד להלן הוא ממיר מחזיר גימטריה ממספר לאותיות - ומאותיות למספר, זה נכון עד למספר 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)
-
OdedDvirהשיב לdovid ב 10 במרץ 2021, 14:04 נערך לאחרונה על ידי OdedDvir 3 באוק׳ 2021, 14:13
@dovid אמר באקסס - קוד VBA לחיפוש והחלפה:
לא צריך, אופציונלי זה אומר שניתן פשוט לדלג עליו לגמרי.
הוא מזהה את הארגומנט נכון לפי מספר הארגומנטים (2).וואו, קודם כל אני מתפעל כי זה חידוש בשבילי!
אני מניח שזה מתפרש נכון בגלל ששני הפרמטרים (השני והשלישי) הם נדרשים.
אבל זה עדיין מרגיש לי כאילו יש כאן מקום לדו משמעות (Ambiguity). אני מנסה למצוא איזשהו תרחיש שבו הקומפיילר לא יפרש נכון את הארגומנטים לפי המספר שלהם.
אולי אפתח פוסט חדש בשביל זה...