Hace tiempo desarrolle varias funciones en VB de acces para poder comparbar
una cuenta bancaria y convertir un importe en texto.
A continuación las pongo, aun no las he las he podido pasar a Open Basic.
Pero las dejo por si alguien le interesa. y quiere ir haciendo camino.
Public Function CuentaContable(cuenta As String)
' Significados de los valores devueltos
' 0= digito de control entidad y sucursal y digito de control de cuenta
bancaria son correctos
' 1= digito de control entidad es incorrecto
' 2= digito de control de cuenta bancaria es incorrecto
' 2= digito de control entidad y sucursal y digito de control de cuenta
bancaria son incorrectos
' defino varibles e inicializo
Dim suma As Integer
Dim DC As Integer
Debug.Print "cuenta="; cuenta
DC = 0
suma = 0
CuentaContable = 0
' Empezamos comprobación de digito de control de entidad y sucursal
' Suma los digitos por los factores
suma = Mid(cuenta, 9, 1) * 6
suma = Mid(cuenta, 8, 1) * 3 + suma
suma = Mid(cuenta, 7, 1) * 7 + suma
suma = Mid(cuenta, 6, 1) * 9 + suma
suma = Mid(cuenta, 4, 1) * 10 + suma
suma = Mid(cuenta, 3, 1) * 5 + suma
suma = Mid(cuenta, 2, 1) * 8 + suma
suma = Mid(cuenta, 1, 1) * 4 + suma
' Obtenemos el digito de control de entidad y sucursal
DC = 11 - ((suma - (Int(suma / 11) * 11)))
If DC = 11 Then DC = 0
If DC = 10 Then DC = 1
Debug.Print "dc EyS=" & DC
' Comprobamos si coincide el digito de control de entidad y sucursal
If Mid(Format(cuenta, "#"), 11, 1) <> DC Then CuentaContable = 1
Debug.Print "resultado =" & CuentaContable
' Continuamos comprobando el digito de control de cuenta bancaria
' Suma los digitos por los factores
suma = Mid(cuenta, 23, 1) * 6
suma = Mid(cuenta, 22, 1) * 3 + suma
suma = Mid(cuenta, 21, 1) * 7 + suma
suma = Mid(cuenta, 20, 1) * 9 + suma
suma = Mid(cuenta, 19, 1) * 10 + suma
suma = Mid(cuenta, 18, 1) * 5 + suma
suma = Mid(cuenta, 17, 1) * 8 + suma
suma = Mid(cuenta, 16, 1) * 4 + suma
suma = Mid(cuenta, 15, 1) * 2 + suma
suma = Mid(cuenta, 14, 1) * 1 + suma
' Obtenemos el digito de control de cuenta bancaria
DC = 11 - ((suma - (Int(suma / 11) * 11)))
If DC = 11 Then DC = 0
If DC = 10 Then DC = 1
' Comprobamos si coincide el digito de control de cuenta bancaria
If Mid(Format(cuenta, "#"), 12, 1) <> DC Then CuentaContable = 2 +
CuentaContable
' Comprobamos si coincide el digito de control de cuenta bancaria
If CuentaContable = 1 Then MsgBox "El Dígito de control entidad y
sucursal es erroneo", vbCritical, ""
If CuentaContable = 2 Then MsgBox "El Dígito de control de la cuenta
bancaria es erroneo", vbCritical, ""
If CuentaContable = 3 Then MsgBox "El Dígito de control entidad y
sucursal y el de la cuenta bancaria son erroneos", vbCritical, ""
End Function
Public Function texto_importe(importe)
Dim Deci As Long
Dim En As Long
Dim largo As Integer
Dim prueba As Double
En = (Fix(importe))
Deci = (Round(((importe - En) * 100)))
texto_importe = texto_numero(En) & " EUROS"
If Deci > 0 Then
texto_importe = texto_importe & " CON " & texto_numero(Deci) & "
CENTIMOS"
End If
End Function
Public Function texto_numero_dos(numero)
Select Case numero
Case Is < 16:
texto_numero_dos = DFirst("texto", "texto_numero", "numero=" &
numero)
Case 16 To 19:
texto_numero_dos = DFirst("texto", "texto_numero", "numero=16") &
"I" & DFirst("texto", "texto_numero", "numero=" & Right(numero, 1))
Case 20:
texto_numero_dos = DFirst("texto", "texto_numero", "numero=" &
numero)
Case 21 To 29:
texto_numero_dos = DFirst("texto", "texto_numero", "numero=21") &
"I" & DFirst("texto", "texto_numero", "numero=" & Right(numero, 1))
Case 30 To 99:
If Right(numero, 1) = 0 Then
texto_numero_dos = DFirst("texto", "texto_numero", "numero=" &
numero)
Else
texto_numero_dos = DFirst("texto", "texto_numero", "numero=" &
Mid(numero, 1, 1) & "0") & " Y " & DFirst("texto", "texto_numero", "numero="
& Right(numero, 1))
End If
End Select
End Function
Public Function texto_numero(numero)
Dim largo As Integer
Dim posicion As Integer
Dim valor As Integer
largo = Len(numero)
For posicion = 1 To largo Step 1
Select Case posicion
Case 1
If (largo - posicion) = 0 Then
valor = CInt(Mid(numero, 1, 1))
Else
valor = CInt(Mid(numero, largo - posicion, 2))
End If
texto_numero = texto_numero_dos(valor)
posicion = posicion + 1
Case 3
valor = CInt(Mid(numero, largo - posicion + 1, 1))
If texto_numero = "cero" Then
Select Case valor
Case 0:
texto_numero = "CERO"
Case 1:
texto_numero = DFirst("texto", "texto_numero", "numero=100")
Case 5:
texto_numero = DFirst("texto", "texto_numero", "numero=500") & "TOS
"
Case 7:
texto_numero = DFirst("texto", "texto_numero", "numero=700") & "TOS
"
Case Else
texto_numero = texto_numero_dos(valor) & DFirst("texto",
"texto_numero", "numero=100") & "TOS "
End Select
Else
Select Case valor
Case 0:
texto_numero = texto_numero
Case 1:
texto_numero = DFirst("texto", "texto_numero", "numero=100") & "TO " &
texto_numero
Case 5:
texto_numero = DFirst("texto", "texto_numero", "numero=500") & "TOS " &
texto_numero
Case 9:
texto_numero = DFirst("texto", "texto_numero", "numero=900") & "TOS " &
texto_numero
Case Else
texto_numero = texto_numero_dos(valor) & DFirst("texto", "texto_numero",
"numero=100") & "TOS " & texto_numero
End Select
End If
Case 4
If (largo - posicion) = 0 Then
valor = CInt(Mid(numero, 1, 1))
Else
valor = CInt(Mid(numero, largo - posicion, 2))
End If
posicion = posicion + 1
If texto_numero = "CERO" Then
Select Case valor
Case 0:
texto_numero = "CERO"
Case 1:
texto_numero = DFirst("texto", "texto_numero", "numero=1000")
Case Else
texto_numero = texto_numero_dos(valor) & " " & DFirst("texto",
"texto_numero", "numero=1000")
End Select
Else
Select Case valor
Case 0:
texto_numero = texto_numero
Case 1:
texto_numero = DFirst("texto", "texto_numero", "numero=1000") & " " &
texto_numero
Case Else
texto_numero = texto_numero_dos(valor) & " " & DFirst("texto",
"texto_numero", "numero=1000") & " " & texto_numero
End Select
End If
Case 6
valor = CInt(Mid(numero, largo - posicion + 1, 1))
If texto_numero = "CERO" Then
Select Case valor
Case 0:
texto_numero = "CERO"
Case 1:
texto_numero = DFirst("texto", "texto_numero", "numero=100") & " " &
DFirst("texto", "texto_numero", "numero=1000")
Case 5:
texto_numero = DFirst("texto", "texto_numero", "numero=500") & "TOS
" & " " & DFirst("texto", "texto_numero", "numero=1000")
Case Else
texto_numero = texto_numero_dos(valor) & DFirst("texto",
"texto_numero", "numero=100") & "TOS " & " " & DFirst("texto",
"texto_numero", "numero=1000")
End Select
Else
Select Case valor
Case 0:
texto_numero = texto_numero
Case 1:
texto_numero = DFirst("texto", "texto_numero", "numero=100") & "TO " &
texto_numero
Case 5:
texto_numero = DFirst("texto", "texto_numero", "numero=500") & "TOS " &
texto_numero
Case 9:
texto_numero = DFirst("texto", "texto_numero", "numero=900") & "TOS " &
texto_numero
Case Else
texto_numero = texto_numero_dos(valor) & DFirst("texto", "texto_numero",
"numero=100") & "TOS " & texto_numero
End Select
End If
Case 7
If (largo - posicion) = 0 Then
valor = CInt(Mid(numero, 1, 1))
Else
valor = CInt(Mid(numero, largo - posicion, 3))
End If
posicion = largo
If texto_numero = "CERO" Then
Select Case valor
Case 1:
texto_numero = "UN " & DFirst("texto", "texto_numero",
"numero=1000000")
Case Else
texto_numero = texto_numero(valor) & " " & DFirst("texto",
"texto_numero", "numero=1000000") & "ES"
End Select
Else
Select Case valor
Case 1:
texto_numero = "UN " & DFirst("texto", "texto_numero", "numero=1000000")
& " " & texto_numero
Case Else
texto_numero = texto_numero(valor) & " " & DFirst("texto",
"texto_numero", "numero=1000000") & "es " & texto_numero
End Select
A continuacion pongo el contenido de la tabla.
Nombre de la tabla "texto_numero" numero texto
0 CERO
1 UNO
2 DOS
3 TRES
4 CUATRO
5 CINCO
6 SEIS
7 SIETE
8 OCHO
9 NUEVE
10 DIEZ
11 ONCE
12 DOCE
13 TRECE
14 CATORCE
15 QUINCE
16 DIEC
20 VEINTE
21 VEINT
30 TREINTA
40 CUARENTA
50 CINCUENTA
60 SESENTA
70 SETENTA
80 OCHENTA
90 NOVENTA
100 CIEN
500 QUINIEN
700 SETECIEN
900 NOVECIEN
1000 MIL
1000000 MILLON
Espero que os sea de utilidad.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]