Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.06.12;
Скачать: CL | DM;

Вниз

UDF   Найти похожие ветки 

 
Belkova   (2003-05-21 14:38) [0]

Мастера Delphi! Помогите с округлением. После каждой операции с числами требуется произвести округление, почти все операции производятся на сервере. Нужно создать UDF, что и сделала, но оказалось, что для локального сервера UDF не применяется. Как быть? Проводить округление из приложения, займет очень много времени или перейти на удаленный сервер (понимая , что это глупый вопрос, но как зарегистрировать удаленный сервер?) или можно что-то еще? Заранее благодарна.


 
Zacho ©   (2003-05-21 14:46) [1]


> Belkova (21.05.03 14:38)

Смотри статьи и наборы UDF на http://www.ibase.ru/develop.htm и http://www.ibase.ru/d_udf.htm
И нет никакого "локального" или "удаленного" (соответственно, и "регистрировать" сервер не нужно, что-то ты путаешь) сервера, есть просто разные способы подключения, а работоспособность UDF от этого никак не зависит.


 
Belkova   (2003-05-21 22:11) [2]

Спасибо за ссылки, все посмотрела, но видимо что-то я недопонимаю. Объявляю в IB функцию след. образом,
DECLARE EXTERNAL FUNCTION ROUND_BANK
DOUBLE PRECISION
RETURNS DOUBLE PRECISION BY VALUE
ENTRY_POINT "ROUND_Bank" MODULE_NAME "SqlFloat.dll"
все проходит нормально, затем выполняю
Update Price
Set Price_R=ROUND_Bank(Price_R)
на что выдает сообщение об ошибке следующего содержания
Invalid request BLR at offset 57
function ROUND_Bank is not defined
module name or entrypoint could not be found
почему Ib не видит функцию?


 
Zacho ©   (2003-05-21 22:38) [3]

Насколько я помню, в IB6 UDF должны находиться только в каталоге \UDF\
И расширение dll указывать не обязательно (или вообще не нужно, не помню)
Кстати, на www.ibase.ru есть разнообразные UDF для округления


 
Belkova   (2003-05-21 23:19) [4]

Попробовала готовую UDF, скопировала файл библиотеки в каталог \UDF\ , функцию объявила таким образом:
DECLARE EXTERNAL FUNCTION UDF_FORMATFLOAT
DOUBLE PRECISION
RETURNS DECIMAL(15,2) BY VALUE
ENTRY_POINT "ib_TrueFormatFloat"
MODULE_NAME "FMTFLOAT";
Выполняю Update Price
Set Price_R=UDF_FORMATFLOAT(Price_R)
и снова та же ошибка
Invalid request BLR at offset 16
function UDF_FORMATFLOAT is not defined
module name or entrypoint could not be found
Statement: update price_u set price_r=udf_formatfloat(price_r)
Что не так?


 
Виталий Панасенко   (2003-05-22 08:32) [5]

Может, сервер перезапустить надо ?


 
Digitman ©   (2003-05-22 09:43) [6]

соглашения о символьной регистрочувствительности при экспорте-импорте библиотечных ф-ций соблюдены ?


 
Johnmen ©   (2003-05-22 09:46) [7]

Где-то что-то не так... Вариантов масса...
Обычно к нормальным библиотекам UDF сторонних разработчиков прилагаются хелпы, доки и примеры в стиле "для домохозяек". :)

А вообще изначальная проблема с необходимостью округления АБСОЛЮТНО надуманна !


 
Belkova   (2003-05-22 12:18) [8]

Соглашения о символьной регистрочувствительности соблюдены. Всем спасибо. Буду смотреть.


 
Belkova   (2003-05-22 13:09) [9]

Еще раз всем спасибо. Все работает, требовалось перезапустить сервер.



Страницы: 1 вся ветка

Текущий архив: 2003.06.12;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.013 c
1-34876
Seldon
2003-05-30 22:43
2003.06.12
MDI


3-34720
Rafik
2003-05-23 14:01
2003.06.12
Не соедениться с MSSQL


3-34711
Ann
2003-05-22 09:10
2003.06.12
кодировка


9-34665
Ricks
2002-12-30 14:08
2003.06.12
Вопрос к знатокам Direct3D


7-35079
lipskiy
2003-04-07 01:06
2003.06.12
Как отличить, кто закрывает программу, юзер или винда?