Jalar campo Signature de una tabla de colaboradores a un registro diario

Hola a todos, estoy tratando de hacer una app de un tareo diario que es para el control de asistencia, almuerzos, y horas extras.

Tengo una base de colaboradores llamada "TarColaboradores", y tengo un registro diario de sus horas de ingreso/salida, labores llamada TarRegDiario, se vinculan por medio del DNI del colaborador.

En la tabla de Colaboradores he incluido el campo de firma (SIgnature) mediante Gsheet formula para poder ver las firmas dentro de una celda.

Mi intención es que en el registro diario se jale la firma de la tabla Colaboradores en caso exista firma, y que si no exista firma permita firmar desde el formulario de tareo diario y la firma se guarde en la tabla de Colaboradores., habrá alguna forma de lograr ello?

Formulario de Tareo Diario -> Data de TarRegDiario

firma02.JPG

Tabla TarColaboradores:

firma03.JPG

Tabla TarRegDiario:

firma04.JPG

Campo de firma en la tabla TarRegDiario

firma05.JPG

Initial Value formula for column COLAB_FIRMA (Signature)

ANY(SELECT(TarColaboradores[COLAB_FIRMA], ([ID_DNI] = [_THISROW].[ID_DNI]), TRUE))

 

0 9 301
9 REPLIES 9

Deberías tener dos columnas diferentes, p.e: firmaManualTemp y firmaRegistrada

  1. firmaRegistrada:
    •  App Formula :
        IF( ISBLANK([ID_DNI].[COLAB_FIRMA]),
          [firmaManualTemp],
          [ID_DNI].[COLAB_FIRMA]
        ) 
    • Show If 
        OR(
          ISNOTBLANK([ID_DNI].[COLAB_FIRMA]),
          NOT("Form" = CONTEXT("ViewType"))
        )

           
  2. firmaManualTemp:
    • Show If 
        AND(
          ISBLANK([ID_DNI].[COLAB_FIRMA]),
          "Form" = CONTEXT("ViewType") 
        )
    • Require IfISBLANK([ID_DNI].[COLAB_FIRMA])

Luego a través de una Form Saved Action o un Bot, deberías copiar el valor de la columna firmaRegistrada en COLAB_FIRMA, si ISBLANK([COLAB_FIRMA])

Hola Joseph_Seddik, muchas gracias por el apoyo, el código me daba algunos errores,  tuve que hacerle algunos cambios teniendo en cuentra el código que publicaste y ponerle los ANY() porque me daba error de tipo List.

En la Tabla TarRegDiario, tengo 2 columnas: "FIRMA_REGISTRADA" y "FIRMA_MANUAL", ambas de tipo Signature, dejo el código:

1) "FIRMA REGISTRADA"

Show_If expression for column FIRMA_REGISTRADA (Yes/No)

OR(
ISNOTBLANK(ANY(SELECT(
TarColaboradores[COLAB_FIRMA], ([ID_DNI] = [_THISROW].[ID_DNI]), TRUE)
)),
NOT("Form" = CONTEXT("ViewType"))
)

App Formula for column FIRMA_REGISTRADA (Signature)

IF(
ISBLANK(
ANY(SELECT(
TarColaboradores[COLAB_FIRMA], ([ID_DNI] = [_THISROW].[ID_DNI]), TRUE)
)
),
[_THISROW].[FIRMA_MANUAL],
ANY(SELECT(TarColaboradores[COLAB_FIRMA], ([ID_DNI] = [_THISROW].[ID_DNI]), TRUE))
)

2) FIRMA_MANUAL

Show_If expression for column FIRMA_MANUAL (Yes/No)

AND(
ISBLANK(
ANY(
SELECT(
TarColaboradores[COLAB_FIRMA],
([ID_DNI] = [_THISROW].[ID_DNI]),
TRUE
)
)
),
"Form" = CONTEXT("ViewType")
)

Required_If expression for column FIRMA_MANUAL (Yes/No)

ISBLANK(
ANY(
SELECT(
TarColaboradores[COLAB_FIRMA],
([ID_DNI] = [_THISROW].[ID_DNI]),
TRUE
)
)
)

