![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Какие компоненты лучше использовать для доступа к MS SQL ?
DmiSb © (2006-06-05 15:20:00)Нормально ли работают ADOExpress в Delphi7
Still Swamp (2006-06-06 10:54:00) [1]SP - это не Query.... SP - это StoredProcedure.... StoredProcedure это не select * from....
Still Swamp (2006-06-06 10:52:00) [2]
> > А вопросы задаю потому что удодский FB с которым мы сидим
> > уже неделю видете ли не возвращает DataSet из SP.
> Вот, блин, всю жизнь возвращал, а в июне 2006 - перестал.
Да расскажите же КАК из SP на FB получить DataSet. Благодарен буду. Очень Очень....
saxon (2006-06-06 10:48:00) [3]
> ANB © (05.06.06 20:14) [37]
Он, как я понял, другим запросом (или чтото в этом роде) достает.
Ega23 (2006-06-06 08:44:00) [4]
> А вопросы задаю потому что удодский FB с которым мы сидим
> уже неделю видете ли не возвращает DataSet из SP.
Вот, блин, всю жизнь возвращал, а в июне 2006 - перестал.
ANB (2006-06-05 20:14:00) [5]
> Я в них пхаю параметры, получаю результат
А список параметров где берешь ?
Still Swamp (2006-06-05 18:39:00) [6]Я НЕ пишу select * from....
Как бы так эдак еще объяснить почему это хорошо и чем для меня оно критично.
Я вызываю процедуры по именам не заботясь о том что они делают. Я в них пхаю параметры, получаю результат. Но мне не надо писать, ах дорогой sql, а не соблаговолите ли вы считать следущий вызов выборкой из таблицы, а вот еще я тут собрался insert подсуетить.
Это не проблемы клиента.
saxon (2006-06-05 18:34:00) [7]
> select * from SP (....)
Ну вот это я тож считаю ерундой, но как есть так есть!! Я так понимаю они для совместимости не хотят улучшать.
А по поводу запросов к базе, то в любом случае либо это sql текст либо SP без 'select * from' все равно это запрос (к слову о терминологии).
Still Swamp (2006-06-05 18:29:00) [8]Но даже при всем при этом, этот гемморой будет сто раз оправдан, так как много много много строк кода не придется ставить на уши.
Still Swamp (2006-06-05 18:27:00) [9]А вопросы задаю потому что удодский FB с которым мы сидим уже неделю видете ли не возвращает DataSet из SP. И теперь мне надо для него написать более интелектуальную обертку, которая сначала по имени процедуры получит список параметров, заполнит их подготовит для принятия значений из клиента, построит этот пресловутый select * from SP (....) и сделает все остальное.
Это меня изрядно веселит.
Still Swamp (2006-06-05 18:24:00) [10]Кто ошибся? Программисты?
DLL написал я. Но там тоже нет ни одной строчки запросов. Текст могу предоставить.
saxon (2006-06-05 18:21:00) [11]
> Still Swamp (05.06.06 18:04) [27]
Интересно (на самом деле), такой схемы работы еще не встречал.
А как вы поступаете если, например ктото из вас ошибся. Кто виноват?
Как вы организовываете взаимодействие?
> Still Swamp (05.06.06 18:04) [30]
А кто пишет - эту самую длл для работы с базой? Если не ты - то почему ты вопросы задаешь?
Still Swamp (2006-06-05 18:17:00) [12]Вызов SP для меня не запрос, и exec_tra-ta-ta я не пишу, чему и была столь непопулярная ветка про FB где мне пытались объяснить мое криворучие. Так как:
ADOStoredProc.ProcName:='MyProcName';
ADOStoredProc.Prepare;
ADOStoredProc.ParamByName(ляляляля....
ADOStoredProc.ExecProc;
Ну или если надо то
ADOStoredProc.Open;
Лялляля
ADOStoredProc.Close;
a:=ADOStoredProc.ParamByName(ляляляля....
Вот ведь смех то. И ни одна лялечка в проекте ничего более не знает ни про какие SQL сервера, адо и прочее. И даже в рабчих формах DB.pas то не подключается.
Ega23 (2006-06-05 18:10:00) [13]
> запросы - не моя забота. это забота SQLщиков. Моя забота
> вызывать SP, пхать туда параметры на свое усмотрение и получать
> данные на свое усмотрение. Что не прочиталось - не проблемы
> клиента. Длл работы с базой ругнется, клиент подставит умолчальные
> данные которые я хочу видеть и напишет фразу по вопросам
> звоните туда то и прочитайте ошибку. SQLщики далее думают
> что делать.
А вызов SP - не запрос? Или ты сам текст запроса (exec s_tra-ta-ta @param1='ля-ля-ля' и т.п.) тоже откуда-то получаешь?
> А что касается маленкого проекта... так как показала практика,
> любой маленький проект если он нужен - превращается в большой
Небогатая, однако, практика...
Still Swamp (2006-06-05 18:06:00) [14]А что касается маленкого проекта... так как показала практика, любой маленький проект если он нужен - превращается в большой, а если не нужен, так что с ним возиться... с ненужным то проектом.
Still Swamp (2006-06-05 18:04:00) [15]вообще никак не привязан.
запросы - не моя забота. это забота SQLщиков. Моя забота вызывать SP, пхать туда параметры на свое усмотрение и получать данные на свое усмотрение. Что не прочиталось - не проблемы клиента. Длл работы с базой ругнется, клиент подставит умолчальные данные которые я хочу видеть и напишет фразу по вопросам звоните туда то и прочитайте ошибку. SQLщики далее думают что делать.
у меня в тексте ни одного запроса нет на весь проект. ни одного. и меня это так радует.
Ega23 (2006-06-05 18:00:00) [16]
> У тебя, похоже, классическая трёх-звенка.
Щас тут подумал - не совсем классическая. К запросам привязан сильно.
Ega23 (2006-06-05 17:59:00) [17]
> А это называется найти себе проблему и смело с ней бороться.
> ..
Ну почему? У тебя, похоже, классическая трёх-звенка. Иногда действительно очень мощная и очень нужная вещь. Но в случае простой клиент-серверной системы - это как из пушки по воробьям.
Т.е. что хочу сказать: вариант имеет право на существование. Вот только пользовать его тоже надо с умом, а не при каждом удобно случае.
ИМХО.
Still Swamp (2006-06-05 17:53:00) [18]Ах да... если переписать эту самую обертку длл на другие компоненты, так всеь проэкт славно переезжает на новый обменник данными.
Still Swamp (2006-06-05 17:49:00) [19]А это называется найти себе проблему и смело с ней бороться...
Я это делаю так...
Оборачиваю в DLL доступ к базе.
В начале проэкта: CreateDatabase.... создается объект соединение с базой но само соединение не устанавливается, выясняется логин пароль пользователя и запоминается, там коммандные строки и прочие настройки.
По надобности
p:=CreateProc('PROCNAME');
PutParam(p,'param1') .... заполняю параметры
Open(p) .... установка соединения, и проч... все в DLL
ReadData(p)
Close(p)
Да волшебное правило.... делаю один в одной DLL. Если надо несколько связных элементов на форме - вызываю эти DLL, с нужными калбэками, с выводом в TWinControl. А заботится о создании подключений пот множество датасетов - уже одна ado.dll.
Ega23 (2006-06-05 17:44:00) [20]В двух словах:
Есть Master-грид, "смотрит" на один набор данных.
Есть detail-грид, "смотрит" на второй набор данных.
При перемещению по первому гриду выполняется подзапрос для второго грида.
Ну, например, в первом НД - заказы зв какой-то день, во втором - что конкретно было заказано в данном заказе.