Funciones en triggers


([N1] tony diana) #1

Saludos

¿No funcionan las funciones (jo que redundancia) en los triggers verdad? no he encontrado documentación y creo que eso es lo que me está fallando


([N1] tony diana) #2

Si. lo confirmo, no se puede utilizar una función en un trigger

y no se puede utilizar una función desde un proceso incluso fuera de un trigger…

simplemente no funciona.

No lo encontré documentado.


([N1] wikan) #3

No se que estarás haciendo por que no lo explicas pero las funciones, valga la redundancia, funcionan perfectamente.


([N1] tony diana) #4

Una función recibe una serie de parámetros y llama en 3º plano a un proceso, esto para evitar tener que estar escribiendo:

If ( algo, lo que sea )
Crear manejador de objeto ( obj, Proceso STANARRA@Ficheros STA )
Set variable local de objeto ( obj, STAUSU, STAUSU )
Set variable local de objeto ( obj, STA_NARRA_QUE, STA_NARRA_QUE )
Set variable local de objeto ( obj, STAMOD, STAMOD )
Set variable local de objeto ( obj, FRM, FRM )
Set variable local de objeto ( obj, TEXTO, TEXTO )
Disparar objeto ( obj, 3º plano: Servidor (síncrono), )
Get variable local de objeto ( obj, _AUX_NUM, _AUX_NUM )
Set dato de retorno ( _AUX_NUM )

Es mucho más cómodo una función cada vez que necesite esto:

fun:STANARRA@Ficheros STA.dat(Usuario, Qué ha sucedido, Módulo que envia la señal, Fórmula para la narración, Texto a almacenar)

De hecho, es el código anterior es el utilizado en la función STANARRA; mucho más cómodo y sencillo de entender cuando se utiliza en otra parte, ya que la función lo documenta, si se crea con los nombres adecuados…

Si invoco la función dentro de un trigger, no funciona

No contento con eso, me creo una función que da un mensaje en pantalla “HOLA” y lo coloco en el trigger posterior a modificación de cualquier tabla, no funciona…

Ahora en vez de función invoco a un proceso que de un mensaje en pantalla “HOLA”, lo coloco en el trigger posterior a modificación, vuelvo a mirar vAdmin y …

Ahora si aparece el mensaje en el servidor

Por eso digo

¿Cómo funcionan las funciones en los triggers?

Con algo tan simple como un mensaje no lo logro y mi código propuesto no funciona desde una función, si desde un proceso:

Sorpresa, la función si funciona, (jejej que lio) desde un botón en formulario, por ejemplo…


([N1] tony diana) #5

De hecho estoy buscando en códigos en V6, creo que teníamos el mismo problema, pero ahora no estoy seguro


([N1] tony diana) #6

Claro, de momento para resolverlo lo que he hecho es obvio:

If ( isEmpty( CHORRO ) = ~FALSE@Ficheros STA.dat )
// Rem ( Para triggers )
Set ( STAUSU, stringSection(CHORRO, “|”, 0, ~FALSE@Ficheros STA.dat, ~FALSE@Ficheros
STA.dat) )
Set ( STA_NARRA_QUE, stringSection(CHORRO, “|”, 1, ~FALSE@Ficheros STA.dat,
~FALSE@Ficheros STA.dat) )
Set ( STAUSU_EDIT, stringSection(CHORRO, “|”, 2, ~FALSE@Ficheros STA.dat, ~FALSE@Ficheros
STA.dat) )
Set ( TEXTO, stringSection(CHORRO, “|”, 3, ~FALSE@Ficheros STA.dat, ~FALSE@Ficheros STA.dat)
)
If ( 1 )
Crear manejador de objeto ( obj, Proceso STANARRA@Ficheros STA )
Set variable local de objeto ( obj, STAUSU, STAUSU )
Set variable local de objeto ( obj, STA_NARRA_QUE, STA_NARRA_QUE )
Set variable local de objeto ( obj, STAMOD, ~NUM_MODULO@Ficheros STA.dat )
Set variable local de objeto ( obj, FRM, 1 )
Set variable local de objeto ( obj, TEXTO, TEXTO )
Disparar objeto ( obj, 1º plano: Local (síncrono), )
Get variable local de objeto ( obj, _AUX_NUM, _AUX_NUM )

De esta manera llamo al proceso con todo el “chorro” de comandos, pero si, en función, no funciona


([N1] Pepeto) #7

Buenas tardes!

Las funciones en los Triggers de tablas, funcionan perfectamente!!!
Los mensajes claro que no se ven, se ejecutan en el servidor, y los veras a través de vAdmin, los formularios y otros objetos que puedan requerir intervención del usuario tampoco funcionan en 3º plano.
Revisa tu código y lee la documentación de los triggers o mira mas info sobre las funciones.

