Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.042 c
1-1108021065
KingDog
2005-02-10 10:37
2005.02.27
вот знаете что то при n = 31 не считает


3-1106890112
Leon1
2005-01-28 08:28
2005.02.27
Нумерация документов


1-1108447918
Dr. Genius
2005-02-15 09:11
2005.02.27
Об использовании DynamicSkinForm и BusinessSkinForm


14-1107851672
Ega23
2005-02-08 11:34
2005.02.27
Кто уже получил счёт за "коммуналку"?


1-1108027862
Димон
2005-02-10 12:31
2005.02.27
align





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский