Autor |
Mensaje |
Miembro
Ocasional
|
#1 Publicado: 8 Jun 2022 22:02
Saludos
Por favor si me ayudan...
Estoy empezando con filemaker, vengo de programar en lenguajes que usan como base SQL, y en estos yo hago una consulta y el resultado lo presento en un campo de visualización, pero no tengo que crear ningun campo adicional en la base de datos.
Quisiera hacer algo similar en Filemaker: presentar la suma de ventas entre dos fechas, obtenido mediante una sentencia SQL, para cada uno de los clientes que tengo seleccionados con filtros. Pero sin crear un campo sumario!!!
Gracias
Si este mensaje te ha servido de ayuda dale tu voto
, si quieres penalizarlo
Hernando
|
Moderador

|
#2 Publicado: 9 Jun 2022 14:43 - Editado por: flusheddata
Hola. En FileMaker tendrías que crear un campo de cálculo (no almacenado) para que la consulta ExecuteSQL se actualice con el parámetro correspondiente a cada registro. Al cambiar de registro se actualiza en tiempo real.
Existen variables globales, pero tendrías que actualizar su valor con el cambio de registro con una nueva consulta mediante un activador de guión OnRecordLoad.
Yo suelo usar el primer enfoque, ya que no es necesario guión alguno.
Y si no quieres poner el campo de cálculo en la presentación siempre puedes insertarlo como campo de fusión: <<NombreDelCampo>>.
Sls.
Si este mensaje te ha servido de ayuda dale tu voto
, si quieres penalizarlo
Hay 10 tipos de personas: las que saben binario y las que no.
Windows 10 + FileMaker Pro 11/19
|
Miembro
Ocasional
|
#3 Publicado: 9 Jun 2022 21:25
Mil gracias por tu respuesta flushddata
En realidad no quisiera aumentar campos en la base de datos y por ello quisiera irme por poner un campo de fusión.
Pero como hago con el campo de fusión, cuando pongo un campo de fusión este se llena con una variable global, $$variable, y cuando cambio de registro, la variable al ser global, en cada registro se actualiza pero pone el valor del calculo del ultimo registro.
Por favor me puedes indicar como hacerlo
Gracias
Si este mensaje te ha servido de ayuda dale tu voto
, si quieres penalizarlo
Hernando
|
Moderador

|
#4 Publicado: 9 Jun 2022 21:50
Hernando: En realidad no quisiera aumentar campos en la base de datos y por ello quisiera irme por poner un campo de fusión. En FileMaker Pro un campo de fusión no es algo distinto de un campo. Se llama campo de fusión a una de las formas de insertarlo en la presentación y que solo se usa a modo de Label o Caption. Ejemplo: Escribir <<MiCampo>> en una presentación es la versión de fusión de insertar el campo MiCampo en la misma.
Una variable global tendrá el mismo valor para todo el archivo por lo que no hace lo que quieres a no ser que crees un guión que se ejecute con el activador OnRecordLoad y que hará la consulta SQL poniendo el resultado en la variable.
En FileMaker tratar de crear campos solo para datos es un error típico. Se usan campos para muchas más cosas.
Asimismo ten en cuenta que FileMaker Pro no es un lenguaje de programación; es un gestor de bases de datos relacionales altamente programable que tiene sus propias reglas.
Sls.
Si este mensaje te ha servido de ayuda dale tu voto
, si quieres penalizarlo
Hay 10 tipos de personas: las que saben binario y las que no.
Windows 10 + FileMaker Pro 11/19
|
Miembro
Ocasional
|
#5 Publicado: 10 Jun 2022 19:36
Gracias flusheddata por tomarte el tiempo de ayudarme!!!
ME ha quedado claro el uso del campo de fusión, gracias por aclararme
Por otro lado he realizado la implementación con el campo de fusión con un valor calculado por SQL, pero en la Presentación que desplego varios registros a la vez, tengo que dar un click en el registro para que se dispare OnRecordLoad y corra el guion.
Como puedo hacer para que se llenen todos los campos a la vez?
Gracias
Si este mensaje te ha servido de ayuda dale tu voto
, si quieres penalizarlo
Hernando
|
Moderador

