Access - c combinado y c de texto en formulario

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

c combinado y c de texto en formulario

Publicado por Pablo (328 intervenciones) el 06/03/2023 19:46:22
Hola a todos
En un formulario tengo un c. combinado (cc) y un c. de texto (ct), quiero que el ct tenga como valor una columna del cc, en su ficha Datos.Origen del control puse: =DBúsq("nombre_tienda";"tiendas";"codigo_tienda=" & [tienda_muestra] & ""), Si paso a un registro nuevo, en el ct pinta #Error, ¿hay forma de evitar esto?, probé con la idea que me dieron aquí de Formato: &;"" y sigue poniendo #Error
Alguna sugerencia
Gracias
Pablo
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

c combinado y c de texto en formulario

Publicado por Anonimo (3316 intervenciones) el 06/03/2023 22:07:14
Si la columna a visualizar en CT es la del ítem activo en CC, solo hay que especificarlo: = [CC].Column (xx) y si no es la del ítem activo ¿Qué otra relación hay entre CC y CT?
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
sin imagen de perfil
Val: 266
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

c combinado y c de texto en formulario

Publicado por Pablo (328 intervenciones) el 07/03/2023 16:59:47
Hola Anónimo
Si en cc.Después de actualizar pongo ct=cc.column(x), cuando actualizo el cc el ct pinta el dato correspondiente. En un formulario continuo tengo varios registros 'antiguos', en cc tienen un dato , en ct no, de ahí que se me ocurriera borrar cc.después de actualizar y, en ct.Datos origen del control=DBúsq("descripcion_producto";"productos";"codigo_producto=" & [producto_muestra] & ""), así pinta el dato antes y después de actualizar pero, si cc está en blanco pinta #Error.
Espero haber explicado el problema
Gracias
Pablo
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

c combinado y c de texto en formulario

Publicado por Anonimo (3316 intervenciones) el 07/03/2023 18:11:36
Si el único problema es que si se dan las circunstancias aparezca '#error' la solución está en enmascararlo.

La función DLookup devuelve un NULL si no localiza el dato a devolver y a la función NULL se le puede aplicar la función NZ.

Actual:
=DBúsq("descripcion_producto";"productos";"codigo_producto=" & [producto_muestra] & "")

Alternativa:
=Nz(DBúsq("descripcion_producto";"productos";"codigo_producto=" & [producto_muestra]);"")

Si DLookup devuelve un NULL la función NZ lo detecta y lo cambia por una cadena vacía.
Eso mismo (la cadena vacía) se puede eliminar de la condición, solo ocupa espacio porque el dato es numérico (si fuera de texto si seria indispensable añadir una comilla simple al final, no una cadena vacía).
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
sin imagen de perfil
Val: 266
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

c combinado y c de texto en formulario

Publicado por Pablo (328 intervenciones) el 07/03/2023 18:37:00
Hola Anónimo
Acabo de probar cambiando el origen del control a
=Nz(DBúsq("nombre_tienda";"tiendas";"codigo_tienda=" & [tienda_muestra] & "");"Vacío") y sigue dando #Error
Sigo buscando
La propiedad Text es el contenido actual del control. La propiedad Value es el valor guardado del control de cuadro de texto. La propiedad Text es siempre la actual mientras el control tenga el enfoque.
No entiendo las diferencias entre estas 2 propiedades, podrías explicarmela
Gracias mil
Pablo
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 Joan
Val: 414
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

c combinado y c de texto en formulario

Publicado por Joan (90 intervenciones) el 07/03/2023 22:17:29
Hola,

Prueba:

=Nz(DBúsq("nombre_tienda";"tiendas";"codigo_tienda=" & [tienda_muestra]), "Vacío")
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

c combinado y c de texto en formulario

Publicado por Anonimo (3316 intervenciones) el 08/03/2023 02:34:08
Entonces el problema no es que DLookup devuelva un NULL, sino que el referente no existe (y Dlookup no llega a funcionar)

Aplicamos otro método que consiste en capturar el error y simular a NZ, si el dato no es un numero, devuelve un cero (o cualquier otro numero que no exista como ID en la tabla) y la función Dlookup ya no dará error.

1
=DBúsq("nombre_tienda";"tiendas";"codigo_tienda=" & SiInm(EsNum([tienda_muestra]);[tienda_muestra];0))

Aclarando la duda:
La propiedad TEXT solo la puede tener el objeto activo (siempre que la soporte, por ejemplo: una etiqueta no la asume)

La diferencia entre VALUE y TEXT solo se da cuando se esta editando el control:
.- Text es el valor en edición (cambia con cada pulsación de tecla)
.- Value solo cambia al finalizar la edición (igualándose a TEXT).
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
sin imagen de perfil
Val: 266
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

c combinado y c de texto en formulario

Publicado por Pablo (328 intervenciones) el 08/03/2023 16:47:58
Recibí varias respuestas, contexto a la primera
Probé a cambiar ; por , y m responde
La expresión tiene un sintaxis no válida
Tiene que ser otro problema
Gracias
Pablo
Un avance
Pinta #Error en el ct cuando no hay dato en el cc, en un registro nuevo. En la tabla ya le puse requerido=Si
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
sin imagen de perfil
Val: 266
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

