כללי קובץ אקסס למס"ב

moishy

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

בהצלחה
 

קבצים מצורפים

  • זיכוי אקראי 2020.zip
    KB 172.7 · צפיות: 67

רייצ'ל PA

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

moishy

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

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

רייצ'ל PA

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

moishy

משתמש סופר מקצוען
מנוי פרימיום
mdlValidations

קוד:
Public Function fValidateBankAccount(lngBankNumber As Long, _
    lngBranch As Long, _
    lngAccount As Long) As Boolean
    fValidateBankAccount = False

    Dim lngRequiredAccountLength As Long
    Dim lngTotal As Long

    Dim strArrayAccount() As String
    Dim strArrayBranch() As String

    Dim strAccount As String
    Dim strBranch As String

    Select Case lngBankNumber
        Case 10, 13, 34
            lngRequiredAccountLength = 8
        Case 12, 4
            lngRequiredAccountLength = 6
        Case 11, 17
            lngRequiredAccountLength = 9
        Case 20
            lngRequiredAccountLength = 6
        Case 31, 52
            lngRequiredAccountLength = 9
        Case 9
            lngRequiredAccountLength = 9
        Case 22
            lngRequiredAccountLength = 9
        Case 46
            lngRequiredAccountLength = 9
        Case 14
            lngRequiredAccountLength = 9
    End Select

    If lngBankNumber <> 54 And lngBankNumber <> 23 Then
        strAccount = String(lngRequiredAccountLength - Len(CStr(lngAccount)), "0") & CStr(lngAccount)
    Else
        strAccount = CStr(lngAccount)
    End If
    '    strAccount = Right("0000000000" & CStr(lngAccount), lngRequiredAccountLength) ' This is an alternative to the previous line
    strAccount = StrConv(strAccount, vbUnicode)
    strArrayAccount = Split(strAccount, vbNullChar)

    If lngBankNumber = 20 And lngBranch > 400 Then    ' a`i' i^n~o^? a"n~?e'o' a'a'?º i^??c,e'-e`o^c,a*u' a^a~a*i` i^400
        strBranch = CStr(lngBranch - 400)    ' i`o^?e' a"c,e'u`a*a'e'i' e'u` i`a"o^c,e'u' 400
    End If

    If lngBankNumber = 12 Or lngBankNumber = 4 Then
        strBranch = lngBranch
    End If

    If Len(strBranch) < 3 Then
        strBranch = String(3 - Len(strBranch), "0") & strBranch    ' i^a*n~e'o' a`o^n~e'i' i`a"u`i`e'i' i`3 n~o^?a*u'
    End If
    strBranch = StrConv(strBranch, vbUnicode)
    strArrayBranch = Split(strBranch, vbNullChar)

    Select Case lngBankNumber
        Case 54
            ' i`a'?º e'?a*u`i`e'i' a`e'i" a`e'i^a*u', e"i` c,u`a'a*i" u'ºe'i"
            fValidateBankAccount = True
        Case 10, 13, 34
            If Right( _
                CLng(strArrayBranch(0)) * 10 + _
                CLng(strArrayBranch(1)) * 9 + _
                CLng(strArrayBranch(2)) * 8 + _
                CLng(strArrayAccount(0)) * 7 + _
                CLng(strArrayAccount(1)) * 6 + _
                CLng(strArrayAccount(2)) * 5 + _
                CLng(strArrayAccount(3)) * 4 + _
                CLng(strArrayAccount(4)) * 3 + _
                CLng(strArrayAccount(5)) * 2 + _
                Right(lngAccount, 2) _
                , 2) = _
                90 Or 72 Or 70 Or 60 Or 20 Then
                fValidateBankAccount = True
            End If
        Case 12, 4
            lngTotal = CLng(strArrayBranch(0)) * 9 + _
                CLng(strArrayBranch(1)) * 8 + _
                CLng(strArrayBranch(2)) * 7 + _
                CLng(strArrayAccount(0)) * 6 + _
                CLng(strArrayAccount(1)) * 5 + _
                CLng(strArrayAccount(2)) * 4 + _
                CLng(strArrayAccount(3)) * 3 + _
                CLng(strArrayAccount(4)) * 2 + _
                CLng(strArrayAccount(5)) * 1
            Select Case lngTotal Mod 11
                Case 0
                    fValidateBankAccount = True
                Case 2
                    Select Case strBranch
                        Case 120, 121, 123, 125, 130, 131, 132, 133, 140, 149, 384, 500, 510, 514, 515, 531, 353, 552, 569, 582, 590, 591, 601, 602, 607, _
                            608, 609, 610, 611, 613, 618, 620, 627, 628, 632, 634, 636, 638, 639, 640, 642, 644, 645, 646, 648, 650, 655, 657, 658, 661, _
                            664, 668, 681, 685, 686, 700, 705, 713, 714, 718, 721, 723, 726, 727, 736, 739, 747, 752, 766, 772, 773, 774, 783, 795, _
                            211, 600, 616, 690, 716, 761, _
                            170, 612, 615, 631
                            fValidateBankAccount = True
                    End Select
                Case 4
                    Select Case strBranch
                        Case 211, 600, 616, 690, 716, 761
                            fValidateBankAccount = True
                    End Select
                Case 6
                    Select Case strBranch
                        Case 170, 612, 615, 631
                            fValidateBankAccount = True
                    End Select
                Case Else
                    fValidateBankAccount = False
            End Select
        Case 11, 17
            lngTotal = CLng(strArrayAccount(0)) * 9 + _
                CLng(strArrayAccount(1)) * 8 + _
                CLng(strArrayAccount(2)) * 7 + _
                CLng(strArrayAccount(3)) * 6 + _
                CLng(strArrayAccount(4)) * 5 + _
                CLng(strArrayAccount(5)) * 4 + _
                CLng(strArrayAccount(6)) * 3 + _
                CLng(strArrayAccount(7)) * 2 + _
                CLng(strArrayAccount(8)) * 1
            Select Case lngTotal Mod 11
                Case 0, 2, 4
                    fValidateBankAccount = True
            End Select
        Case 20
            lngTotal = CLng(strArrayBranch(0)) * 9 + _
                CLng(strArrayBranch(1)) * 8 + _
                CLng(strArrayBranch(2)) * 7 + _
                CLng(strArrayAccount(0)) * 6 + _
                CLng(strArrayAccount(1)) * 5 + _
                CLng(strArrayAccount(2)) * 4 + _
                CLng(strArrayAccount(3)) * 3 + _
                CLng(strArrayAccount(4)) * 2 + _
                CLng(strArrayAccount(5)) * 1
            Select Case lngTotal Mod 11
                Case 0, 2, 4
                    fValidateBankAccount = True
            End Select
        Case 31, 52
            lngTotal = CLng(strArrayAccount(0)) * 9 + _
                CLng(strArrayAccount(1)) * 8 + _
                CLng(strArrayAccount(2)) * 7 + _
                CLng(strArrayAccount(3)) * 6 + _
                CLng(strArrayAccount(4)) * 5 + _
                CLng(strArrayAccount(5)) * 4 + _
                CLng(strArrayAccount(6)) * 3 + _
                CLng(strArrayAccount(7)) * 2 + _
                CLng(strArrayAccount(8)) * 1
            Select Case lngTotal Mod 11
                Case 0
                    fValidateBankAccount = True
                Case Else
                    lngTotal = CLng(strArrayAccount(3)) * 6 + _
                        CLng(strArrayAccount(4)) * 5 + _
                        CLng(strArrayAccount(5)) * 4 + _
                        CLng(strArrayAccount(6)) * 3 + _
                        CLng(strArrayAccount(7)) * 2 + _
                        CLng(strArrayAccount(8)) * 1
                    If lngTotal Mod 11 = 0 Then
                        fValidateBankAccount = True
                    End If
            End Select
        Case 9
            lngTotal = CLng(strArrayAccount(0)) * 9 + _
                CLng(strArrayAccount(1)) * 8 + _
                CLng(strArrayAccount(2)) * 7 + _
                CLng(strArrayAccount(3)) * 6 + _
                CLng(strArrayAccount(4)) * 5 + _
                CLng(strArrayAccount(5)) * 4 + _
                CLng(strArrayAccount(6)) * 3 + _
                CLng(strArrayAccount(7)) * 2 + _
                CLng(strArrayAccount(8)) * 1
            If lngTotal Mod 10 = 0 Then
                fValidateBankAccount = True
            End If
        Case 22
            lngTotal = CLng(strArrayAccount(0)) * 3 + _
                CLng(strArrayAccount(1)) * 2 + _
                CLng(strArrayAccount(2)) * 7 + _
                CLng(strArrayAccount(3)) * 6 + _
                CLng(strArrayAccount(4)) * 5 + _
                CLng(strArrayAccount(5)) * 4 + _
                CLng(strArrayAccount(6)) * 3 + _
                CLng(strArrayAccount(7)) * 2
            If 11 - (lngTotal Mod 11) = CLng(strArrayAccount(8)) Then
                fValidateBankAccount = True
            End If
        Case 46
            lngTotal = CLng(strArrayBranch(0)) * 9 + _
                CLng(strArrayBranch(1)) * 8 + _
                CLng(strArrayBranch(2)) * 7 + _
                CLng(strArrayAccount(0)) * 6 + _
                CLng(strArrayAccount(1)) * 5 + _
                CLng(strArrayAccount(2)) * 4 + _
                CLng(strArrayAccount(3)) * 3 + _
                CLng(strArrayAccount(4)) * 2 + _
                CLng(strArrayAccount(5)) * 1
            Select Case lngTotal Mod 11
                Case 0
                    fValidateBankAccount = True
                Case 2
                    Select Case strBranch
                        Case 154, 166, 178, 181, 183, 191, 192, 503, 505, 507, 515, 516, 527, 539
                            fValidateBankAccount = True
                    End Select
                Case Else
                    lngTotal = CLng(strArrayAccount(0)) * 9 + _
                        CLng(strArrayAccount(1)) * 8 + _
                        CLng(strArrayAccount(2)) * 7 + _
                        CLng(strArrayAccount(3)) * 6 + _
                        CLng(strArrayAccount(4)) * 5 + _
                        CLng(strArrayAccount(5)) * 4 + _
                        CLng(strArrayAccount(6)) * 3 + _
                        CLng(strArrayAccount(7)) * 2 + _
                        CLng(strArrayAccount(8)) * 1
                    If lngTotal Mod 11 = 0 Then
                        fValidateBankAccount = True
                    Else
                        lngTotal = CLng(strArrayAccount(3)) * 6 + _
                            CLng(strArrayAccount(4)) * 5 + _
                            CLng(strArrayAccount(5)) * 4 + _
                            CLng(strArrayAccount(6)) * 3 + _
                            CLng(strArrayAccount(7)) * 2 + _
                            CLng(strArrayAccount(8)) * 1
                        If lngTotal Mod 11 = 0 Then
                            fValidateBankAccount = True
                        End If
                    End If
            End Select
        Case 14
            lngTotal = CLng(strArrayBranch(0)) * 9 + _
                CLng(strArrayBranch(1)) * 8 + _
                CLng(strArrayBranch(2)) * 7 + _
                CLng(strArrayAccount(0)) * 6 + _
                CLng(strArrayAccount(1)) * 5 + _
                CLng(strArrayAccount(2)) * 4 + _
                CLng(strArrayAccount(3)) * 3 + _
                CLng(strArrayAccount(4)) * 2 + _
                CLng(strArrayAccount(5)) * 1
            Select Case lngTotal Mod 11
                Case 0
                    fValidateBankAccount = True
                Case 2
                    Select Case strBranch
                        Case 347, 361, 362, 363, 365, 385
                            fValidateBankAccount = True
                    End Select
                Case 4
                    Select Case strBranch
                        Case 361, 362, 363
                            fValidateBankAccount = True
                    End Select
                Case Else
                    lngTotal = CLng(strArrayAccount(0)) * 9 + _
                        CLng(strArrayAccount(1)) * 8 + _
                        CLng(strArrayAccount(2)) * 7 + _
                        CLng(strArrayAccount(3)) * 6 + _
                        CLng(strArrayAccount(4)) * 5 + _
                        CLng(strArrayAccount(5)) * 4 + _
                        CLng(strArrayAccount(6)) * 3 + _
                        CLng(strArrayAccount(7)) * 2 + _
                        CLng(strArrayAccount(8)) * 1
                    If lngTotal Mod 11 = 0 Then
                        fValidateBankAccount = True
                    Else
                        lngTotal = CLng(strArrayAccount(3)) * 6 + _
                            CLng(strArrayAccount(4)) * 5 + _
                            CLng(strArrayAccount(5)) * 4 + _
                            CLng(strArrayAccount(6)) * 3 + _
                            CLng(strArrayAccount(7)) * 2 + _
                            CLng(strArrayAccount(8)) * 1
                        If lngTotal Mod 11 = 0 Then
                            fValidateBankAccount = True
                        End If
                    End If
            End Select
        Case 23
            fValidateBankAccount = True
    End Select

