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

Вниз

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

 
Vlad ©   (2003-10-16 13:03) [0]

Господа, выручайте. Первый раз столкнулся с UDF, до этого никогда не использовал, и вот уже час бьюсь над проблемой. Короче говоря поставил Yaffil Classic Server. В папке UDF лежат файлы ib_udf.dll и скрипт ib_udf.sql. В IBExpert запускаю этот скрипт, он создает мне функции, вроде нормально. Но сами функции не работают, т.е. при попытке использовать их в sql предложениях возникает ошибка: "Invalid data type, length or value. Function SubStr could not be matched". Такая же ошибка, если файл ib_util.dll убрать с диска совсем. Такое впечатление, что Yaffil не находит эту dll.
Подозреваю, что проблема пустяковая, но как ее бороть - не пойму. Подскажите, плз.
Заранее спасибо.


 
Danilka ©   (2003-10-16 13:08) [1]

Vlad © (16.10.03 13:03)
перезапусти сервер


 
Vlad ©   (2003-10-16 13:25) [2]

>Danilka © (16.10.03 13:08) [1]
Перезапустил, не помогло :(


 
Johnmen ©   (2003-10-16 13:44) [3]

1. UDF - в нужную папку
2. Имена ф-ий в декларации регистрозависимы.


 
Vlad ©   (2003-10-16 13:49) [4]

>Johnmen © (16.10.03 13:44) [3]
UDF - лежит в папке с:\Program Files\Yaffil\UDF\, т.е. там, куда его инсталлятор положил. Я собственно ничего не менял. Имена функций были прописаны в скрипте, к-рый прилагался к этой библиотеке (ib_util.sql), думаю, что в нужном регистре. Я просто запустил этот скрипт.
Но не работает :(


 
Val ©   (2003-10-16 13:49) [5]

>Danilka © (16.10.03 13:08) [1]
firebird у меня без перезапуска нормально их увидел.


 
Danilka ©   (2003-10-16 13:52) [6]

[5] Val © (16.10.03 13:49)
угу, у меня тоже. :))
зачем я только раньше его перезапускал, балбес. :))


 
Val ©   (2003-10-16 13:53) [7]

>Vlad © (16.10.03 13:49) [4]
Имена функций были прописаны в скрипте, к-рый прилагался к этой библиотеке (ib_util.sql), думаю, что в нужном регистре. Я просто запустил этот скрипт.

думаю, что Johnmen © (16.10.03 13:44) [3]
имел ввиду, что в своем тексте sql вы должны писать их в таком же регистре, как они объявлены.


 
mOOx_ ©   (2003-10-16 13:55) [8]

Где-то читал, что длл с УДФ должны лежать в папке
C:\Program Files\Firebird\UDF
Эту папку можно как-то переопределить, но помоему, проще все кинуть туда. Попробуй.


 
Val ©   (2003-10-16 13:59) [9]

>mOOx_ © (16.10.03 13:55) [8]
у него Yaffil


 
Vlad ©   (2003-10-16 14:00) [10]

Val © (16.10.03 13:53) [7]
думаю, что Johnmen © (16.10.03 13:44) [3]
имел ввиду, что в своем тексте sql вы должны писать их в таком же регистре, как они объявлены.


Все равно не помогает

>mOOx_ © (16.10.03 13:55) [8]
Ну так у меня таже папка, которую ты назвал, только вместо FireBird - Yaffil, что по-моему справедливо :)

Может нужны какие-то доп. настройки, напр. в переменной PATH или еще что-нибудь ?


 
Val ©   (2003-10-16 14:02) [11]

>Vlad © (16.10.03 14:00) [10]
проверил, такая ошибка возникает при неверном использовании параметров функции.
ваш запрос, пожалуйста.


 
Johnmen ©   (2003-10-16 14:04) [12]

М.б. скрипт неверен ?

Д.б. так
DECLARE EXTERNAL FUNCTION substr
CSTRING(80), SMALLINT, SMALLINT
RETURNS CSTRING(80) FREE_IT
ENTRY_POINT "IB_UDF_substr" MODULE_NAME "ib_udf";


 
Vlad ©   (2003-10-16 14:06) [13]

Val © (16.10.03 14:02) [11]
Да все что угодно, напр:
select SUBSTR("abcdefg",1,1) from RDB$Database

Johnmen © (16.10.03 14:04) [12]
Скрипт один-в-один сходится.


 
mOOx_ ©   (2003-10-16 14:07) [14]

Сори :). Забыл что Yaffil тоже из того же семейства :). Кстати, да. Запросик бы глянуть.


 
Val ©   (2003-10-16 14:10) [15]

м.б. стоит зарегистрировать dll с помощью regsvr32?


 
Vlad ©   (2003-10-16 14:12) [16]

>Val © (16.10.03 14:10) [15]
Это ж не COM-объект, зачем его регистрить ?


 
Danilka ©   (2003-10-16 14:13) [17]

[13] Vlad © (16.10.03 14:06)
интересно, а почему она ругается "SubStr", а не "SUBSTR", как в запросе и не "substr" как в скрипте?
может в яффи есть такая встроенная функция?

у меня, кстати, запрос прокатил без проблем.


 
Val ©   (2003-10-16 14:14) [18]

>Vlad © (16.10.03 14:12) [16]
мда.а перенос в системные каталоги пробовали?


 
Vlad ©   (2003-10-16 14:17) [19]

