Форум: "Базы";
Текущий архив: 2005.02.27;
Скачать: [xml.tar.bz2];
ВнизToo many record locks on table. Найти похожие ветки
← →
RDen (2005-02-01 09:22) [0]Переношу данные из стринггрида в таблицу, но при использовании транзакции, появляется сабж. Подскажите пож. почему?
з.ы. происходит, если кол-во строк в гриде >= 100;
Form1.Table1.Database.TransIsolation := tiDirtyRead;
Form1.Table1.Database.StartTransaction;
Try
For j:=0 to StringGrid1.RowCount - 2 do
begin
For i:=0 to StringGrid1.ColCount - 1 do
begin
Form1.Table1.Edit;
Form1.Table1.FieldByName(Form1.Table1.Fields[i].FieldName).AsString:=
StringGrid1.Cells[i, j + 1];
end;
Form1.Table1.Append;
end;
Form1.Table1.First;
Form1.Table1.Edit;
Form1.Table1.Post;
Form1.Table1.Database.Commit;//принимаем изменения
Except
Application.MessageBox("Программе не удаётся сохранить данные.", "Ошибка",MB_ICONERROR);
Form1.Table1.Database.Rollback; //откат изменений
end;
← →
Digitman © (2005-02-01 09:30) [1]
> RDen (01.02.05 09:22)
никуда не денешься... известное ограничение для dbf-движков .. разбивай единую транзакцию на несколько, в каждой из которых добавляй/удаляй/модифицируй не более 99 записей
← →
ЮЮ © (2005-02-01 09:48) [2]Учитывая
http://delphi84.valuehost.ru/cgi-bin/forum.pl?id=1107233168&n=1
создается впесатление, что ты считываешь таблицу в стрингрид, а при сохранении сначала чистишь её, а затем вставляешь записи из стрингрида. Причем, учитывая большой временной промежуток, когда таблица может просто "накрыться" во время этих манипуляций, пытаешься сделать это в транзакции.
Совет 1: Перейди к DBGrid и мене садисстским методам работы с таблмцами
Совет 2. Забудь о транзакциях на этом движке. На крайний случай Кэшированный запрос.
← →
Johnmen © (2005-02-01 09:48) [3]>RDen (01.02.05 09:22)
Твой код очень прикольный :)
Есть ощущение, что написано без головы... Особенно этоForm1.Table1.Edit;
Form1.Table1.Post;
← →
Digitman © (2005-02-01 09:56) [4]with Form1 do
For j:=1 to StringGrid1.RowCount - 1 do
begin
Table1.Append;
For i:=0 to StringGrid1.ColCount - 1 do
Table1.Fields[i].Value := StringGrid1.Cells[i, j];
Table1.Post;
end;
← →
RDen (2005-02-01 09:57) [5]>Johnmen (01.02.05 09:48) [3]
Согласен
Всем спасибо!
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2005.02.27;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.055 c