Aquí tienes mas información:
http://www.ascsl.com/?s=funciones

saludos
José Luis


([N1] tony diana) #8

Eso es justo lo que he dicho, que no funcionan los mensajes tampoco, ya se lo de vadmin, hombre, es como siempre se ha utilizado el debugger para ver que hace el server, con mensajes, tanto en v20 como en v6


([N1] tony diana) #9

Estoy teniendo un comportamiento anómalo, así que el problema está en el código, gracias por contestar y la próxima dejaré que se seque un poco antes de fumármela, gracias


([N1] tony diana) #10

Ya se que sucedió, costó pero se que sucedió.

Tengo los archivos en un directorio que se copia automáticamente con dropbox, bueno aveces esto colapsa o compite con el vServer, y aveces da comportamiento anómalo

costó entenderlo



([N1] tony diana) #11

Pues no es eso…

La función opera perfectamente desde formularios, no opera desde triggers, confirmado


([N1] tony diana) #12

Me doy por vencido, hasta el lunes, me dedicaré a otra cosa el fin de semana


([N1] wikan) #13

Tony las funciones funcionan perfectamente, revisa tu código por que es seguro que funcionan.

If ( <strong>algo, lo que sea </strong>)
Crear manejador de objeto ( obj, Proceso STANARRA@Ficheros STA )

No será la condición para lanzar la función.

PD: Cuidado con las afirmaciones ante de decir que algo no funciona. Mejor primero preguntar, funcionan? me lo pueden verificar?


([N1] tony diana) #14

Me refiero a que confirmado que no me funciona, no, no es mi condición


([N1] tony diana) #15

me estoy volviendo más loco de lo que estoy normalmente, jejeje


([N1] tony diana) #16

[quote quote=49396]Tony las funciones funcionan perfectamente, revisa tu código por que es seguro que funcionan.

If ( <strong>algo, lo que sea </strong>)
Crear manejador de objeto ( obj, Proceso STANARRA@Ficheros STA )

No será la condición para lanzar la función.

PD: Cuidado con las afirmaciones ante de decir que algo no funciona. Mejor primero preguntar, funcionan? me lo pueden verificar?

[/quote]

Gracias por tomarte el tiempo, es un if (1), estoy seguro que no es eso


([N1] tony diana) #17

Costó, pero lo encontré, y la verdad, es terriblemente alarmante…

Un on init server tenía un error, en concreto por una rutina javascript que regeneraba los índices complejos

Cada vez que se arrancaba, se incrementaba el problema…

Hasta que se me produjo un error 1067…

https://velneo.es/foros/topic/vserver-no-inicia-error-1607-respuesta-de-soporte/

Ahora todo funciona, hasta las funciones que no tenían un comportamiento correcto…

Lo que me parece alarmante es que tuviese un comportamiento anómalo hasta que el servidor reventó y que en ningún sitio de vAdmin tuviese un mensaje de error.

El error que si da vAdmin es…

1 2017-01-14T21:17:41 JavaScript Error en script: ReferenceError: Postfix – operator applied to value that is not a reference.

Pero eso ha ocurrido ahora al re instalarlo todo, supongo que dejó de aparecer en algún momento, por que si no lo había visto y por mucho que he mirado en los msg…txt anteriores, no hay ninguno

Lo que si se es que lleva como 3 días produciéndose el error, y hasta que no ha reventado, ha sido un caos

Me preocupa un comportamiento errático no continuo y que dejase de dar el error


([N1] tony diana) #18

JEJEJEJ HOY HASTA EL FORO ME REVIENTA,

repito el texto

Costó, pero lo encontré, y la verdad, es terriblemente alarmante…

Un on init server tenía un error, en concreto por una rutina javascript que regeneraba los índices complejos

Cada vez que se arrancaba, se incrementaba el problema….

Hasta que se me produjo un error 1067….

vServer no inicia: Error 1607

Ahora todo funciona, hasta las funciones que no tenían un comportamiento correcto…

Lo que me parece alarmante es que tuviese un comportamiento anómalo hasta que el servidor reventó y que en ningún sitio de vAdmin tuviese un mensaje de error.

El error que si da vAdmin es…

1 2017-01-14T21:17:41 JavaScript Error en script: ReferenceError: Postfix — operator applied to value that is not a reference.

Pero eso ha ocurrido ahora al re instalarlo todo, supongo que dejó de aparecer en algún momento, por que si no lo había visto y por mucho que he mirado en los msg….txt anteriores, no hay ninguno

Lo que si se es que lleva como 3 días produciéndose el error, y hasta que no ha reventado, ha sido un caos

Me preocupa un comportamiento errático no continuo y que dejase de dar el error