![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вопрос по ХП [Firebird] [D6]
Koala © (2004-09-17 12:44:00)Что лучше, для каждой ХП в ДатаМодуль кидать отдельный StoredProcedure или кинуть парочку StoredProcedure и динамически вызывать каждую процедуру....
Может не сильно понятно выразился перефразирую...
vv_fran (2004-09-19 19:20:00) [1]А грамотнее всего - это положить в дм всего один TQuery и вызывать проседуры через SELECT. При этом во всех ХП должен быть suspend; Для выполняемых TFIBQuery, для возвращаемых - TFIBDataSet.
Petr V. Abramov (2004-09-19 16:32:00) [2]> Deniz © (18.09.04 11:22) [9]
Если датамодулей 3 шт и точно известно, что искать нужно именно в датамодулях, тогда еще ничего. Если их много - тогда совсем плохо.
Deniz (2004-09-19 08:38:00) [3]> Sergey_Masloff (18.09.04 20:34) [10]
> Deniz © (18.09.04 11:22) [9]
> А еще можно так:
procedure GetReults(SPName: string; Params: TParams);
Один раз и никаких оверлоад. Можно даже еще проще при желании.
Согласен, но тогда Params придется заполнять в том месте, где вызывается процедура, а тогда получается > Petr V. Abramov © (17.09.04 14:17) [8]но только с параметрами, и если, например, список параметров поменялся, то придется тупо просматривать код. А в моем примере компилятор сам обругает на несоответствие параметров, и скажет в каком месте, но это все на любителя, кто как привык, тот так и делает, а кто учится, тот наступит на свои грабли, а без этого никак.
ЗЫЖ Если в DataModule ~70 ХП и еще + DataSet'ы - это как-то утомляет.
Sergey_Masloff (2004-09-18 20:34:00) [4]Deniz © (18.09.04 11:22) [9]
А еще можно так:
procedure GetReults(SPName: string; Params: TParams);
Один раз и никаких оверлоад. Можно даже еще проще при желании.
Deniz (2004-09-18 11:22:00) [5]> Petr V. Abramov © (17.09.04 14:17) [8]
Ну почему же размазаны, если грамотно написать. Все обработки в DataModule например вот так:
procedure GetReults(SPName: string; Param: string); overload;
procedure GetReults(SPName: string; Param: integer); overload;
procedure GetReults(SPName: string; Param: TDate); overload;
procedure GetReults(SPName: string; Param1: String; Param2: Integer); overload;
...
Громоздко конечно, но если у многих ХП одинаковые типы параметров и они не возвращают набор данных, может помочь.
Petr V. Abramov (2004-09-17 14:17:00) [6]При втором варианте имена SP будут размазаны по коду, и отследить зависимости клиетской части от серверной будут практически невозмжно ( кроме тупого просмотра всего кода).
Роман Снегирев (2004-09-17 13:29:00) [7]короче делай как тебе удобнее, если ты точно знаешь что у тебя ХП 70 и никак больше то почему бы не навешать их и в дизайнтайме ИМХО
Sergey13 (2004-09-17 13:26:00) [8]2[5] Роман Снегирев (17.09.04 13:23)
>вообше ни на что не повлияет
Скорее всего повлияет на количество ошибок. 8-)
Роман Снегирев (2004-09-17 13:23:00) [9]на размер exe-шника это никак не повлиет да и вообше ни на что не повлияет. Это просто не есть хороший стиль программирования.
Koala (2004-09-17 13:20:00) [10]
> [3] Роман Снегирев (17.09.04 12:55)
> Кстати тебе не всегда подойдет StoredProcedure, для запросов,
> возвращающих наборы данных надо использовать FIBDataSet
Это да... я уже вычитал в книге... но хотелось бы узнать как лучше(у меня > 70 ХП используется), и если менять динамически размер exe-шника уменьшится, но насколько увеличится время выполнения процедур?
Что делать лучше, посрветуйте ЗНАТОКИ!!!
Роман Снегирев (2004-09-17 12:55:00) [11]ну вообщем по барабону, если их (ХП) немного и влом програмно менять их свойства то я бы повесил для каждой ХП одельный компонет. Кстати тебе не всегда подойдет StoredProcedure, для запросов, возвращающих наборы данных надо использовать FIBDataSet
Koala (2004-09-17 12:50:00) [12]
> [1] Роман Снегирев (17.09.04 12:47)
> смотря что за ХП, с параметрами или без, какие компоненты
> мспользуешь и пр.
ХП с параметрами и без, компоненты FIBPlus 5.3
Роман Снегирев (2004-09-17 12:47:00) [13]смотря что за ХП, с параметрами или без, какие компоненты мспользуешь и пр.