|
#6 Publicado: 11 Jun 2022 10:32 - Editado por: flusheddata
Hernando: Por otro lado he realizado la implementación con el campo de fusión con un valor calculado por SQL Se puede usar un campo normal con una auto introducción de cálculo o un campo de cálculo. Son dos cosas totalmente distintas. Mientras un campo normal con resultado de cálculo introduce un valor el cual puedes modificar tecleando en el campo o mediante un guión, un campo de cálculo tendrá un valor fijo y no modificable de ninguna manera. Ese valor fijo queda establecido sin necesidad de guión alguno. Un campo de cálculo tiene dos comportamientos distintos. Almacenado y no almacenado. Si quieres un valor de cálculo que se evalúe solo una vez (durante la creación del registro por ejemplo) tienes que dejarle desmarcada la opción No almacenar los resultados de los cálculos. Calcular cuando sea necesario. Si por el contrario quieres que se evalúe cada vez que se redibuja la ventana o haya un cambio en cualquier operando del cálculo, marca la opción. En tu caso, con la consulta ExecuteSQL deberías marcarlo.
Entiendo que tu SQL usa parámetros (los argumentos opcionales de la función) que hacen referencia a algún campo del registro actual (ya sea por ruptura del literal o usando el operador de inserción ?). Con un campo de cálculo, marcando que el resultado sea tipo texto por cierto, no tienes que hacer nada, ni usar guión siquiera. Al cambiar de registro se mostrará el resultado de la consulta directamente. El único punto en contra es que si usas un listado con muchos registros afectará bastante al rendimiento. Para eso recomiendo no usar este tipo de cálculos no almacenados en listados, sino en formularios de un único registro cada vez.
Hay bastante confusión con estos conceptos, aunque en la ayuda del programa lo aclara bastante bien.
Espero que este ladrillo te haya servido.
Sls.
Si este mensaje te ha servido de ayuda dale tu voto
, si quieres penalizarlo
Hay 10 tipos de personas: las que saben binario y las que no.
Windows 10 + FileMaker Pro 11/19
|
Miembro
Ocasional
|
#7 Publicado: 24 Jun 2022 19:16
Gracias Flushedata por tu explicación
Si me sirve mucho gracisa nuevamente
Si este mensaje te ha servido de ayuda dale tu voto
, si quieres penalizarlo
Hernando
|
Moderador

|
#8 Publicado: 25 Jun 2022 18:18
Si quieres sube tu archivo sin datos sensibles poniendo en él un texto que explique lo que necesitas. A ver si te podemos ayudar sobre el propio archivo. Sls.
Si este mensaje te ha servido de ayuda dale tu voto
, si quieres penalizarlo
Hay 10 tipos de personas: las que saben binario y las que no.
Windows 10 + FileMaker Pro 11/19
|
Moderador

|
#9 Publicado: 13 Jul 2022 17:45
Hola. Suponiendo que te encuentres en la tabla CLIENTE y quieras el sumario de ventas de la tabla VENTA
ExecuteSQL ( " select sum(Importe) from VENTA where FechaVenta >=? and FechaFenta <=? and IdCliente =? " ; "" ; "" ; CLIENTE::FiltroFechaInicio ; CLIENTE::FiltroFechaFin ; CLIENTE::IdCliente )
Suponiendo que en la tabla VENTA existan los campos Importe e IdCliente. Si no existe este último siempre podrás usar un JOIN. En esta función de FileMaker solo existen left join (por defecto) e inner join.
Sls.
Si este mensaje te ha servido de ayuda dale tu voto
, si quieres penalizarlo
Hay 10 tipos de personas: las que saben binario y las que no.
Windows 10 + FileMaker Pro 11/19
|