Access - Auto-Rellenar Formulario desde Tabla.

 
Vista:
Imágen de perfil de Osen
Val: 50
Ha disminuido su posición en 2 puestos en Access (en relación al último mes)
Gráfica de Access

Auto-Rellenar Formulario desde Tabla.

Publicado por Osen (72 intervenciones) el 30/05/2023 04:02:44
Amigos de Access
Necesito que un Sub-Form se me rellene desde un comboBox

Tengo la tabla "Empaque" con toda la información Así:

FechaEmpaque
ArticuloEmpaque
CantidadUnidadesEmpaque
PrecioEmpaque
PrecioUnitarioEmpaque
CantidadEmpaque
TotalEmpaque
ProveedorEmpaque


Un Subformulario "SubFormPackaging" con los siguientes campos que toma de la Tabla: "Empaque"
TipoEmpaquePackaging (Cuadro Combinado) (Depende de => ArticuloEmpaque)
PrecioPackaging (Depende de => PrecioUnitarioEmpaque)

Este SubFormPackaging lleva los datos a la tabla del mismo nombre. "SubFormPackaging".

El caso es que el siguiente código no me funciona. Sólo llena el tipo de empaque, pero no trae el precio

Private Sub TipoEmpaquePackaging_After_Update()
Me.PrecioPackaging = Nz(TipoEmpaquePackaging.Column(3), "")
End Sub


El Ancho de las columnas está configurado. El Origen de la Fila => Empaque.

Esto es, todo está configurado, pero nada que toma el precio. Hasta he cambiado el número de columna y nada.
Lo más raro, es que alteré el nombre de Me,PrecioPackaging y no detectó el error. (Me.BilletePack)

Por eso recurro a ustedes a ver si alguien me ayuda a resolver esto.

Gracias
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

Auto-Rellenar Formulario desde Tabla.

Publicado por Anonimo (3316 intervenciones) el 30/05/2023 09:15:53
El primer error que se aprecia, esta en la función NZ.

La función NZ tiene dos parámetros, se evalúa el primero y si no es un NULL devuelve el dato, si en un NULL devuelve el segundo (y aquí el problema con la expresión publicada)
Se evalúa un valor numérico y (si fuera un null) devolvería una cadena de texto vacía ==> error: debería devolver un valor numérico (usualmente el cero).

La segunda parte: NZ evalúa si es o no un null, pero en ese origen de datos (con la excepción de que se le consienta en la tabla de origen y no es lo idóneo) no habrá un NULL, debería haber un cero o en el peor de los casos una cadena de texto vacía (que no es un NULL y Nz no es de utilidad).

SI el origen de datos es la tabla y en la tabla el orden de campos es el publicado, la columna cuarta (tercera en VBA) es [PrecioEmpaque] y la quinta (cuarta en VBA) es [PrecioUnitarioEmpaque].

¿El orden es correcto y la columna tiene valores?.

Propongo esta alternativa (verifica que el dato es un valor numérico y emula a la función NZ)

Antes:
Me.PrecioPackaging = Nz(TipoEmpaquePackaging.Column(3), "")

