Главная страница
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.035 c
1-1107948544
Polad
2005-02-09 14:29
2005.02.27
Шифрование логина и пароля


14-1107718995
Hypercube
2005-02-06 22:43
2005.02.27
Уравнение n-степени


11-1092312948
hunn
2004-08-12 16:15
2005.02.27
лицензия


1-1108287373
Porecla
2005-02-13 12:36
2005.02.27
Открыть папку ! помогите.


14-1107525215
Hypercube
2005-02-04 16:53
2005.02.27
KOffice и Quanta Plus