Текущий архив: 2008.04.20;
Скачать: CL | DM;
Вниз
Transaction приводит в исключению Найти похожие ветки
← →
delphinub (2008-03-26 17:36) [40]Добавил еще одно соединение с MS SQL.. заработало вот так:
procedure TExcel.Change(FileName: String);
var i: integer;
begin
DataModule1.OpenQuery.SQL.Clear;
DataModule1.OpenQuery.SQL.Add("SELECT * FROM modifies");
DataModule1.SQLClon.Params.Assign(DataModule1.MSSQLConnection.Params);
DataModule1.SQLClon.Connected:=true;
DataModule1.MSSQLConnection.StartTransaction(TransDescr);
try
DataModule1.OpenQuery.Open;
while not DataModule1.OpenQuery.Eof do
begin
CompName := DataModule1.OpenQuery.Fields[1].AsString;
Value := DataModule1.OpenQuery.Fields[0].AsString;
qua := DataModule1.OpenQuery.Fields[2].AsInteger;
DataModule1.SQLClon.StartTransaction(TD);
DataModule1.Clon.SQL.Clear;
//MainForm.Label1.Caption:="UPDATE "+CompName+" SET quantity=quantity-"+IntToStr(qua)+" WHERE name="""+Value+"""";
DataModule1.Clon.SQL.Add("UPDATE "+CompName+" SET quantity=quantity-"+IntToStr(qua)+" WHERE name="""+Value+"""");
DataModule1.Clon.ExecSQL();
DataModule1.SQLClon.Commit(TD);
DataModule1.OpenQuery.Next;
end;
DataModule1.MSSQLConnection.Commit(TransDescr);
except
ShowMessage("ÊÓ!");
DataModule1.MSSQLConnection.Rollback(TransDescr);
end;
// exc.SaveFile(FileName);
DataModule1.OpenQuery.Close;
end;
озонал необходимость перехода на ADO
← →
delphinub (2008-03-26 18:37) [41]покопавшись еще часик внедрил таки решение во весь остальной код и отладил. Всё работает. Спасибо всем, в особенности Johnmen!
← →
Anatoly Podgoretsky © (2008-03-26 21:12) [42]> delphinub (26.03.2008 15:18:13) [13]
Уже не смущает, просто имена похожие и мне показалось что это один и тот же компонент. Про dbexpress ничего не скажу, просто это неудачная на мой взгляд технологие, хотели как БДЕ и получилось как БДЕ
← →
sniknik © (2008-03-26 21:35) [43]> заработало вот так:
на одну команду делать свою транзакцию бессмысленно, она и так в ней выполняется...
> CompName := DataModule1.OpenQuery.Fields[1].AsString;
>
> ... UPDATE "+CompName+" SET ...
куча таблиц с именами хранящимися в данных еще одной таблицы? просто чудо а не структура базы... чудо юдо...
но даже в таком виде просто непочатый край для оптимизации...
вместо того чтобы тянуть на клиента полностью данные "FROM modifies", и потом по одной посылать кучу команд, лучше вытащить только имена таблиц (CompName), а абдейт строить групповой для всех записей одной таблици (с объединением), время обработки сократится на порядки. или тоже самое делать в процедуре (транзакцию поверх всех изменений делать. типа раз выполнилось то для всех таблиц, нет значит ни для одной).
а еще лучше структуру пересмотреть. (так чтобы вообще на все потребовался всего лиш 1 (один) запрос. хотя это и неинтересно наверное будет. транзакцию некуда присобачить... но она в общем то и в том виде, что сейчас бессмысленна)
Страницы: 1 2 вся ветка
Текущий архив: 2008.04.20;
Скачать: CL | DM;
Память: 0.54 MB
Время: 0.017 c