Funció en Access que calcula el dígit de control d’un Compte Corrent Bancari
Per saber què és i perquè serveix el dígit de control dels Comptes Corrents Bancaris, així com la forma de calcular-lo, pots llegir l'article següent: Què és i perquè serveix el dígit de control dels Comptes Corrents Bancaris, així com la forma de calcular-lo. Ara centrem-nos en el tema que ens ocupa.
Per crear en Access el mecanisme que valida el compte corrent bancari a partir del dígit de control en una funció hem de seguir els següents passos:
1. Hem de crear o tenir creat un formulari que requereixi entrar dades bancàries
En el meu cas tinc creat un formulari de Client
en el que podem observar que hi ha tots els camps necessaris per introduir el seu compte corrent bancari, que s’utilitzarà per domiciliar els rebuts de les seves vendes. En una aplicació informàtica empresarial les dades bancàries poden ser requerides en diferents moments:

- Quan entrem les dades d’un client
- Quan entrem les dades d’un proveïdor
- Quan entrem les dades d’una comanda, albarà, factura o rebut
- ......
2. Crear en un mòdul la funció que calcula el dígit de control
En el nostre cas hem creat un mòdul anomenat basCalcularDigitControl
que conté el codi de la funció fxDigitControl
, que després cridarem des del formulari de Client, un cop introduït el Nº de compte corrent bancari, per comparar el dígit de control informat amb el calculat per la funció.


Hem de tenir present que les funcions es criden pel nom que li haguem donat en el codi, en el nostre cas fxDigitControl, i no pel nom que li haguem posat al mòdul, basCalcularDigitControl.
Function fxDigitControl(Entitat As Integer, Oficina As Integer, Compte As Double) As String
Dim strEntitat As String
Dim strOficina As String
Dim strCompte As String
Dim PreCalcul As Integer
strEntitat = Format(Entitat, "0000")
strOficina = Format(Oficina, "0000")
strCompte = Format(Compte, "0000000000")
PreCalcul = 0
PreCalcul = PreCalcul + Mid(strEntitat, 1, 1) * 4
PreCalcul = PreCalcul + Mid(strEntitat, 2, 1) * 8
PreCalcul = PreCalcul + Mid(strEntitat, 3, 1) * 5
PreCalcul = PreCalcul + Mid(strEntitat, 4, 1) * 10
PreCalcul = PreCalcul + Mid(strOficina, 1, 1) * 9
PreCalcul = PreCalcul + Mid(strOficina, 2, 1) * 7
PreCalcul = PreCalcul + Mid(strOficina, 3, 1) * 3
PreCalcul = PreCalcul + Mid(strOficina, 4, 1) * 6
PreCalcul = 11 - (PreCalcul Mod 11)
If PreCalcul = 11 Then
fxDigitControl = "0"
ElseIf PreCalcul = 10 Then
fxDigitControl = "1"
Else
fxDigitControl = Format(PreCalcul, "0")
End If
PreCalcul = 0
PreCalcul = PreCalcul + Mid(strCompte, 1, 1) * 1
PreCalcul = PreCalcul + Mid(strCompte, 2, 1) * 2
PreCalcul = PreCalcul + Mid(strCompte, 3, 1) * 4
PreCalcul = PreCalcul + Mid(strCompte, 4, 1) * 8
PreCalcul = PreCalcul + Mid(strCompte, 5, 1) * 5
PreCalcul = PreCalcul + Mid(strCompte, 6, 1) * 10
PreCalcul = PreCalcul + Mid(strCompte, 7, 1) * 9
PreCalcul = PreCalcul + Mid(strCompte, 8, 1) * 7
PreCalcul = PreCalcul + Mid(strCompte, 9, 1) * 3
PreCalcul = PreCalcul + Mid(strCompte, 10, 1) * 6
PreCalcul = 11 - (PreCalcul Mod 11)
If PreCalcul = 11 Then
fxDigitControl = fxDigitControl + "0"
ElseIf PreCalcul = 10 Then
fxDigitControl = fxDigitControl + "1"
Else
fxDigitControl = fxDigitControl + Format(PreCalcul, "0")
End If
End Function
Dim strOficina As String
Dim strCompte As String
Dim PreCalcul As Integer
strEntitat = Format(Entitat, "0000")
strOficina = Format(Oficina, "0000")
strCompte = Format(Compte, "0000000000")
PreCalcul = 0
PreCalcul = PreCalcul + Mid(strEntitat, 1, 1) * 4
PreCalcul = PreCalcul + Mid(strEntitat, 2, 1) * 8
PreCalcul = PreCalcul + Mid(strEntitat, 3, 1) * 5
PreCalcul = PreCalcul + Mid(strEntitat, 4, 1) * 10
PreCalcul = PreCalcul + Mid(strOficina, 1, 1) * 9
PreCalcul = PreCalcul + Mid(strOficina, 2, 1) * 7
PreCalcul = PreCalcul + Mid(strOficina, 3, 1) * 3
PreCalcul = PreCalcul + Mid(strOficina, 4, 1) * 6
PreCalcul = 11 - (PreCalcul Mod 11)
If PreCalcul = 11 Then
fxDigitControl = "0"
ElseIf PreCalcul = 10 Then
fxDigitControl = "1"
Else
fxDigitControl = Format(PreCalcul, "0")
End If
PreCalcul = 0
PreCalcul = PreCalcul + Mid(strCompte, 1, 1) * 1
PreCalcul = PreCalcul + Mid(strCompte, 2, 1) * 2
PreCalcul = PreCalcul + Mid(strCompte, 3, 1) * 4
PreCalcul = PreCalcul + Mid(strCompte, 4, 1) * 8
PreCalcul = PreCalcul + Mid(strCompte, 5, 1) * 5
PreCalcul = PreCalcul + Mid(strCompte, 6, 1) * 10
PreCalcul = PreCalcul + Mid(strCompte, 7, 1) * 9
PreCalcul = PreCalcul + Mid(strCompte, 8, 1) * 7
PreCalcul = PreCalcul + Mid(strCompte, 9, 1) * 3
PreCalcul = PreCalcul + Mid(strCompte, 10, 1) * 6
PreCalcul = 11 - (PreCalcul Mod 11)
If PreCalcul = 11 Then
fxDigitControl = fxDigitControl + "0"
ElseIf PreCalcul = 10 Then
fxDigitControl = fxDigitControl + "1"
Else
fxDigitControl = fxDigitControl + Format(PreCalcul, "0")
End If
End Function
3. Passar els paràmetres a la funció des del formulari en el que estem introduint les dades bancàries
Ara només queda passar els paràmetres a la funció, i ho farem introduint el codi següent
en l’event Antes de actualizar del camp CUECLI, que en el nostre cas representa els últims 10 dígits del compte corrent. Utilitzem aquest camp per introduir-hi el codi ja que considerem que la introducció del compte corrent bancari l’acabarem per aquí.
Per introduir el codi
fem Vista Diseño>Hoja de Propiedades>Eventos>Antes de actualizar
i premem l’icona amb els tres puntets per obri l’editor de Visual Basic.


