Necesito una función que me devuelva el día de la la semana de una fecha dada, hice esta DLL
library IBExt;
uses
SysUtils,
Classes;
{$R *.res}
Type
TIBDate = Record
Day: LongInt;
Frac: LongInt;
end;
function DiaSemana(var Date: TIBDate): SmallInt; cdecl;
begin
Result := Date.Day mod 7 + 4;
end;
exports
DiaSemana;
begin
end.
Luego la uso dentro de un Trigger para probarla
CREATE TABLE "PRUEBA"
(
"FECHA" DATE,
"DIA_SEMANA" SMALLINT
);
SET TERM ^;
CREATE TRIGGER "CAL_DIA" FOR "PRUEBA"
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
NEW.DIA_SEMANA = DiaSemana(NEW.FECHA);
END
^
COMMIT WORK ^
SET TERM;^
Pero cuando intento insertar un campo a la tabla Prueba se produce un error y se pierde la conexión con la BD. Tengo la sensación que el problema está en como InterBase representa el tipo de dato "Date", tal vez esté incorrecta la representación
TIBDate = Record
Day: LongInt;
Frac: LongInt;
end;
Si alguien sabe como se hace, o tiene algunas DLL que resuelvan este problema, ruego me ayuden
(Estoy usando Delphi Enterprice 7 y el Interbase que viene con él)