Con esos cambios, el usuario al momento de registrar el tareo del personal, le permite jalar la firma si es que estuviera registrada de la Tabla TarColaboradores y mostrarla en FIRMA_REGISTRADA y si no está registrada la firma permite registrar una firma en el campo FIRMA_MANUAL.

Donde tengo muchos problemas es en tratar de automatizar que, si en caso no hay firma registrada y el usuario hace una "FIRMA MANUAL", se copie el texto(Ejm: img/firmas_colab/70480227.COLAB_FIRMA.170037.png) del campo "FIRMA MANUAL"  de tipo Signature de la tabla TarRegDiario y lo actualize en el campo "COLAB_FIRMA"  de tipo Signature de la Tabla TarColaboradores.

Creando Actions:

Screenshot_77.png

New value for column COLAB_FIRMA (Signature):

LOOKUP(
MAXROW(
"TarRegDiario",
"_RowNumber",
[ID_DNI] = [_THISROW].[ID_DNI]
),
"TarRegDiario",
"_RowNumber",
"FIRMA_MANUAL"
)

Screenshot_78.png

List of row references for action 'TarColaboradoresFirmaUpdate' (List)

SELECT(
TarColaboradores[COLAB_FIRMA],
[ID_DNI] = [_THISROW].[ID_DNI]
)

Pero me da el siguiente error:

The value '=SELECT( TarColaboradores[COLAB_FIRMA], [ID_DNI] = [_THISROW].[ID_DNI] )' of data action 'TarColaboradoresFirmaUpdate' does not match the expected type List or its expected type details

Alguna ayuda de como poder solventar el error, qué tendría que corregir o si debo usar otro método? 😪.


@renzogutierrez wrote:

se vinculan por medio del DNI del colaborador


¿Se vinculan cómo? La columna [ID_DNI] en la tabla TarColaboradores debe ser de tipo Ref apuntando a la tabla Colaboradores. Si tienes esta referencia establecida correctamente bastará utilizar el código que te he enviado y no vas a necesitar todas esas SELECT()s y LOOKUP()s . 

Te aconsejo primero establecer la referencia correctamente y leer también estos dos guías que te beneficiarán mucho. 

References between tables - AppSheet Help
Dereference expressions - AppSheet Help

Hola Joseph, sí se vinculan vía el campo ID_DNI, este campo lo tengo como clave Primaria en la tabla "TarColaboradores" y en la tabla TarRegDiario, lo tengo como de tipo Ref para que el usuario pueda seleccionar o buscar el DNI y jalar la data de la tabla en automático. En la tabla TarRegDiario pueden haber varios DNIs dado que es un registro diario, osea su relación es de 1 a Varios.

Screenshot_79..png

 

 

 

TarRegDiario? Esta es nueva. 

Por favor muestra las columnas de las tres tablas y cómo se relacionan. También sería conveniente decirme los errores que saltaron utilizando el código original. Gracias.

Solo son 2 tablas:

1) TarColaboradores: Tiene la info personal de los trabajadores, su documento de identidad que es el ID_DNI y que lo tengo como Unique y clave primaria, y la firma del colaborador

2) TarRegDiario: esta tabla es como el control de labores/actividades del personal de forma diaria, yo tengo un slice para mostrarme la data solamente generada del día en los formularios, lo primero era ver como si en caso no esté registrada la firma del colaborador, de la opción de registrarla por medio de un form que interactura con esta base y luego mediante una acción actualize en la base colaboradores la firma.

En el código original hasta donde recuerdo tenía errores de Mismatch list con el tipo Signature o con tipo Text, entendía que no podía comparar una lista de valores con un campo de tipo texto, traté de usar la función IN para buscar un valor dentro de una lista, pero al final sobrepasé los errores usando ANY con los Select e indicando la tabla de origen.

1) TarColaboradores

TarColaboradores.png

2) TarRegDiario

TarRegDiario1.pngTarRegDiario2.png

Disculpa, son los columnas en la app que necesito ver. 

Hola, te copio la captura de las tablas:

Screenshot_1.pngScreenshot_2.pngScreenshot_3.png

Screenshot_4.png

 

 

Hola a todos, ¿habrá alguna forma de poder copiar la firma manual de TarRegDiario de tipo Signature para que se actualice de forma automática en la tabla Tar Colaboradores?

Top Labels in this Space