Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Хочется чтобы 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;
Вроде работает.


Наверх

Титульная страница Поиск, карта сайта Написать письмо