c combinado y c de texto en formulario

Publicado por Pablo (328 intervenciones) el 08/03/2023 17:54:48
Seguí haciendo prueba, puse un ct independiente, en su evento clic
MsgBox "Me.tienda_muestra=" & Me.tienda_muestra
si estoy en un registro nuevo responde con Me.tienda_muestra=
En la ventana inmediato tengo estos resultados
?isnull("tienda_muestra")
Falso
?IsEmpty("tienda_muestra")
Falso
No debería ser una variable nulo o vacía?
O tengo un error de concepto?
Gracias
Pablo
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
sin imagen de perfil
Val: 266
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

c combinado y c de texto en formulario

Publicado por Pablo (328 intervenciones) el 08/03/2023 18:18:14
Trabajo con access 2010, la función SiInm no la reconece¡?¡?¡?
Gracias por la aclaración de Value y Text
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

c combinado y c de texto en formulario

Publicado por Anonimo (3316 intervenciones) el 08/03/2023 19:42:45
Es una copia literal y (por eso y porque me gusta verificar que 'entiende' lo que le digo) suelo utilizar IIF (y si la traduce a SiInm lo confirma).

Con la salvedad de tener errores en las referencias o en el propio código, en la versión A'2010 funciona sin problemas
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
sin imagen de perfil
Val: 266
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

c combinado y c de texto en formulario

Publicado por Pablo (328 intervenciones) el 08/03/2023 20:04:02
Después de leer la aclaración de iif/silnm copie la instrucción =DBúsq("nombre_tienda";"tiendas";"codigo_tienda=" & SiInm(EsNum([tienda_muestra]);[tienda_muestra];0)), pase a access, la pegué en el origen del control de marras y funciona bien
Como tengo otros controles que me pasa lo mismo, aprenderé, comprenderé la instrucción escribiéndola en los otros controles.
Gracias
Pablo
¡No hay nada como saber!
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
sin imagen de perfil
Val: 266
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

c combinado y c de texto en formulario

Publicado por Pablo (328 intervenciones) el 09/03/2023 17:41:31
Ayer decía que iba a estudiar la instrucción, estoy en ello
En la ventana inmediato tengo:
A=12
?iif(A=12,"Igual a 12","Distinto de 12")
Igual a 12
?SiInm(A=12,"Igual a 12","Distinto de 12")
Responde con No se ha definido...
Busqué siinm en google y me remite a iif
En el origen de datos del control tengo: =DBúsq("nombre_tienda";"tiendas";"codigo_tienda=" & SiInm(EsNum([tienda_muestra]);[tienda_muestra];0) . Tengo un código de tienda que es 0=Varias consecuentemente cuando no hay código pinta "Varias", no podría sustituirse el 0 final de Silnm por "" (dos dobles comillas)?
Gracias, un saludo
Pablo
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 Joan
Val: 414
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

c combinado y c de texto en formulario

Publicado por Joan (90 intervenciones) el 09/03/2023 18:47:00
Hola,

Y por qué no pruebas con código VBA?
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

c combinado y c de texto en formulario

Publicado por Anonimo (3316 intervenciones) el 09/03/2023 18:54:50
No falla la maquina: falla el usuario.

El motor de Access es ingles de nacimiento y así continua tras mas de treinta años.

Para que Access funcione en español, francés o chino tiene una capa mas de programación por la que se adapta a la configuración regional de la maquina en la que corre.

Si estamos en la capa superior (la que se adapta al idioma del usuario) puede entender las ordenes en ambos idiomas (por eso se puede escribir IIF y el entender que es Silnm) pero cuando se baja a la capa inferior ignora el 'idioma local' y es IIF o nada.

En la respuesta se le asigna como origen (en modo diseño) una expresión y 'como estamos en la capa superior' entiende ambos idiomas (y traduce sobre la marcha)

En las practicas se esta en la capa inferior (la ventana de inmediato) y en ella o sabes ingles o lo aprendes aunque sea a base de ensayo/error.

En el formulario: el punto y coma (separador de listas) y la coma (separador decimal)
En la ventana de inmediato: la coma (separador de listas) y el punto (separador decimal)

Y si sabes donde pisas tendrás menor probabilidad de tropezar cuando tengas que saltar entre ambas capas.

Analizando lo que he publicado:

El problema es que la función DLookup (la entiende cualquier idioma) necesita que los datos sean correctos o devuelve un error y en la comparación le falta uno de los términos (el Id de la tienda) ===>>> Error

Se le aplica una función que no es mas que una forma de utilizar el clásico (IF - Then - Else - End IF) fuera de VBA y con el se verifica que exista un NUMERO (no importa cual) y si no lo hay pone un cero (que es un número como cualquier otro).

Si se utiliza el cero como un elemento mas, pues se pone el 99999999 o el (-1) que se supone no están en el conjunto.

Si bien es cierto que la función devolverá un NULL (esa tienda no existe), el cuadro de texto lo considerara una cadena vacía (o lo ocultara) y en el peor de los casos se aplica NZ
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
sin imagen de perfil
Val: 266
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

c combinado y c de texto en formulario

Publicado por Pablo (328 intervenciones) el 10/03/2023 17:12:28
En la ventana inmediato no entiende el español.
Ok. gracias
Pablo
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