End Function

'áãé÷ú îñôø úòåãú æäåú
'Public Function fValidateTeudatZehut(lngNum As Long) As Boolean
'    Dim ch As String, i As Integer, iSum As Integer
'    Dim iTemp As Integer
'
'    For i = 1 To 8
'        ch = Mid(lngNum, i, 1)
'        iTemp = Val(ch) * (((i - 1) Mod 2) + 1)
'        If iTemp > 9 Then iTemp = (iTemp Mod 10) + (iTemp \ 10)
'        iSum = iSum + iTemp
'    Next i
'
'    If ((10 - (iSum Mod 10)) Mod 10) = Val(Mid(lngNum, 9, 1)) Then
'        fValidateTeudatZehut = True
'    Else
'        fValidateTeudatZehut = False
'    End If
'End Function

Public Function fValidateTeudatZehut(ID As Variant) As Boolean
' http://halemo.net/info/idcard/index.html
    Dim i As Integer
    Dim sum As Integer
    Dim digit As Integer

    ID = Val(ID)
    While Len(ID) < 9
        ID = "0" & ID
    Wend

    sum = 0

    For i = 1 To 9
        digit = Strings.Mid$(ID, i, 1)
        If (i Mod 2) = 0 Then
            If digit >= 5 Then
                digit = 2 * digit - 9
            Else
                digit = digit * 2
            End If
        End If
        sum = sum + digit
    Next i

    fValidateTeudatZehut = (sum Mod 10) = 0

