קוד לבדיקת תקינות חשבון בנק מעודכן

אאאבבב

משתמש חדש
שלום,

אני מקבל את השגיאות הנ"ל:

1. סוג תנועה לא חוקי.
2. שדה סה"כ סכום תנועות אינו שווה לסכום מחושב.

כמו כן, בעת העלאת הקובץ לתכנת מס"ב טרם בדיקתו בסכום הקובץ רשום 0.00.

אודה על פתרון, תודה.
 

bmb

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

FullTime

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

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

eli7_k

משתמש חדש
יש אפשרות לשלוח את הקוד של הפונקציה של הבדיקה בכתבן או משהו כזה, כדי שאני אוכל להעתיק אותו?
פשוט אני לא מצליחה לפתוח אותו ואני ממש צריכה כזה קוד!!
תוןדה רבה
 

ari rm

משתמש פעיל
בס"ד

זה הקוד - נדמה לי שזה מספיק
קוד:
Option Explicit

Public Function fValidateBankAccount(lngBankNumber As Long, _
                                          lngBranch As Long, _
                                          lngAccount As Long) As Boolean

   On Error GoTo fValidateBankAccount_Error

    Dim lngRequiredAccountLength As Long
    Dim lngTotal As Long

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

    Dim strAccount As String
    Dim strBranch As String

    If lngBankNumber = 0 Or lngBranch = 0 Or lngAccount = 0 Then Exit Function

    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
        Case 54
            lngRequiredAccountLength = 9
    End Select

    strBranch = lngBranch
    strAccount = String(lngRequiredAccountLength - Len(CStr(lngAccount)), "0") & CStr(lngAccount)
    strAccount = StrConv(strAccount, vbUnicode)
    strArrayAccount = Split(strAccount, vbNullChar)

    If lngBankNumber = 20 And lngBranch > 400 Then     ' אם מספר הסניף בבנק מזרחי-טפחות גדול מ400
        strBranch = CStr(lngBranch - 400)              ' לפני החישובים יש להפחית 400
    Else                                               ' אם מספר הסניף בבנק מזרחי-טפחות לא גדול מ400
        strBranch = CStr(lngBranch)                    ' לפני החישובים אל תבצע כלום
    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    ' מוסיף אפסים להשלים ל3 ספרות
    End If

    strBranch = StrConv(strBranch, vbUnicode)
    strArrayBranch = Split(strBranch, vbNullChar)

    Select Case lngBankNumber
        Case 10, 13, 34
            lngTotal = 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)
            Select Case Right(lngTotal, 2)
                Case 90, 72, 70, 60, 20
                    fValidateBankAccount = True
                Case Else
                    fValidateBankAccount = False
            End Select
        Case 12
            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, 6
                    fValidateBankAccount = True
                Case Else
                    fValidateBankAccount = False
            End Select
        Case 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, 2
                    fValidateBankAccount = True
                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
                Case Else
                    fValidateBankAccount = False
            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, 6
                    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
                    Select Case lngTotal Mod 11
                        Case 0, 6
                            fValidateBankAccount = True
                        Case Else
                            fValidateBankAccount = False
                    End Select
            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
            Else
                fValidateBankAccount = False
            End If
        Case 54
            fValidateBankAccount = True
        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
            Else
                fValidateBankAccount = False
            End If
        Case 46
            lngTotal = CLng(strArrayBranch(0)) * 9 + _
                       CLng(strArrayBranch(1)) * 8 + _
                       CLng(strArrayBranch(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 2
                    Select Case strBranch
                        Case 154, 166, 178, 181, 183, 191, 192, 503, 505, 507, 515, 516, 527, 539
                            fValidateBankAccount = True
                        Case Else
                            fValidateBankAccount = False
                    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
                        Else
                            fValidateBankAccount = False
                        End If
                    End If
            End Select
        Case 14
            lngTotal = CLng(strArrayBranch(0)) * 9 + _
                       CLng(strArrayBranch(1)) * 8 + _
                       CLng(strArrayBranch(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 2
                    Select Case strBranch
                        Case 347, 361, 362, 363, 365, 385
                            fValidateBankAccount = True
                        Case Else
                            fValidateBankAccount = False
                    End Select
                Case 4
                    Select Case strBranch
                        Case 361, 362, 363
                            fValidateBankAccount = True
                        Case Else
                            fValidateBankAccount = False
                    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
    End Select


   On Error GoTo 0
   Exit Function

fValidateBankAccount_Error:
    fValidateBankAccount = False
    MsgBox "Error " & Err.Number & " (" & Err.Description & ") in procedure fValidateBankAccount of Function mdlValidations"

End Function

Public Function fValidateTeudatZehut(ID As Variant) As Boolean


   On Error GoTo fValidateTeudatZehut_Error

    Dim lngCounter As Long
    Dim lngSum As Long
    Dim lngDigit As Long

    If Len(ID) = 0 Then fValidateTeudatZehut = False: Exit Function

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

    lngSum = 0

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

    fValidateTeudatZehut = (lngSum Mod 10) = 0


   On Error GoTo 0
   Exit Function

fValidateTeudatZehut_Error:

    MsgBox "Error " & Err.Number & " (" & Err.Description & ") in procedure fValidateTeudatZehut of Function mdlValidations"

End Function
שם הפונקציה: fValidateBankAccount
ארגומנטים:
1. קוד בנק
2. מס' סניף
3. מס' חשבון
 

שטארק

משתמש פעיל
מוזיקה ונגינה
בס"ד

זה הקוד - נדמה לי שזה מספיק
קוד:
Option Explicit

Public Function fValidateBankAccount(lngBankNumber As Long, _
                                          lngBranch As Long, _
                                          lngAccount As Long) As Boolean

   On Error GoTo fValidateBankAccount_Error

    Dim lngRequiredAccountLength As Long
    Dim lngTotal As Long

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

    Dim strAccount As String
    Dim strBranch As String

    If lngBankNumber = 0 Or lngBranch = 0 Or lngAccount = 0 Then Exit Function

    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
        Case 54
            lngRequiredAccountLength = 9
    End Select

    strBranch = lngBranch
    strAccount = String(lngRequiredAccountLength - Len(CStr(lngAccount)), "0") & CStr(lngAccount)
    strAccount = StrConv(strAccount, vbUnicode)
    strArrayAccount = Split(strAccount, vbNullChar)

    If lngBankNumber = 20 And lngBranch > 400 Then     ' אם מספר הסניף בבנק מזרחי-טפחות גדול מ400
        strBranch = CStr(lngBranch - 400)              ' לפני החישובים יש להפחית 400
    Else                                               ' אם מספר הסניף בבנק מזרחי-טפחות לא גדול מ400
        strBranch = CStr(lngBranch)                    ' לפני החישובים אל תבצע כלום
    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    ' מוסיף אפסים להשלים ל3 ספרות
    End If

    strBranch = StrConv(strBranch, vbUnicode)
    strArrayBranch = Split(strBranch, vbNullChar)

    Select Case lngBankNumber
        Case 10, 13, 34
            lngTotal = 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)
            Select Case Right(lngTotal, 2)
                Case 90, 72, 70, 60, 20
                    fValidateBankAccount = True
                Case Else
                    fValidateBankAccount = False
            End Select
        Case 12
            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, 6
                    fValidateBankAccount = True
                Case Else
                    fValidateBankAccount = False
            End Select
        Case 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, 2
                    fValidateBankAccount = True
                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
                Case Else
                    fValidateBankAccount = False
            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, 6
                    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
                    Select Case lngTotal Mod 11
                        Case 0, 6
                            fValidateBankAccount = True
                        Case Else
                            fValidateBankAccount = False
                    End Select
            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
            Else
                fValidateBankAccount = False
            End If
        Case 54
            fValidateBankAccount = True
        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
            Else
                fValidateBankAccount = False
            End If
        Case 46
            lngTotal = CLng(strArrayBranch(0)) * 9 + _
                       CLng(strArrayBranch(1)) * 8 + _
                       CLng(strArrayBranch(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 2
                    Select Case strBranch
                        Case 154, 166, 178, 181, 183, 191, 192, 503, 505, 507, 515, 516, 527, 539
                            fValidateBankAccount = True
                        Case Else
                            fValidateBankAccount = False
                    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
                        Else
                            fValidateBankAccount = False
                        End If
                    End If
            End Select
        Case 14
            lngTotal = CLng(strArrayBranch(0)) * 9 + _
                       CLng(strArrayBranch(1)) * 8 + _
                       CLng(strArrayBranch(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 2
                    Select Case strBranch
                        Case 347, 361, 362, 363, 365, 385
                            fValidateBankAccount = True
                        Case Else
                            fValidateBankAccount = False
                    End Select
                Case 4
                    Select Case strBranch
                        Case 361, 362, 363
                            fValidateBankAccount = True
                        Case Else
                            fValidateBankAccount = False
                    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
    End Select


   On Error GoTo 0
   Exit Function

fValidateBankAccount_Error:
    fValidateBankAccount = False
    MsgBox "Error " & Err.Number & " (" & Err.Description & ") in procedure fValidateBankAccount of Function mdlValidations"

End Function

Public Function fValidateTeudatZehut(ID As Variant) As Boolean


   On Error GoTo fValidateTeudatZehut_Error

    Dim lngCounter As Long
    Dim lngSum As Long
    Dim lngDigit As Long

    If Len(ID) = 0 Then fValidateTeudatZehut = False: Exit Function

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

    lngSum = 0

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

    fValidateTeudatZehut = (lngSum Mod 10) = 0


   On Error GoTo 0
   Exit Function

fValidateTeudatZehut_Error:

    MsgBox "Error " & Err.Number & " (" & Err.Description & ") in procedure fValidateTeudatZehut of Function mdlValidations"

End Function
שם הפונקציה: fValidateBankAccount
ארגומנטים:
1. קוד בנק
2. מס' סניף
3. מס' חשבון
תודה רבה
אם תואיל בטובך לכתוב על איזה שדות אתה מתבסס בפונקצייה, כלומר, באיזה שדות מופיעים קוד הבנק והסניף וכו'.
וכן האם זה חלק מהפונקצייה?
 

שטארק

משתמש פעיל
מוזיקה ונגינה
ממש זה שאלתי!

האם בטופס אצלך (או בשאילתה....), השדות נקראים כך?
קוד בנק,סניף...

ואני מבין מתשובתך שכן.

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

בתודה
 

ari rm

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

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

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

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

שטארק

משתמש פעיל
מוזיקה ונגינה
תודה רבה
על תשובתך הברורה, הבהירה, והמהירה.
 

eli7_k

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

eli7_k

משתמש חדש
אני צריכה מישהו מקצוען לעזרה דחופה בנושא,
אשמח לשלם
0583250365
 

אייקוד

משתמש פעיל
אפשר להשתמש עם LongLong למספרים גדולים יותר
ומאקסס 2016 יש אפשרות לאחסן גם בטבלאות סוג נתונים "מספר גדול"
 

אייקוד

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

ari rm

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

וכמובן זו נראית בעיה חדשה במשתנה Long כי בעיקרון זה משתנה שמכיל מספר ארוך.


לכידה.PNG
 

אייקוד

משתמש פעיל
ה"long" של אקסס (VBA) שונה משאר השפות
חפש על זה בגוגל

אגב אפשר להשתמש גם עם Variant
 

eli7_k

משתמש חדש
השתמשתי בDOUBLE והוא הכיל לי את המספר, הבעיה היא שהוא נופל בשורה של הקצאת הסטרינג, כי מספר הספרות הנדרשות (lngrequired...) קטן ממספר הספרות של מספר החשבון,
השאלה היא אם זה פוגע בתקינות של הפונקציה אם אני מגדילה את המספר?
בבנק 13 - איגוד קורות הבעיות.
כמו כן, האם ישנו קוד לבדיקת בנק 26?
 

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

הפרק היומי

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


תהילים פרק קמו

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

ספירת העומר

לוח מודעות

למעלה