![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Query
Ral'f © (2007-06-14 09:53:00)Вопрос по структуре запроса:
ситуация следующая - программа выполняет последовательно несколько процедур, результат выполнения каждой необходимо сохранить в таблице Access. И вот, вроде бы, Таблица одна и та-же, везде один и тот-же INSERT, только разные значения переменных. Как можно организовать в такой ситуации сохранение в БД новых записей? что будет лишним?
if Query.Active then Query.Close;
...
Query.Open;
...
Query.Close;
(2007-06-14 12:21:00) [1]Удалено модератором
Anatoly Podgoretsky (2007-06-14 12:16:00) [2]Параметры всегда полезны, хотя бы потому что вероятность повторения запросов далеко отлична от нуля.
Sergey13 (2007-06-14 11:29:00) [3]> [9] Desdechado © (14.06.07 11:23)
> чем конструирование SQL из огрызков.
Так это если конструирование есть. Значит тут параметры более чем оправданы. А если нет конструирования?
Я не в качестве спора, просто в качестве ремарки на очень уж обобщенное утверждение.
Desdechado (2007-06-14 11:23:00) [4]Чтоб избежать, например, таких граблей
http://www.delphimaster.ru/cgi-bin/forum.pl?id=1181798599&n=18
И просто гораздо читабельнее код, чем конструирование SQL из огрызков.
Sergey13 (2007-06-14 11:22:00) [5]Кстати для Аксеса (мне так кажется) параметры вообще только помогают избежать ошибок формата данных.
Sergey13 (2007-06-14 11:20:00) [6]> [6] Desdechado © (14.06.07 11:16)
А смысл? Я не говорю, что не надо параметры использовать, но одиночный неповторяющийся запрос все равно будет разбираться полностью и все равно ляжет в кеш запросов (если есть таковой).
Desdechado (2007-06-14 11:16:00) [7]ЮЮ © (14.06.07 10:31) [5]
Если совсем правильно, то параметрические запросы использовать следует всегда, а не только когда один и тот же запрос.
Ral'f (2007-06-14 10:31:00) [8]Ещё раз спасибо, ЮЮ!!!
ЮЮ (2007-06-14 10:31:00) [9]> когда запрос один и тот-же, чтобы не переписывать всё по несколько разиспользуют параметрические запросы
Ral'f (2007-06-14 10:29:00) [10]> Приведенный код вообще тут никак к вопросу не относится
Всё по книге!
try Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add(...);
Query1.Open;
...
только не написано, - как можно сделать, когда запрос один и тот-же, чтобы не переписывать всё по несколько раз!
ЮЮ (2007-06-14 10:27:00) [11]> что будет лишним?
Всё.
> везде один и тот-же INSERT, только разные значения переменных
Query.SQL.Text := 'INSERT INTO xxx(f1, ..., fn) VALUES (:f1, ..., :fn )';
Query.Parameters[0].Value := ...;
...
Query.Parameters[n-1].Value := ...;
Query.ExecSQL;
...
Query.Parameters[0].Value := ...;
...
Query.Parameters[n-1].Value := ...;
Query.ExecSQL;
Если же Query возвращает НД (коль поминаются Open, Close), то можно просто
Query.Insert; // вставить запись
Query.Fields[0].asXXX := ... // заполнить поля
...
Query.Post; // запомнить изменения - здесь движок и выполнт >везде один и тот-же INSERT, только разные значения переменных
Sergey13 (2007-06-14 10:21:00) [12]> [0] Ral'f (14.06.07 09:53)
> что будет лишним?
Да все. Приведенный код вообще тут никак к вопросу не относится.