End Function
 
נערך לאחרונה ב:

רייצ'ל PA

משתמש חדש
הפקות ואירועים
1610266066298.png

מחזיר שגיאה
 

moishy

משתמש סופר מקצוען
מנוי פרימיום
תוקן
 

רייצ'ל PA

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

אולי מעניין אותך גם...

הפרק היומי

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


תהילים פרק קיט א'

א אַשְׁרֵי תְמִימֵי דָרֶךְ הַהֹלְכִים בְּתוֹרַת יְהוָה:ב אַשְׁרֵי נֹצְרֵי עֵדֹתָיו בְּכָל לֵב יִדְרְשׁוּהוּ:ג אַף לֹא פָעֲלוּ עַוְלָה בִּדְרָכָיו הָלָכוּ:ד אַתָּה צִוִּיתָה פִקֻּדֶיךָ לִשְׁמֹר מְאֹד:ה אַחֲלַי יִכֹּנוּ דְרָכָי לִשְׁמֹר חֻקֶּיךָ:ו אָז לֹא אֵבוֹשׁ בְּהַבִּיטִי אֶל כָּל מִצְוֹתֶיךָ:ז אוֹדְךָ בְּיֹשֶׁר לֵבָב בְּלָמְדִי מִשְׁפְּטֵי צִדְקֶךָ:ח אֶת חֻקֶּיךָ אֶשְׁמֹר אַל תַּעַזְבֵנִי עַד מְאֹד:
נקרא  31  פעמים

לוח מודעות

למעלה