Alternativa:
Me.PrecioPackaging = IIF (IsNumeric(TipoEmpaquePackaging.Column(3), TipoEmpaquePackaging.Column(3), 0)

El tercer parámetro de la función IIF (equivale a un clásico IF ...THEN ...ELSE End IF) he puesto un cero, pero se puede poner cualquier valor numérico o equivalente.
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
Imágen de perfil de Osen
Val: 50
Ha disminuido su posición en 2 puestos en Access (en relación al último mes)
Gráfica de Access

Auto-Rellenar Formulario desde Tabla.

Publicado por Osen (72 intervenciones) el 30/05/2023 18:25:56
Hola Anonimo, muchas gracias

Me sale error de compilación en IsNumeric

Quiero que al seleccionar Tipo de empaque, me llene el precio que está en la 5 columna de la tabla "Empaque"

Anexo Archivo para su análisis

Gracias
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

Auto-Rellenar Formulario desde Tabla.

Publicado por Anonimo (3316 intervenciones) el 30/05/2023 20:51:58
Mis sinceras disculpas, le falta un paréntesis para que la función tome el dato a evaluar y da error (añadirlo al final no vale).

Original:
Me.PrecioPackaging = IIF (IsNumeric(TipoEmpaquePackaging.Column(3), TipoEmpaquePackaging.Column(3), 0)

Lo correcto:
Me.PrecioPackaging = IIF (IsNumeric(TipoEmpaquePackaging.Column(3)), TipoEmpaquePackaging.Column(3), 0)

Lo correcto en la aplicación:

1
2
3
Private Sub TipoEmpaquePackaging_Click()
Me.PrecioPackaging = IIf(IsNumeric(TipoEmpaquePackaging.Column(4)), TipoEmpaquePackaging.Column(4), 0)
End Sub

Has utilizado lo mismo en muchos sitios y eso no es correcto, bórralo de todas partes y aplícalo solo en el evento del combo (en el ejemplo: el Click)
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
Imágen de perfil de Osen
Val: 50
Ha disminuido su posición en 2 puestos en Access (en relación al último mes)
Gráfica de Access

Auto-Rellenar Formulario desde Tabla.

Publicado por Osen (72 intervenciones) el 30/05/2023 21:09:09
PERFECTOOOOO.....!!
Muchas gracias.

Te pregunto: Ejemplo.... En caso de otro formulario con más campos para llenar y quitar el Nz, sería así:....?

Private Sub TipoEmpaquePackaging_Click()
Me.PrecioPackaging = IIf(IsNumeric(TipoEmpaquePackaging.Column(4)), TipoEmpaquePackaging.Column(4), 0)
Me.DireccionPackaging = IIf(IsNumeric(TipoEmpaquePackaging.Column(5)), TipoEmpaquePackaging.Column(5), 0)
Me.CiudadPackaging = IIf(IsNumeric(TipoEmpaquePackaging.Column(6)), TipoEmpaquePackaging.Column(6), 0)
Me.TelefonoPackaging = IIf(IsNumeric(TipoEmpaquePackaging.Column(7)), TipoEmpaquePackaging.Column(7), 0)

End Sub

Gracias nuevamente....!!!!
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

Auto-Rellenar Formulario desde Tabla.

Publicado por Anonimo (3316 intervenciones) el 30/05/2023 23:48:58
Creo que no has entendido la necesidad del cambio.

No consiste en utilizar NZ o cualquier otra función, de lo que se trata es de evaluar si el dato es el adecuado.

NZ solo verifica que no sea un NULL, una cadena de texto vacía NO es un NULL (solo esta vacía: pero existe) ¿y que uso practico?.

Access aceptara en un cuadro de texto cualquier carácter alfanumérico (esto es números, letras ....), pero si espera un numero y se le entrega una letra (o frase ..) dará error (y se pretende evitarlo)

Si lo que se verifica es 'que sea un numero', le da lo mismo si es un NULL, una cadena de texto vacía o el contenido de un libro, si es un numero lo acepta y si no lo es IIF le adjudica un valor alternativo (que ha de ser un numero, aunque sea el cero) y será mas fiable.

Lo que me llama la atención es que se tenga que evaluar si el dato es numero texto o null, pues lo adecuado es que la tabla de la que proceden los datos tenga valores correctos en sus registros y si esto se cumple, no hace falta evaluarlo (en ese campo o el que sea hay un numero una letra o una fecha).

Si hay plena garantía de que los registros están bien cumplimentados: sobra NZ y también IsNumeric.

Puedes verificarlo:

Si todos los registros de la tabla tienen el precio (y si no lo tiene: un cero) eliminas el NZ, el IsNumeric y funcionara igual de bien
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
Imágen de perfil de Osen
Val: 50
Ha disminuido su posición en 2 puestos en Access (en relación al último mes)
Gráfica de Access

Auto-Rellenar Formulario desde Tabla.

Publicado por Osen (72 intervenciones) el 31/05/2023 03:19:23
Gracias anónimo.
Definitivamente es usted un maestro es esto.
Gracias nuevamente
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