PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → Error en trigger
Error en trigger
Débuté par Raül Vidiella, 08 juil. 2015 10:12 - Aucune réponse
Posté le 08 juillet 2015 - 10:12
Buenos dias

Tengo un procedimiento almacenado en el servidor, el cual se asigna a
varios triggers de fichero. Simplemente lo que hace es guardar un
registro con las modificaciones que se hacen en el fichero al cual le
asignamos el trigger. Simplemente buscamos los datos necesarios y
mediante sql insertamos registro en la tabla de log. Para averiguar el
ID del registro hemos tenido que poner un switch para especificar cual
es el campo que contiene el id segun el fichero en el que estamos. Pues
bien la instruccion "sTableName = MyFile..PhysicalName" funciona
perfectamente en todos los casos y ficheros excepto en el caso del
fichero "COMANDESVENDA" que falla en la inserción de registros, error:
utilización de myfile fuera de un trigger.

Es por no hacer un procedimiento para cada fichero.

Alguna idea ????? os dejo el procedimiento en concreto:

Un saludo y gracias
Raül Vidiella


PROCEDURE TGR_UpdatePR_Log()

// variables del triggers
sFuncio is string = Upper(Left(H.TriggerFunction,3)) // Tipo de acción
que se está ejecutando
sAccio is string = H.Action //Antes o después de las acciones

IF sAccio="A" THEN //Antes de

ELSE //Después de grabar datos
sConsulta is string

//Obtener el nombre(String) del ID de la tabla
sTableName is string
nID is int on 8 bytes

sTableName = MyFile..PhysicalName

SWITCH Upper(sTableName)
CASE "CLIENTS_RISC"
nID=MyFile.ClientsID
CASE "CLIENTS"
nID=MyFile.ClientsID
CASE "ARTICLES"
nID=MyFile.ArticlesID
CASE "PREUS"
nID=MyFile.PreusID
CASE "COMANDESVENDA"
nID=MyFile.ComandesVendaID
OTHER CASE
nID=0
END

// apuntar registro si es el caso
IF nID THEN
sConsulta = "INSERT INTO PR_Log (datahora, usuari, taulaid,
registreid, accion) values ('"+Today()+Now()+"','" +
HRuntimeInfo.Login+"','"+ sTableName +"',"+nID+",'"+ sFuncio +"')"
IF HExecuteSQLQuery(dsPrLogs, hQueryWithoutHFCorrection, sConsulta) THEN
// no passa res
END
END
END


---
avast! Antivirus: Mensaje saliente limpio.
Base de datos de Virus (VPS): 150707-0, 07/07/2015
Comprobado el: 08/07/2015 10:12:05
avast! - copyright (c) 1988-2015 AVAST Software.
https://www.avast.com/antivirus