![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
SQL [D6, MSSQL]
masik © (2002-06-07 18:27:00)Господа, подскажите...
Есть Query с SQL
Update
SOME TABLE
set [Order]=:OrderPos
Where ID=:ID
в цикле производится установка
qSetOrder.Connection.BeginTrans;
for i:=0 to LV.Items.Count-1 do
With qSetOrder do begin
Parameters.ParamByName("ID").Value:=StrToInt(LV.Items[i].SubItems[0]);
Parameters.ParamByName("OrderPos").Value:=LV.Items[i].Index;
ExecSQL;
Close;
end;
qSetOrder.Connection.CommitTrans;
qSetOrder.Connection.Close;
в принципе все работает нормально, но есть таблица на которой после первого Updat-а ExecSQL виснет(других открытых кверей. работающих с данной таблицей вроде нет).
masik (2002-06-14 16:27:00) [1]Наконец сообразил, у меня оказывается в параллельной транзакции производилось обновление записи, и соответственно DIDLOCK.
Н-да, енто не Interbase...
masik (2002-06-14 15:17:00) [2]Проблема втом, что я ее сам понять не могу. У меня нескоолько таблиц которые подходят под описание (по полям ID и Order). В других таблицах данный код работает без проблем, а в ентой... после первого прохода цикла, т.е. на втором ExecSQL, виснет... вобщем вылезает "Time Out".
Kaban (2002-06-14 15:10:00) [3]Sorry, зарапортовался. Какие тогда проблемы
try
qSetOrder.Connection.BeginTrans;
for i:=0 to LV.Items.Count-1 do
With qSetOrder do begin
Parameters.ParamByName("ID").Value:=StrToInt(LV.Items[i].SubItems[0]);
Parameters.ParamByName("OrderPos").Value:=LV.Items[i].Index;
ExecSQL;
end;
qSetOrder.Connection.CommitTrans;
except
qSetOrder.Connection.RollBack;
end;
qSetOrder.Connection.Close;
masik (2002-06-14 15:07:00) [4]Чегго можно вернуть если в процедуре один Update
Kaban (2002-06-14 14:40:00) [5]Согласен с oleg_dov
Close, SQL.Clear, SQL.Add в этом примере нужны как корове пятая нога.
Узнать
>>чего происходит при выполнении запроса
можно если процедура возвращает какое-нибудь значение
masik (2002-06-14 14:30:00) [6]Опять вернулся к наболевщему вопросу.
Никак не могу с ентой заразой справиться, как можно определить чего происходит при выполнении запроса.
oleg_dov (2002-06-08 10:39:00) [7]а зачем после ExecSQL Close стоит?
помоему он там не нужен как и SQL.Clear, SQL.Add
masik (2002-06-07 20:46:00) [8]и не помогает
masik (2002-06-07 19:34:00) [9]Где, прикаждом прохождом прохождении цикла?
Val (2002-06-07 19:13:00) [10]попробуйте обновлять текст запроса SQL.Clear .. SQL.Add