Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2006.10.01;
Скачать: [xml.tar.bz2];

Вниз

Ошибка при откате БД   Найти похожие ветки 

 
Couter Terranist   (2006-07-26 01:07) [0]

Во время отката бази (Rollback) викидывает ошибку "Data Structure corruption". Commit оно нормально воспринимает. В даной трансакции производятсяя пару запросов и операции с новосозданной таблицей (временной). НО таблица создаётся перед началом трансакции а удаляется после.

---------------------------
Debugger Exception Notification
---------------------------
Project Project1.exe raised exception class EDBEngineError with message "Data structure corruption.". Process stopped. Use Step or Run to continue.
---------------------------
OK   Help  
---------------------------


 
Sergey13 ©   (2006-07-26 08:12) [1]

А что, Парадокс разве работает с транзакциями?


 
Desdechado ©   (2006-07-26 11:30) [2]

Sergey13 ©   (26.07.06 08:12) [1]
AFAIR, пытается. Вроде ограничение было на количество записей. Но врать не буду, совсем склероз замучил...

> с новосозданной таблицей (временной).
И зачем на временную таблицу ролбаки и коммиты? Дропни ее и все дела.


 
atruhin ©   (2006-07-26 17:41) [3]

Ограничение на кол-во записей при откате.


 
Anatoly Podgoretsky ©   (2006-07-26 20:39) [4]

Опять парадокс и порушеная структура.


 
Couter Terranist   (2006-07-27 11:08) [5]

> И зачем на временную таблицу ролбаки и коммиты? Дропни ее и все дела.
Результат работы (размышления пользователя выставлять сегодня Петрова в третью бригаду (вписал) или же не выставлять (опять стёр)) с временной таблицей добавляесться в основную таблицу - а она приличного размера и ненужные операции будут подтормаживать (+применяю фильтры).

> Ограничение на кол-во записей при откате.
А я хотел одну трансакцию на временную таблицу+запросы для ее заполнения+запись в основную. И дествительно, можно только на запись... Спасибо


 
Romkin ©   (2006-07-27 11:21) [6]

У db в транзакции - не более 256 записей. Ошибки не будет, но что откатится, а что нет - неизвестно, только по факту. Кстати, транзакции только dirty read. Так что нафиг, отдельная таблица - и все ручками.


 
Couter Terranist   (2006-07-27 11:54) [7]

> [6] Romkin ©   (27.07.06 11:21)
В чем недостатки dirty read? У моей программы все виды работы з базой (назначение, з/п, отчет и т.п) разбросаны по TabSheet"ам. В каждом на OnShow и OnHide отркиваесться и закрывается трансакция. Будут неполадки при таком розкладе?


 
Виталий Панасенко   (2006-07-27 12:23) [8]

Зря ты с транзакциями под Парадоксом связался. толку от них - 0.Упадет система, вырубится свет - все изменения будут внесены все равно. Транхакции в Парадоксе - блокируются записи на изменение. и в каком-то служебном файле держатся  старые данные.


 
Couter Terranist   (2006-07-27 12:56) [9]

> [8]
Так как лутче уберечся в Парадоксе от неполного заполнения таблиц и стохранения целосности при падении системы?

Скажем как уберечь этот кусок кода?

