Dos expresiones

Buenas tardes.

 

tengo un problema que no se como soluyciones.

tengo dos expresion que se crearon por separado y funcionan bien. ahora necesito unirlas que funcionen al mismo tiempo, no encuentro la forma. 

Expresion 1= SELECT(Usuarios[ID USUARIO],[EVENTO]=[ID EVENTO])

expresiรณn para verificar que el usuario esta registrado

 

Expresion 2= COUNT(SELECT(Asistencia[ID ASISTENCIA],[ID USUARIO]=[_THISROW].[ID USUARIO]))=0

expresiรณn para verificar que el usuario no este repetido.

 

Agradezco su ayuda

Solved Solved
0 13 280
1 ACCEPTED SOLUTION

Gracias. No estรก claro lo que intentas hacer, pero suponiendo que quieres verificar si un usuario estรก registrado en un evento:

Primero tu tabla de usuarios debe tener รบnicamente las columnas que serรกn fijas siempre para un usuario. Por ejemplo, las columnas azules Evento y Asistencia ยฟpor quรฉ razรณn las tienes en la tabla de usuarios? ยฟun usuario podrรก รบnicamente asistir a solo un evento en particular nada mรกs? (tambiรฉn es el caso de Pedido).

Tรบ ya tienes una tabla de Eventos, y tienes la tabla Asistencia que une un usuario con un evento. En la tabla Asistencia puedes repetir eventos y usuarios como necesario, y como tienes esta tabla, no necesitas incluir informaciรณn de eventos en la tabla de Usuarios, ni informaciรณn de usuarios en la tabla de Eventos. 

Esto tiene en cuenta que las dos columnas Usuario y Evento en la tabla Asistencias son de typo Ref y que cada una apunta a la tabla correspondiente. 

Ahora, creando una Asistencia, ยฟcรณmo asegurarnos que el usuario no estรก ya registrado en un evento? La respuesta general es: ver si hay un registro en Asistencia que une el usuario con el evento, asรญ:

ISBLANK( SELECT(Asistencia [ID Asistencia],
  AND(
    [Usuario] = [_ThisRow].[Usuario],
    [Evento] = [_ThisRow].[Evento]
  )
))

Si utilizas un Form para llenar la tabla Asistencia, puedes primero seleccionar un Evento luego un Usuario. La columna Usuario debe tener la configuraciรณn siguiente:

  • Mostrar la columna solo si un Evento ha sido seleccionado: el campo "Show?" debe tener la expresiรณn siguiente:

    ISNOTBLANK([Evento])

  • Mostrar รบnicamente los Usuarios que no estรกn ya registrados en este mismo Evento: los campos "Suggested Values", y "Valid If" deben tener la expresiรณn siguiente: 

    Usuarios[ID Usuario] - SELECT( Asistencia[ID Usuario], 
      [Evento] = [_ThisRow].[Evento]
    )

List Subtraction | AppSheet Help Center 
ISBLANK() | AppSheet Help Center 
SELECT() | AppSheet Help Center 

 

View solution in original post

13 REPLIES 13

Hola, ยฟNos puedes mostrar tus tablas pf? Gracias. 

Hola,

si mira
asistencia.pngusuarios.png

Gracias. No estรก claro lo que intentas hacer, pero suponiendo que quieres verificar si un usuario estรก registrado en un evento:

Primero tu tabla de usuarios debe tener รบnicamente las columnas que serรกn fijas siempre para un usuario. Por ejemplo, las columnas azules Evento y Asistencia ยฟpor quรฉ razรณn las tienes en la tabla de usuarios? ยฟun usuario podrรก รบnicamente asistir a solo un evento en particular nada mรกs? (tambiรฉn es el caso de Pedido).

Tรบ ya tienes una tabla de Eventos, y tienes la tabla Asistencia que une un usuario con un evento. En la tabla Asistencia puedes repetir eventos y usuarios como necesario, y como tienes esta tabla, no necesitas incluir informaciรณn de eventos en la tabla de Usuarios, ni informaciรณn de usuarios en la tabla de Eventos. 

Esto tiene en cuenta que las dos columnas Usuario y Evento en la tabla Asistencias son de typo Ref y que cada una apunta a la tabla correspondiente. 

