Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.09.2012, 09:44   #1
Ericnex
Форумчанин
 
Регистрация: 07.04.2010
Сообщений: 218
По умолчанию Работа с UDF

У кого есть опыт работы с UDF-функциями? Грубо говоря мне надо написать DLL и затем объявить ее на сервере Interbase. Доселе с такими функциями не работал кто может подсобите программным кодом.

Создать UDF-функцию, которая позволяет строковое значение заключить в символы «», например, Спорт – «Спорт». В клиентском приложении осуществить выборку записей из таблицы Оптовый магазин, изменив написание Название магазина.
Ericnex вне форума Ответить с цитированием
Старый 13.09.2012, 10:35   #2
maLoy*508
Форумчанин
 
Аватар для maLoy*508
 
Регистрация: 28.03.2008
Сообщений: 672
По умолчанию

Пиши DLL-ку с нужной функцией, регистрируй в базе и используй...
Как писать DLL-ки статей много...
DLL добавляешь в папку с UDF (находится в каталоге с ИБ)...
Добавляешь в базу нужную UDF...
---
работаю с firebird, но думаю там различий быть не должно
maLoy*508 вне форума Ответить с цитированием
Старый 13.09.2012, 11:05   #3
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Проще же на клиенте сделать вычисляемое поле и, программно отредактировав наименование, поместить его в него. Или в запросе это же можно сделать без udf. Можно конечно и udf, но без опыта использования таких возможностей это отличный способ завалить SQL-сервер
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 13.09.2012, 11:14   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

небольшой оффтоп...

Аватару
Коллега, я на 99% уверен, что у автора темы создание UDF - это учебное задание. Тут уже прийдётся писать UDF (в DLL), деваться ему некуда...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 13.09.2012, 16:57   #5
Ericnex
Форумчанин
 
Регистрация: 07.04.2010
Сообщений: 218
По умолчанию

Да UDF надо создать для учебных целей. Покажите одной строкой как можно программно сделать вот это:

Цитата:
которая позволяет строковое значение заключить в символы «», например, Спорт – «Спорт»
Ericnex вне форума Ответить с цитированием
Старый 13.09.2012, 17:28   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Код:
s:='Спорт';
s:=Format('«%s»',[s]);
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 14.09.2012, 07:35   #7
Ericnex
Форумчанин
 
Регистрация: 07.04.2010
Сообщений: 218
По умолчанию

Сделал все вот так, проверьте на наличие ошибок. Пока программа не работает.

DLL:
Код:
library Project2;

uses
  SysUtils,
  Classes;

function MyDLL (S: string) : String; cdecl; export;

{$R *.res}

begin
Result:=Format('«%s»',[s]);
end;
exports MyDLL index 1;
begin
end.
Объявление функции на сервере:
Код:
DECLARE EXTERNAL FUNCTION MYY
    CSTRING(20)
RETURNS CSTRING(20)
ENTRY_POINT 'NewDLL' MODULE_NAME 'MyDLL';
В клиентском приложении
Код:
procedure TForm1.Button26Click(Sender: TObject);
begin
datamodule2.Q6.Close;
datamodule2.Q6.SQL.Clear;
datamodule2.Q6.SQL.Text:='select Nazvanie from OptMagazin where MYY=s';
datamodule2.Q6.Open;
end;
Ericnex вне форума Ответить с цитированием
Старый 14.09.2012, 07:50   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
select MYY(Nazvanie) from OptMagazin...
И вообще-то фраза Пока программа не работает. никому ни о чем ничего не говорит.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 14.09.2012, 09:23   #9
Ericnex
Форумчанин
 
Регистрация: 07.04.2010
Сообщений: 218
По умолчанию

Цитата:
select MYY(Nazvanie) from OptMagazin...
Такой SQL-запрос программа не понимает...
Ericnex вне форума Ответить с цитированием
Старый 14.09.2012, 09:26   #10
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Такой SQL-запрос программа не понимает...
значит Вы свою DLL не подключили к серверу. Возможно, не положили DLL туда, куда нужно, возможно, не выполнили объявление функции на сервере, возможно, не перезапустили сервер..
но результат один - ваш сервер ничего не знает про функцию MYY...
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с UDF-функциями Ericnex БД в Delphi 2 06.09.2012 05:57
Firebird.Не могу подключить UDF. -COREY- БД в Delphi 0 08.05.2012 15:15
UDF Cartman18 БД в Delphi 0 06.05.2010 21:52
воспроизведение формата ячейки с помощью UDF андей Microsoft Office Excel 0 11.12.2009 17:40
как подключить udf библиотеку к базе данных shurik_7866 БД в Delphi 0 06.07.2007 00:04