Сообщения: 6483Зарегистрирован: 25 окт 2004, 18:07
видео пока не смотрел, но прошу объяснить - зачем видео, если есть статья и примеры? Вы творите что-то новое? Или сейчас люди неспособны ничего кроме ютуба воспринимать?
Сообщения: 3Зарегистрирован: 26 апр 2012, 06:03
Вот что получилось. Качество неважное, слишком большой размер экрана снимал. Если будет интересно кому, могу переснять. В grid IBExpert не отображается время, появляется только если grid перевести в режим Form View, после того как установить и снять Null.Проблема в формате даты.Продолжаю копать ....
Сообщения: 1219Зарегистрирован: 21 мар 2005, 11:48
Разработчик Firebird
Ты ошибся везде :а) в БД объявил пар-ры ф-ций с BY DESCRIPTOR, но твой код работает не c дескрипторами.б) где cdecl ?в) дата\время не передаются в UDF как doubleЧитай статью ещё раз, внимательно и полностью, а не по диагонали через слово
Сообщения: 3Зарегистрирован: 26 апр 2012, 06:03
Последний раз редактировалось 30 апр 2012, 13:25, всего редактировалось 1 раз.
Здравствуйте,WinXP SP3, FireBird 2.5 Version 5.2.1.26351, IBExpert 2012.04.18, Delphi 7.0 (Build 8.1) Цель: Научиться писать собственные UDF функции. Например для начала написал две простые UDF функции для обработки даты.Код: function fDateOf (Value: double): double;begin Result := DateOf(Value);end;function fTimeOf(Value: double): double;begin Result := TimeOf(Value);end;Проверяю, работает. Подключаю UDF в IBExpertКод: SET SQL dialect 3;--/*DROP external FUNCTION Date_Of;DROP external FUNCTION Time_Of;--*/DECLARE external FUNCTION Date_OfDOUBLE precision by DESCRIPTORreturns DOUBLE precision by DESCRIPTORentry_point 'fDateOf' module_name 'date_time_udf';DECLARE external FUNCTION Time_OfDOUBLE precision by DESCRIPTORreturns DOUBLE precision by DESCRIPTORentry_point 'fTimeOf' module_name 'date_time_udf'; Пробую запустить Код: select date_of((select current_date from rdb$database)) as "Дата" ,time_of((select current_time from rdb$database)) as "Время"from rdb$database rows 1Результат Тот же самый результат если Код: select date_of(0) as "Дата" ,time_of(0) as "Время"from rdb$database rows 1Догадываюсь, что проблема м.б. в разных форматах - Delphi TDateTime = double - FireBirdКод: type TIBDate = integer; TIBTime = Cardinal; TIBTimeStamp= packed record Date: TIBDate; Time: TIBTime; end;Вопрос :Если только в этом причина, то почему select date_of(0) as "Дата" возвращает null ?В чем мои ошибки ? Буду рад прочитать замечания.Статью читал, но что-то наверное не понял. Как говорится... если что, извините Убедительно прошу "не мазать мордой лица по фейсу", типа: погугли, а слабо почитай доку и т.д. Спасибо. Николай.
• Страница 1 из 1
Форум по InterBase, Firebird и Yaffil
iBase.ru Forum • Просмотр темы - Учусь писать udf
Комментариев нет:
Отправить комментарий