![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Хочется чтобы IBserver фиксировал дату и время создания записи. [D7, IB6.x]
kolos_rus © (2005-09-16 11:58:00)Пишу на DELPHI 7 библиотеку:
library Ib;
uses
SysUtils,
Classes;
const
MSecsPerDay10 = MSecsPerDay * 10; IBDateDelta = 15018; type
PIBDateTime = ^TIBDateTime;
TIBDateTime = record
Days, // Date: Days since 17 November 1858
MSec10: Integer; // Time: Millisecond * 10 since midnigth
end;
{$R *.res}
function ServerDate(var ServerIBDateTime: TIBDateTime): PIBDateTime; cdecl; export;
var
DateTime: TDateTime;
DelphiDays: Integer;
begin
DateTime := Now;
DelphiDays := Trunc(DateTime);
with ServerIBDateTime do
begin
Days := DelphiDays + IBDateDelta;
MSec10 := Trunc((DateTime - DelphiDays) * MSecsPerDay10);
end;
Result := @ServerIBDateTime;
end;
exports
ServerDate;
begin
end.
Подключаю к базе UDF
DECLARE EXTERNAL FUNCTION DATETIME
TIMESTAMP
RETURNS TIMESTAMP FREE_IT
ENTRY_POINT 'ServerDate' MODULE_NAME 'ib.dll'
Создаю тригер
SET SQL DIALECT 3;
SET NAMES WIN1251;
SET TERM ^ ;
CREATE TRIGGER DVIG_BI0 FOR DVIG
ACTIVE BEFORE INSERT POSITION 0
AS
begin
/* Trigger text */
new.data_vvoda = datetime('01.01.1900 10:10');
end
^
SET TERM ; ^
Дату заносит, а вот время нет.
kolos_rus (2005-09-16 12:18:00) [1]Спасибо! Работает!!! Я не знал, что есть встроенная функция.
Sergey13 (2005-09-16 12:11:00) [2]А как ты в тригер '01.01.1900 10:10' передашь?
new.data_vvoda = current_timestamp;
Вроде работает.