Access - Consulta de macro

 
Vista:
sin imagen de perfil
Val: 7
Ha disminuido su posición en 7 puestos en Access (en relación al último mes)
Gráfica de Access

Consulta de macro

Publicado por Jose (5 intervenciones) el 12/07/2018 11:07:41
Buenos días, a ver si alguien pudiera ayudarme con una situacion que tengo.En un formulario de introduccion de datos, tengo una macro que realiza ciertas cosas una vez hago clic en el botón de guardar registros. Lo primero que hace es:

Si se cumple esta condicion, establece un valor en un campo del formulario.

([Formularios]![Codigos]![Cantidad]) Es Nulo Y Negado [Formularios]![Codigos]![Subformulario Articulos Saco].[Formulario]![CantidadPalet] Es Nulo

Tengo esta condicion repetida por dos campos, una para saco y otra para bolson

([Formularios]![Codigos]![Cantidad]) Es Nulo Y Negado [Formularios]![Codigos]![Subformulario Articulos Saco].[Formulario]![CantidadPalet] Es Nulo
([Formularios]![Codigos]![Cantidad]) Es Nulo Y Negado [Formularios]![Codigos]![Subformulario Articulos Bolson].[Formulario]![CantidadPalet] Es Nulo

Si ejecuto las dos me da un error, sin embargo si ejecuto las dos de manera individual me funciona correctamente.

Si indico Es Nulo , me da como que la condicion es cierta, cuando no lo es ( imagen 3 ) y si lo pongo en la condicion como <>0 entonces me indica que no coinciden los tipos ( imagen 4 ). La cuestion es que de las dos condiciones una va y la otra da fallo, es como que no me deja que se ejecuten las dos acciones a la vez.

Alguien puede ayudarme??? pleaseeee, os lo agradeceria enormemente.
4
3
2
1
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
sin imagen de perfil
Val: 7
Ha disminuido su posición en 7 puestos en Access (en relación al último mes)
Gráfica de Access

Consulta de macro

Publicado por Jose (5 intervenciones) el 12/07/2018 17:44:25
Hola, nadie me puede echar un cable???? muchas gracias de antemano.
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

Consulta de macro

Publicado por Anonimo (3312 intervenciones) el 12/07/2018 22:49:26
Las macros son muy dependientes de su entorno, pero aun así siguen las reglas ….

Lo que aprecio en lo expuesto es que se esperan valores NULL. pero no siempre hay ese valor en el objeto que se muestra vacío, basta que se le asigne un valor y luego se le borre y lo que antes era un NULL se convierta en una cadena vacía (y ese condición tendría una referencia errónea), la solución (generalmente) suele ir de la mano de la función NZ (que detectaría si el objeto esta inicializado)

En una de las imágenes aportadas se aprecia que en un ¿subformulario? no existe ningún valor:
.- si se hace referencia a un objeto de ese subformulario, Access se encontrara con un error pues la no-existencia de ese valor no es un NULL: simplemente no existe y no vale un NZ, se hace necesaria una función del tipo IsDate, IsNumeric, IsError … y para emular al NZ tendría que ser la condición de un IIF

Pero esos comportamientos se pueden controlar desde VBA, en las macros …. lo que pueda interpretar Access (cuando algo 'no le cuadra') puede ser cualquier cosa.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 7
Ha disminuido su posición en 7 puestos en Access (en relación al último mes)
Gráfica de Access

Consulta de macro

Publicado por Jose (5 intervenciones) el 13/07/2018 08:54:18
Primero que nada muchisimas gracias por responder y por dedicar tu tiempo a intentar ayudarme, te lo agradezco.
Entiendo perfectamente lo que me indicas, pero ando corto en conocimientos de access,y mas en tema de VBA, de ahi que este pegandome de tortas intentando resolver la situacion.
Te indico un poco lo que quiero a ver si me orientas un poco.
El campo del formulario CANTIDAD PRODUCIDA, necesito que se rellene automáticamente cuando no escriban nada en el. Si escriben alguna cantidad en el esa es la que se guardara, ahora bien si no escriben nada se rellenara automaticamente al darle al boton de guardar en base a la cantidad que aparezca en alguno de los dos subformularios.
Depende del codigo EAN que introduzca, aparecera información en alguno de los dos formularios de abajo ( en el primero bolsita nunca aparecera nada) , aqui es DONDE TENGO EL PROBLEMA, no se como hacer para que recupere la Cantidad Palet que se haya rellenado, por que como te indico, puede aparecer el segundo formulario con datos ( como ves en la imagen ) o el tercer formulario, como te mando en las dos nuevas imagenes, en el primer caso tendria que poner 42 y en el segundo caso 180. Umm no se si con esto te he aclarado alguna cosa y podrias orientarme
Muchas gracias nuevamente.
cantidad180
cantidad42
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

Consulta de macro

Publicado por Anonimo (3312 intervenciones) el 14/07/2018 11:59:21
Las macros ocuparon un breve instante en mi relación con Access, la libertad creativa con ellas es o muy limitada o muy compleja, es por ello que (aun sin desearlo) intentar algo 'con una macro' y finalizar gestionándolo con VBA es lo mas habitual en mi caso, esto es: están, existen … pero las ignoro.

En el caso actual la complicación esta en que se trabaja con elementos que pueden ser del tipo NULL en algunos casos y simplemente 'no existir' en otros, lo que requiere validaciones que (para gestionarlas con macros únicamente) se hace complejo al menos con mi experiencia con ellas.

Analizando lo expuesto:
.- se comienza evaluando un campo en un formulario principal
si tiene un dato valido …. fin de la historia
si no lo tiene se intentara localizar en cualquiera de los dos subformularios presentes

La verificación del campo del formulario principal es relativamente sencilla ==> la función Nz()

El problema estaría en los subformularios si estos carecen de registros, pues no se 'generan' los campos y cualquier referencia a ellos (que no este correctamente tratada) generara un error que impediría continuar (y de 'trampear' y continuar, el resultado podría ser errático).

La existencia de datos en los subformularios se puede hacer de dos formas, una verificando si este (el subformulario) tiene contenido con una consulta a una de sus propiedades 'HasData()' o bien utilizando una de las funciones diseñada para detectar errores de este tipo: 'IsError()' o sus alternativas: 'IsDate()' para fechas, 'IsNumeric()' para números …..

Pero estas funciones solo indican si se produjo o no se produjo un error, para que sean verdaderamente útiles se tendrían que utilizar como condición en otra función 'IIF()', así se obtendría el valor (sino hubo error) o bien la alternativa de localizar en el otro formulario (un nuevo IIF) para y finalmente, de no localizar algo valido, devolver un valor alternativo.

Todo lo anterior y condensado en una línea de ejecución (para su utilización en/con una macro) se complica un poco pero no es imposible

Hacer 'eso mismo' con VBA (que carece del auxilio que tienen las macros) requiere trabajar con datos reales, pues se trataría de 'un traje a medida' en el que un centímetro de mas o de menos es muy importante.
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