NewFlowForm.TempTable1.First;
   for i:=1 to NewFlowForm.TempTable1.RecordCount do
    begin
     DataModule2.StoreOutProdTable.Append;
     DataModule2.StoreOutProdTable.FieldByName("OP_Date").AsDateTime:=NewFlowForm.Tem pTable1.FieldByName("Date").AsDateTime;
     DataModule2.StoreOutProdTable.FieldByName("OP_Zm").AsInteger:=NewFlowForm.TempTa ble1.FieldByName("Zmina").AsInteger;
     DataModule2.StoreOutProdTable.FieldByName("OP_Arthicul").AsString:=NewFlowForm.T empTable1.FieldByName("Arthicle").AsString;
     DataModule2.StoreOutProdTable.FieldByName("OP_Count").AsFloat:=NewFlowForm.TempT able1.FieldByName("Count").AsFloat;
     DataModule2.StoreOutProdTable.FieldByName("OP_Rem").AsString:=NewFlowForm.TempTa ble1.FieldByName("Remark").AsString;
     DataModule2.StoreOutProdTable.Post;
     DataModule2.StoreTable.Edit;
     DataModule2.StoreTable.Locate("S_Arthicul",NewFlowForm.TempTable1.FieldByName("A rthicle").AsString,[]);
     if DataModule2.StoreTable.FieldByName("S_Count").AsFloat-NewFlowForm.TempTable1.FieldByName("Count").AsFloat>=0
      then DataModule2.StoreTable.FieldByName("S_Count").AsFloat:=DataModule2.StoreTable.Fi eldByName("S_Count").AsFloat-NewFlowForm.TempTable1.FieldByName("Count").AsFloat
      else
       begin
        beep;
        MessageDlg("Ââåäåíà ê³ëüê³ñòü âèâåçåíîãî òîâàðó ""+NewFlowForm.TempTable1.FieldByName("Arthicle").AsString+" "+NewFlowForm.TempTable1.FieldByName("Name").AsString+"" ïåðåâèùóº éîãî íàÿâíó ê³ëüê³ñòü íà ñêëàä³!",mtError,[mbOk],0);
        DataModule2.StoreOutProdTable.EnableControls;
        Exit;
       end;
     DataModule2.StoreTable.Post;
     NewFlowForm.TempTable1.Next;
    end;


 
Виталий Панасенко   (2006-07-27 14:47) [10]

ПРАКТИЧЕСКИ НИКАК. "Садись" на более продвинутые движки - MS Access, FireBird. У этих "ребят" транзакции настоящие, в любом(ну, практически в любом - падает все абсолютно. зависит от условий окружающего мира :- )) случае будет обеспечена целостность данных.


 
Couter Terranist   (2006-07-27 16:16) [11]

стоит ли браться за передеку проги с парадокса на акцесс (с смысле обьема роботы)?


 
Виталий Панасенко   (2006-07-27 16:28) [12]

это уже тебе решать. Ты работал с БДЕ, а придется через АДО.. и многое другое. тут встречный вопрос - а так ли это все важно, что даже для временной таблицы что-то нужно выдумывать ? Один совет - пропробуешь клиент-сервер(FireBird например) от локалок будешь плеваться в дальнейшем. Даже для написания простого платежного поручения...:-))


 
Desdechado ©   (2006-07-28 15:50) [13]

>> И зачем на временную таблицу ролбаки и коммиты?
> Результат работы (размышления пользователя
Размышления - это процесс, а не результат. А процесс принято хранить в локальном кэше компонетов. А вот когда размышляния закончились, нажата кнопка "сохранить", тогда сохраняем в БД, в нормальную, а не временную таблицу.


 
Виталий Панасенко   (2006-07-28 15:59) [14]


> Desdechado ©   (28.07.06 15:50) [13]
> >> И зачем на временную таблицу ролбаки и коммиты?
> > Результат работы (размышления пользователя
> Размышления - это процесс, а не результат. А процесс принято
> хранить в локальном кэше компонетов. А вот когда размышляния
> закончились, нажата кнопка "сохранить", тогда сохраняем
> в БД, в нормальную, а не временную таблицу.

В принципе, вариант !!! Сделать кешированные обновления - тогда временная таблица нахрен не нужна !



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2006.10.01;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.49 MB
Время: 0.011 c
2-1158153312
VitV
2006-09-13 17:15
2006.10.01
Delphi не запускается.


2-1157741398
lobach
2006-09-08 22:49
2006.10.01
Компонент


15-1158050254
Mutnauq
2006-09-12 12:37
2006.10.01
Работа с QuantumGrid


2-1158221993
ников
2006-09-14 12:19
2006.10.01
куда пропала форма ?


2-1157374144
parovoZZ
2006-09-04 16:49
2006.10.01
Когда много панелей





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