Un cop obert l’editor introduïm el següent codi
, que és el que ens permet comparar el dígit de control introduït en el camp Me.DCOCLI
del formulari de client, amb el calculat per la funció a partir de la informació continguda en els camps Me.ENTCLI, Me.OFICLI , Me.CUECLI
també del formulari de client, i que representen els paràmetres d’aquesta.



Ara només queda provar que tot funcioni. En la imatge següent podem observar que després d’introduir els 10 últims dígits del compte corrent, en el nostre cas el camp Compte Corrent
, ens apareix un missatge d’Atenció que ens informa que el Compte Corrent és incorrecte, ja que amb les dades introduïdes, els 20 dígits, el dígit de control hauria de ser 81.
Aquest error es pot deure a dos motius:
- Perquè haguem escrit, o ens hagin facilitat malament, alguna de les xifres del compte corrent, exclòs el dígit de control
- Perquè haguem escrit, o ens hagin facilitat malament, el propi dígit de control
En el nostre cas l’error es deu a que hem escrit malament l’ultima xifra del compte corrent ja que aquesta ha de ser un 0 enlloc d’un 3. Si rectifiquem i premem Enter no ens dona cap error ja que la validació ha estat correcte.
Nota: les funcions es fan servir en tots els llenguatges de programació informàtica moderns. El codi de la nostra funció és vàlid per a Visual Basic para aplicaciones i Visual Basic; representa un dels molts mètodes que ens permet calcular el dígit de control. Cada programador pot pensar, estructurar i fa servir les instruccions del llenguatge de manera diferent per arribar al mateix objectiu.
En l’article següent podeu trobar informació sobre el codi per calcular el dígit de control en els llenguatges C++ Builder, PHP y Python.
Comentaris
Publica un comentari a l'entrada