![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Too many record locks on table. [D6, dBase, FoxPro]
RDen © (2005-02-01 09:22:00)Переношу данные из стринггрида в таблицу, но при использовании транзакции, появляется сабж. Подскажите пож. почему?
з.ы. происходит, если кол-во строк в гриде >= 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;
RDen (2005-02-01 09:57:00) [1]>Johnmen (01.02.05 09:48) [3]
Согласен
Всем спасибо!
Digitman (2005-02-01 09:56:00) [2]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;
ЮЮ (2005-02-01 09:48:00) [3]Учитывая
http://delphi84.valuehost.ru/cgi-bin/forum.pl?id=1107233168&n=1
создается впесатление, что ты считываешь таблицу в стрингрид, а при сохранении сначала чистишь её, а затем вставляешь записи из стрингрида. Причем, учитывая большой временной промежуток, когда таблица может просто "накрыться" во время этих манипуляций, пытаешься сделать это в транзакции.
Совет 1: Перейди к DBGrid и мене садисстским методам работы с таблмцами
Совет 2. Забудь о транзакциях на этом движке. На крайний случай Кэшированный запрос.
Johnmen (2005-02-01 09:48:00) [4]>RDen (01.02.05 09:22)
Твой код очень прикольный :)
Есть ощущение, что написано без головы... Особенно это
Form1.Table1.Edit;
Form1.Table1.Post;
Digitman (2005-02-01 09:30:00) [5]
> RDen (01.02.05 09:22)
никуда не денешься... известное ограничение для dbf-движков .. разбивай единую транзакцию на несколько, в каждой из которых добавляй/удаляй/модифицируй не более 99 записей