Access - Control de entrada de registro

 
Vista:

Control de entrada de registro

Publicado por Quim (14 intervenciones) el 13/06/2017 11:20:14
Buenas y ayuda!!

Estoy intentando crear una validación de datos para una entrada de los mismos, con problemas en ello.
Os pongo en situación:

Tengo la tabla ENTRADA con los campos ID (autonúm), DATOS1, DATOS 2
Me interesa registrar los valores de DATOS1 en caso que:
- si el valor que introduce el usuario es "0" me registre en ese campo el valor "99-" seguido de un número incremental. (He creado otra tabla llamada CONTADOR dónde se puede coger ese valor.)
- En caso que el valor no sea "0", el campo DATOS1 adquiere el valor que se haya introducido.

El usuario registra datos a través de un formulario, para hacerle más ameno y visual el trabajo.
Espero haberme explicado bien... Ojalá podáis ayudarme!!!!

Mil gracias de antemano.

Saludos.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Panchove
Val: 467
Plata
Ha disminuido 1 puesto en Access (en relación al último mes)
Gráfica de Access

Control de entrada de registro

Publicado por Panchove (211 intervenciones) el 13/06/2017 14:07:16
En el evento despues de actualizar de DATOS1 debes colocar lo siguiente:

1
2
3
4
5
6
7
Dim n as Long
 
n = CLong(Me.DATOS1)
 
if n= 0 then
   Me.DATOS1 = "99-" & FORMAT$(NZ(DLOOKUP("MI_CONTADOR", "MI_TABLA","MI_CONDICION"), 0) +1,"0000")
endif

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Control de entrada de registro

Publicado por Quim (14 intervenciones) el 15/06/2017 16:17:01
Buenas y gracias!!!
Coloco el código en el evento en el formulario... pero no lo registra como quiero en el campo de la tabla. He probado a entrar un "0" y me graba un "0", claro... y no "99-X".
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Control de entrada de registro

Publicado por Quim (14 intervenciones) el 19/06/2017 08:47:02
Hola!! Sigo igual... no tengo forma de hacer que me guarde el código nombrado tras meter un 0...
:__( Heeeeeeeeeelp!!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Control de entrada de registro

Publicado por anonimo (3316 intervenciones) el 19/06/2017 13:56:13
Si tenemos en cuenta esto:
...
- si el valor que introduce el usuario es "0" me registre en ese campo el valor "99-" seguido de un número incremental. (He creado otra tabla llamada CONTADOR dónde se puede coger ese valor.)
....

Lo idóneo (ya que se trata de un incremental) seria obtener el mayor y no utilizar DLookup que tomara el primero que encuentre y al incrementarlo se igualaría al segundo ... etc. (datos que ya pudieran existir y no los consienta).

Supongo que una leve modificación de lo que han propuesto es mas que suficiente (además ... si se espera un numero se evalúa la existencia de un numero, es lo adecuado).
1
2
3
4
IF Not IsNumeric (Me.[datos1]) Then MsgBox "No se ha introducido un numero ¿es un error?" : Exit Sub
If Val(Me.Datos1) = 0 Then
   Me.[DATOS1] = "99-" & FORMAT(NZ(DMax("MI_CONTADOR", "MI_TABLA","MI_CONDICION"), 0) +1,"0000")
End IF
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Control de entrada de registro

Publicado por Quim (14 intervenciones) el 19/06/2017 14:59:45
Gracias... pero me sigue sin guardar el registro bien. Si meto un 0, guarda un 0. :(
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Control de entrada de registro

Publicado por Anonimo (3316 intervenciones) el 19/06/2017 20:30:06
Poca aportación de datos, me comienzo a preguntar si el destino (el campo de la tabla) admite datos de tipo texto ...... porque lo que se le trata de insertar es un texto (no un numero, aunque solo se utilicen dígitos).

Si se es capaz de entrar en VBA, mas sencillo es aplicar un punto de interrupción y (auxiliado por F8) hacer el seguimiento paso a paso para ver como se gestionan las variables y que valores toman.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Control de entrada de registro

Publicado por Quim (14 intervenciones) el 20/06/2017 09:00:47
No... eso está bien.
Yo creo que pongo mal lo incluído en ("MI_CONTADOR", "MI_TABLA", "MI_CONDICION"). En mi caso coloco ("Contador.Ref", "Entrada", "Datos1=0"), vamos, lo que entiendo como "mi contador" que es el campo Ref de la tabla Contador, la tabla "entrada" que es la que incluye el campo en el que quiero la condición, y la condición mencionada, campo Datos1 igual a 0.

Supongo que mal, no? Porque si no no entiendo dónde está el problema...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Control de entrada de registro

Publicado por Anonimo (3316 intervenciones) el 20/06/2017 09:28:56
Quizás te interese localizar lectura 'seria' de como denominar a los objetos en Access (aplicable a casi todos los gestores de datos).

La teoría es correcta:
.- Parametro1 = nombre del campo (se aconseja encerrarlo entre corchetes si el nombre no esta 'normalizado' y uno que contenga un punto es 'anormal')

.- Parametro2 = Nombre del conjunto (dominio) que puede ser una tabla, consulta ........ (el mismo exquisito cuidado con los nombres a aplicar)

.- Parametro3 = Es opcional y supone una condición o filtro con datos que le sean accesibles.

Aplica corchetes en el nombre del campo (si es cierto que contiene un 'indeseable punto' como parte de el) y analiza el valor real del campo con la condición (no sea que se tenga una confusión con los 'Null y los ceros por defecto'), en principio un cero puede suponer un 'Falso' si es un campo Booleano y si el campo fuera numérico (pero sin inicializar) su verdadero valor seria 'Null'.

Simple curiosidad .... esa función de dominio como origen de un campo independiente en cualquier formulario (mas sencillo es difícil de plantear) ¿Qué resultado devuelve? ...

Seria algo similar a:
= DMax ( "[Contador.Ref]", "Entrada", "Datos1=0")

En la respuesta que obtengas esta el camino a la solución.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Control de entrada de registro

Publicado por Quim (14 intervenciones) el 23/06/2017 16:17:07
Thanks!!!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar