Главная страница
    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.043 c
1-1107962986
Dmitry_04
2005-02-09 18:29
2005.02.27
Эффект плавного изменения вида формы.


6-1103012316
Архитектор
2004-12-14 11:18
2005.02.27
InternetSetOption


14-1107932513
Vlad Oshin
2005-02-09 10:01
2005.02.27
а ля Задорнов. Просто...потому что достало...


3-1106810558
Julia
2005-01-27 10:22
2005.02.27
Перенос данных из одного поля в другие


1-1107968992
UVV
2005-02-09 20:09
2005.02.27
Чтение из Com-порта





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский