PRESENTACION Tabla referenciada

adriano.chavarry

Nuevo miembro
Buenas tardes, de antemano gracias por su respuesta, estoy empezando con appsheet y tengo 2 tablas PEDIDOS y CLIENTES, de la tabla pedidos estoy referenciando a cliente (Cuando genero un pedido nuevo solo selecciono al cliente), el detalle es que cuando genero un pedido nuevo me guarda el ID de Cliente y no el nombre (que es lo que deseo), que debo hacer?
1676496233168.png
 

adriano.chavarry

Nuevo miembro
Hola Mati gracias por tu pronta respuesta, logré solucionarlo cambiando el key (no fué lo que recomendaste), estuve buscando videos en you tube respecto al comando lookup, pero no encontré uno especifico sobre lo que quiero hacer, igual seguiré buscando. Gracias
 

raresmc

Miembro Activo
Miembro del equipo
Crear hojas de cálculo eficientes es casi un arte.
La estructura de sus datos afecta no solo el tipo de aplicación que vas a crear, sino también cómo se muestra y cómo va a funcionar la aplicación.
Una vez que comprendas los conceptos básicos, sus datos serán más fáciles de administrar y sus aplicaciones serán más poderosas.
Una vez que tienes una aplicación con varias tablas, suele ser útil crear conexiones, conocidas como referencias entre las tablas de la aplicación.
En tu caso cada pedido está referenciado a un cliente.

Las referencias tienen tres propósitos:
  1. Te permiten representar relaciones. Por ejemplo, la referencia entre PEDIDOS y CLIENTES le permite capturar la relación entre un pedido y el cliente que realizó ese pedido.
  2. Le permiten recuperar fácilmente información de una fila relacionada en otra tabla. Por ejemplo, la referencia entre PEDIDOS y CLIENTES partiendo de un pedido le permite recuperar el nombre, teléfono etc. de la tabla CLIENTES.
  3. Le permiten navegar de una fila a otra. Por ejemplo, puede recuperar un pedido en particular, luego navegar a las filas relacionadas y luego a las filas relacionadas del cliente.
Después de definir una referencia, para obtener un valor de columna de una tabla a la que se hace referencia, se usan expresiones de desreferencia.

Una expresión de desreferencia obtiene el valor de una columna de una fila específica de otra tabla. La expresión de desreferencia hace uso de referencias entre tablas , usando el valor de una columna de tipo Ref en esta tabla para encontrar una fila específica en otra tabla y obtener el valor de una columna.
Una expresión de desreferencia es de la forma:
JavaScript:
[ref-column].[value-column]

Donde ref-column es el nombre de la columna de tipo Ref en esta tabla y value-column es el nombre de una columna de la otra tabla.
En tu caso será:
JavaScript:
[CLIENTE].[NOMBRE]

El valor de una columna Ref debe ser el valor de la columna clave de una fila en la tabla referenciada.

Entonces no veo la necesidad de guardar el nombre del cliente, cuando podemos recuperar con facilidad estos datos y mostrarlos en la aplicación al usuario final. De esta manera eliminamos la redundancia de datos.

Una cosa es que datos se guarda en las tablas (que el usuario final nunca va a ver la base de datos) y otra cosa es que datos mostramos en la aplicación para el usuario final.

Espero que aclaro tus dudas y que te sea de utilidad.
 
Última edición:

adriano.chavarry

Nuevo miembro
Si cambias el key de id a nombre eso cambia, igualmente no te lo recomiendo, podrías crear una columna al lado de "cliente"que sea nombre de cliente, después el nombre lo traer con lookup
Hola Mati, encontré un tutorial buenazo y logré utilizar el lookup, pero en este caso para traerme una imagen, aplicaré lo mismo para traerme el nombre del cliente. Gracias por la buena orientación!
1676660197887.png
 

raresmc

Miembro Activo
Miembro del equipo
Para comprender lo que esta haciendo la función LOOKUP(), os pongo la definición original de AppSheet.

LOOKUP()
Obtiene un valor de columna de una fila coincidente de una tabla o lista(sector) de datos.

Devuelve
solo el primer valor encontrado de la columna, incluso si coinciden varias filas.

LOOKUP( [find-value] , “in-dataset” , “in-column” , “return-column” )

find-value
= el valor que debe coincidir con el operador
in-dataset = el nombre de la tabla donde tiene que buscar
in-column = el nombre de columna donde tiene que buscar(operador)
return-column = el nombre de la columna cuyo valor debe devolverse como valor de texto literal

- LOOKUP

LOOKUP(columna a buscar, tabla a buscar, columna equivalente, columna de interés)

Ejemplo:
LOOKUP( [_THISROW].[ID_ALBUM], ALBUMES, ID_ALBUM, ID_GRUPO)

En el ejemplo, busca un valor en este caso el el ID_ALBUM del formulario, la función busca este valor del formulario en la tabla ALBUMES y cuando coincide el ID_ALBUM del formulario con el ID_ALBUM de la tabla, devuelve solo el primer valor de la columna ID_GRUPO de la tabla ALBUMES incluso si coinciden varias filas.

Un saludo.
 
Arriba