Comprobando cuenta bancaria. No funciona.

En una base de datos que me estáis haciendo vosotros, dicho sea de paso, he incluido unos códigos que encontré en otra base de datos, para controlar que el campo cuenta de un banco se ha puesto correctamente.

Quien hizo la otra BD los tenía incluido un módulo de FUNCIONES DE UTILIDAD, y el otro en el formulario donde se pedía el dato.

Yo he copiado ambos y los he adecuado, creo yo, a mi BD, pero me da error.

No veo aquí la posibilidad de incluir archivos, y pegar los dos documentos que tengo, con el código de Funciones de utilidad y el del FrAltas, se me hace que sería muy largo y tal vez no me de espacio este formulario.

¿Cómo hago para enviaros esos archivos?.

Respuesta
1

Si quieres ver un ejemplo que funciona y mucho más sencillo de implementar que el código que estás usando, échale un ojo a este ejemplo que hice hace unos años, pero que yo lo sigo usando a día de hoy en mi trabajo y sin problemas:

http://neckkito.xyz/nck/index.php/ejemplos/18-codigo/174-comprobar-cif-s-y-numeros-de-cuenta 

Cualquier cosa, me comentas.

Muchas gracias, Sveinbjorn.

Lo que yo pretendo no es comprobar si los que me envían está bien o no. Lo que pretendo es que, por si me equivoco yo al teclear  los datos, cuando termine de teclear el número de la cuenta, me diga si está bien o no.

En la base de datos que estoy modificando, he dejado el formulario de altas que tenían ellos, y les funcionaba. No se por que no me funciona en mi formulario.

Y el código del ejemplo también lo hace, si tu escribes un ccc o un iban mal, te lo corrige alutomaticamente (de hecho es así como yo lo uso)

Obviamente lo que te corrige es el DC del número de cuenta o los dígitos 3 y 4 del IBAN español (los que siguen al ES)

Yo lo uso así:

Tengo un cuadro de texto (vinculado a la tabla, aunque da lo mismo si es independiente) que se llama IBAN. En ese cuadro de texto almaceno el IBAN de nuestros acreedores y lo relleno manualmente. En el evento "después de actualizar", le digo que me valide (y corrija, de ser necesario) lo que he escrito, con el código:

Private Sub IBAN_AfterUpdate()
If Nz(Me.IBAN, "") = "" Then Exit Sub
Select Case Len(IBAN)
  Case 20
    Dim miCuenta As String
    miCuenta = fncControlCC(Me.IBAN)
    Me.IBAN = fncIBAN(miCuenta)
  Case 24
    Me.IBAN = fncIBAN(Me.IBAN)
  Case Else
    Call miMsg("Se ha de escribir un CCC (20 dígitos) o un IBAN (24 dígitos).", 1)
End Select
End Sub

Lo que hace el código es que si escribo un CCC (20 dígitos), me lo valida y me pone automáticamente el IBAn en el mismo cuadro de texto. Si pongo un IBAN español (24 dígitos), me lo valida y corrige en su caso. Si pongo otra cadena, me avisa del error.

Y te digo que funciona perfectamente, porque llevo con él en mi BD más de tres años.

No lo dudo Sveinbjorn.

El caso es que yo cogí una base de datos que tenían los anteriores a mi y su estructura lleva los números de la Cta/en 5 campos:  IBAN, ENTIDAD, OFICINA, DC, CUENTA.

Y, si doy un alta en el formulario de altas suyo, funciona. Yo lo he copiado todo en el formulario mío y no funciona. Me da el error que has visto antes.

La solución tal vez sería tomar tu ejemplo y ya está, pero tendría que modificar 1.300 registros que ya están grabados.

Eso sin contar con mi inoperancia en Visual Basic, y que empezara tu ejemplo a darme errores que no sabría resolver.

Muchas gracias de todas formas. Procuraremos entrar los datos sin equivocarnos.

Un saludo

Adaptar el código a tu caso particular es muy sencillo:

En la función ControlCC solo has de modificar la penúltima línea para que te quede así:

ControlCC =+ DC

Y en la función IBAN, la linea anterior al último End If para que te quede:

IBAN = "ES" & Format(temp, "00") 

En ambos casos, tendrás que pasarle los valores de los cuadros de texto encadenados:

ControlCCC(Me.Entidad & Me.Oficina & Me.DC. & Me.Cuenta)

IBAN(Me.IBAN & Me.Entidad & Me.Oficina & Me.DC. & Me.Cuenta)

Por otro lado, modificar los 1300 registros no te lleva más de dos minutos:

1º/ Creas un nuevo campo en la tabla, por ejemplo IBAN2 (luego ya lo cambiarás)

2º/ Creas una consulta de actualización, que te encadene en el nuevo campo los 5 existentes:

UPDATE Tabla SET IBAN2 = [IBAN] & [Banco] & [Oficina] & [DC] & [Cuenta];

3º/ Ejecutas la consulta y ¡voilá!, ya tienes los 1300 IBAN en un único campo.

4º/ Le cambias el nombre al campo IBAN2 y borras los otros 5.

5º/ En el formulario añades el nuevo campo único y borras los otros 5.

Y ya puedes aplicar mi código sin problemas

Ah! Me olvidaba!

En cuanto al error que te da, lo puedes evitar poniendo el foco directamente en el control, en vez de hacerlo a través de una variable:

Me. Entidad. SetFocus, o Me. DC.SetFocus...

Yo lanzaría el mensaje dentro de casa Case del Select y también ahí dentro pasaría el foco al control correspondiente

1 respuesta más de otro experto

Respuesta
1

Sin saber como está construida es difícil decir algo pero, en principio, ¿dónde está definida la función CodBan?

Normalmente ese aviso aparece cuando haces referencia a un control numérico ( o texto) y lo quieres "comparar" con otro texto( o numérico).

De todas formas, si quieres, repito, si quieres haz una copia con datos inventados y me la mandas a [email protected] y la miro.

Si lo haces, en el asunto del mensaje pon tu alias Antonio Úbeda, ya que si no sé quien me escribe ni los abro.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas