Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.02.27;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.026 c
3-1106914763
Rule
2005-01-28 15:19
2005.02.27
Непонятная ситуация с FIBPlus


1-1108254422
Дмитрий В. Белькевич
2005-02-13 03:27
2005.02.27
Глюки system.pas


3-1106850647
sergeymist
2005-01-27 21:30
2005.02.27
добавление записи в таблицу


14-1107847788
gn
2005-02-08 10:29
2005.02.27
Фильтры больше не смогут защитить пользователей от спама


1-1108105435
Zloy
2005-02-11 10:03
2005.02.27
Удаление иконки с трея