Ahora, creando una Asistencia, ยฟcรณmo asegurarnos que el usuario no estรก ya registrado en un evento? La respuesta general es: ver si hay un registro en Asistencia que une el usuario con el evento, asรญ:

ISBLANK( SELECT(Asistencia [ID Asistencia],
  AND(
    [Usuario] = [_ThisRow].[Usuario],
    [Evento] = [_ThisRow].[Evento]
  )
))

Si utilizas un Form para llenar la tabla Asistencia, puedes primero seleccionar un Evento luego un Usuario. La columna Usuario debe tener la configuraciรณn siguiente:

  • Mostrar la columna solo si un Evento ha sido seleccionado: el campo "Show?" debe tener la expresiรณn siguiente:

    ISNOTBLANK([Evento])

  • Mostrar รบnicamente los Usuarios que no estรกn ya registrados en este mismo Evento: los campos "Suggested Values", y "Valid If" deben tener la expresiรณn siguiente: 

    Usuarios[ID Usuario] - SELECT( Asistencia[ID Usuario], 
      [Evento] = [_ThisRow].[Evento]
    )

List Subtraction | AppSheet Help Center 
ISBLANK() | AppSheet Help Center 
SELECT() | AppSheet Help Center 

 

Hola


si la columna asistencia en usuarios no deberรญa estar solo la puse por una prueba que estaba realizando pero no va a quedar. disculpa por este error.

"ยฟun usuario podrรก รบnicamente asistir a solo un evento en particular nada mรกs? (tambiรฉn es el caso de Pedido)."

R: si cada usuario solo  compra entrada para un evento, es la primero que estamos creando, de pronto a futuro el mismo usuario comprara entrada para otro evento, creo que tendrรญa que hacer doble validaciรณn en ese caso.

 

por eso se necesita las dos comprobacion en la tabla de asistencia.
1= que el usuario este registrado en el evento especifico. "ISNOTBLANK([Evento])"

2= que el usuario no se pueda entrar dos veces al mismo evento no pueda tener doble asistencia.

 

Hola, disculpa no era una pregunta en sรญ; era sรณlo para demostrar que dichas columnas no son necesarias. De todas formas, ya con tu tabla Asistencia no necesitas esas columnas y la soluciรณn de arriba valdrรก en cualquier caso.

Hola.

disculpa por preguntar tanto soy novato en appsheet.

esta expresiรณn funciona solo muestra los que no tienen aun asistencia,

LordCortes_0-1645544588561.png

pero donde pongo la otra para verificar que el usuario esta registrado en este evento realmente y no en otro?
muchas gracias por tu ayuda nuevamente!

No te preocupes. Esta expresiรณn ya muestra si el usuario estรก registrado en este evento en particular, no cualquier evento en general. Recuerda que en la consulta SELECT hemos incluido la condiciรณn: 
[Evento] = [_ThisRow].[Evento]

 

Tienes que leer esto:

SELECT() | AppSheet Help Center 

si entiendo esta parte del selec pero por alguna razรณn no realiza el filtro, de los datos de prueba tengo a dos usuarios en diferente evento igual de prueba y me aparecen en el listado. ya leรญ todo pero no entiendo por que salen

Sin tรญtulo.jpg

Eso porque la expresiรณn se basa en lo que estรก en la tabla Asistencia. La columna Evento en Usuarios que hemos comentado como no necesario no se debe tener en cuenta, ni ningรบn otra columna en la tabla Usuarios. 
La relaciรณn entre Usuarios y Eventos estรก en la tabla Asistencia. 

cual seria la forma optima para hacerlo:
Que se verifique si el usuario esta registrado en el evento  que estoy seleccionando y que no pueda duplicar la asistencia?

Aquรญ sรณlo tienes que actualizar la tabla Asistencia. Nada mรกs.

Actualmente la tabla Asistencia tiene tres registros. Si las asistencias de David y Erika estรกn en la tabla Asistencia, ninguno de los dos se mostrarรก en la lista de clientes a elegir. 

 

ID AsistenciaID Evento ID Usuario
abcd12342b076251a5
abcd12352b076251a8

Aurelien
Google Developer Expert
Google Developer Expert

Hi @LordCortes 

 

Probably something like this:

AND(
  IN(USEREMAIL(),[Related Usuarios]),
  COUNT([Related Asistencias])=0
)

 

Steve
Platinum 4
Platinum 4
Top Labels in this Space