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]

Responder a