Может кто нибудь посмотреть, у кого установлен IB/FB/YA, описание переменной PATH, там должно быть что-нибудь по этому поводу ?
Danilka © (16.10.03 14:13) [17]
Это я неверно написал. В тексте ошибки была в верхнем регистре.
С другими ф-циями тоже самое

Val © (16.10.03 14:14) [18]
Пробовал. Не помогает


 
Danilka ©   (2003-10-16 14:20) [20]

[19] Vlad © (16.10.03 14:17)
у меня в path только путь к каталогу bin.
но у меня фиребирд 1.5
и все работает, что скрип для substr-а, что запрос


 
Val ©   (2003-10-16 14:23) [21]

у меня тоже к bin, но я сам его добавлял когда-то, это точно.


 
Vlad ©   (2003-10-16 14:24) [22]

Добавил путь к BIN - не помогло.


 
Val ©   (2003-10-16 14:28) [23]

а что возвращает запрос по SUBSTR:
SELECT a.RDB$FUNCTION_NAME, b.RDB$ARGUMENT_POSITION,
b.RDB$MECHANISM, b.RDB$FIELD_TYPE,
b.RDB$FIELD_SCALE , b.RDB$FIELD_LENGTH, b.RDB$FIELD_SUB_TYPE
FROM RDB$FUNCTIONS a, RDB$FUNCTION_ARGUMENTS b
WHERE (a.RDB$FUNCTION_NAME = b.RDB$FUNCTION_NAME) and
((a.RDB$SYSTEM_FLAG = 0) OR (a.RDB$SYSTEM_FLAG IS NULL))
and (b.RDB$ARGUMENT_POSITION <> a.RDB$RETURN_ARGUMENT)
and a.RDB$FUNCTION_NAME = "SUBSTR"


 
Vlad ©   (2003-10-16 14:32) [24]

>Val © (16.10.03 14:28) [23]
Запрос вернул три строчки с именем функции SUBSTR, ну и еще параметры (пока не разобрался, что означают)


 
Val ©   (2003-10-16 14:35) [25]

>Vlad © (16.10.03 14:32) [24]
этот запрос определяет входные параметры данной функции, а вот на результаты интересно бы посмотреть, для сравнения.


 
Vlad ©   (2003-10-16 14:38) [26]

Поля в том порядке, к-ром ты перечислил.
Если картинка не съедет, то вот так:

SUBSTR 1 1 40 0 80 null
SUBSTR 2 1 7 0 2 null
SUBSTR 3 1 7 0 2 null


 
Val ©   (2003-10-16 14:41) [27]

Все совпадает, нормально функция в базу занеслась. Вариантов, честно говоря, нет :(


 
Vlad ©   (2003-10-16 14:44) [28]

При стандартной установке gds32.dll в каком каталоге должна находится, в BIN или в SYSTEM(32) ?
У меня почему-то в обеих местах присутствует.


 
Danilka ©   (2003-10-16 14:46) [29]

[28] Vlad © (16.10.03 14:44)
Вообще-то эту библиотеку юзает клиент.
Можешь положить ее в папку с клиентом.


 
Val ©   (2003-10-16 14:48) [30]

у меня нет ее в бине.


 
Vlad ©   (2003-10-16 14:54) [31]

Мужики, во дела !
Из Дельфей попробовал - работает!
Из IBExpert никак!
Что за фигня ???


 
Val ©   (2003-10-16 14:57) [32]

>Vlad © (16.10.03 14:54) [31]
ну знаете ли :) надо было вообще-то из консоли пробовать :(


 
Vlad ©   (2003-10-16 15:07) [33]

А че с Expert"ом делать то ? Выкинуть чтоли ? :)))
Ладно, мужики, всем спасибо. Это я балбес. Надо было раньше догадаться из Дельфей попробовать.


 
Danilka ©   (2003-10-16 15:09) [34]

[31] Vlad © (16.10.03 14:54)
странно, конечно, а у тебя в каталоге с экспертом есть эта самая gds32.dll?
может там у тебя библиотека от IB или FB а не от дятла?
в любом случае, попробуй в каталог с экспертом записать эту библиотеку из каталога Yaffi\bin


 
Vlad ©   (2003-10-16 15:14) [35]

>Danilka © (16.10.03 15:09) [34]
Нет, FB и IB я никогда не ставил.
А gds32.dll лежит в bin и system32. Вот только какой из них он использует не знаю....
Кстати, поместил в папку с самим Expert"ом - не помогло.


 
mOOx_ ©   (2003-10-16 15:59) [36]

Vlad, может хватит пехать гдс везде, куда можно. Положи его только в директорию Выней (или в систем32) и дело с концами. Кому понадобиться, найдут (я имею ввиде приложения). Я так понимаю, что раз из делфей все работает, то обсуждение закрыто :)


 
Vlad ©   (2003-10-16 16:14) [37]

>mOOx_ © (16.10.03 15:59) [36]
Закрыто, закрыто. П ехать действительно, хватит :)))


 
mOOx_ ©   (2003-10-16 18:19) [38]

А использует он, кстати, то, что рядом с ехе :) 100%



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

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

Наверх




Память: 0.55 MB
Время: 0.037 c
1-41475
Unn
2003-10-23 20:14
2003.11.13
куча окошек


3-41022
Nikolai_S
2003-10-15 18:41
2003.11.13
Как обновить только одну конкретную запись в TADOTable?


1-41182
MaG
2003-11-01 19:17
2003.11.13
Поверх всех окон


3-41046
GAlexis
2003-10-24 14:54
2003.11.13
Управление пользователями


1-41632
Matrex
2003-10-25 21:29
2003.11.13
RichEdit