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

Вниз

Помогите советом, сломалась таблица parodox.   Найти похожие ветки 

 
xim   (2002-03-17 15:47) [0]

Дохожу до определённой записи и возникает сообщение Corrupt file, other then header.
Удалил все файлы с индексами, оставил только .db и .mb.
Открыв эту таблицу в DBD, пытатся её сохранить в галочкой PACK, но выскакивало все то

же сообщение, Save as также не работает! В таблице всего 464 записи.
Во время работы, когда таблица ещё была жива, по непонятным причинам иногда выводилось

сообщение Key Violation, программу пригодилось перегружать.
Есть шансы спасти таблицу? Может быть стоит перейти на Interbase или ADO?


 
sniknik   (2002-03-17 22:25) [1]

Часто ломаются индексы и сами таблици нередко. Спасти таблицу скорей всего можно, чаще частично но только не с помощью Database Desktop, а скорее програмно используя функции Dbi. (у меня получалось). А вот переходить на другую платформу, это дело личных предпочтений, но попробовать стоит.


 
xim   (2002-03-18 09:23) [2]

Кто виноват в поломке таблицы? BDE? paradox?
Какой бы кривой не была моя программа, она не могла сломать всю таблицу, т.к. работает с ней чрез стандартные компоненты.
User в тот злополучный момент просто вставлял новые записи.
На форуме кто-то сказал о какой- то "tutility от Borland",
которая может починить таблицу, но в helpe Delpi ничего такого найти не удалось.
в DBD при просмотре таблицы, начало её видно, конец тоже, но только если я резко ставлю scroll в конец, а если идти к концу последовательно то, как только приближаюсь к
х-дцатой записи, вижу серое поле, scroll в середине, и ни вверх ни вниз не двигается, пока таблицу заново не откроешь. Выдаётя всё то же сообщение
"Corrupt file, other then header, Table: X:\Dir\Table1.db"
Операционка wk2, довольно стабильная, на винте никаких бедов в принципе быть не может, delphi 6 с SP1;
Где найти информацию о функциях dbi?

> но попробовать стоит

Что вы порекомендуете попробовать?
Планируется небольшая(по количеству записей) локальная БД,
но большая по объёму (около 35 Gb), напичканная графикой в BLOB формате.


 
Alexandr   (2002-03-18 09:27) [3]

виновато скорее всего питание.
На втором месте аппаратный сбой в памяти, винде
да и много чего еще. Файловая система-то NTFS?

А ты уверен, что тебе именно база данных нужна? По-моему тут лучше в файлах свои BLOB хранить...


 
deleon   (2002-03-18 10:12) [4]

В составе RX есть такая программка DbExplorer.
Попробуй с помощью нее поремонтировать базу - иногда помогает, она как раз работает на основе tutil32.dll


 
sniknik   (2002-03-18 10:51) [5]

В Delphi просто положи на форму DbGreed,Table,DataSource свяжи их и открой таблицу Это уже больше покажет чем в Database Desktop. Дальше проверь может в таблице есть пропуски или дублированные поля (при имеющихся в таблици автоинкрементных полях это смертельно для индексов - > может быть "Key Violation"). Дальше функция востанавливающая индексы
(просто на кнопку повесь)
Check(DbiRegenIndexes(Table.Handle));
возможно до этой функции любое действие ~(удаление Ctrl+Del) будет давать ошибку.

и под занавес чтобы физически удалить удаленные записи (почистить таблицу)
procedure TForm1.PackTable(Table: TTable);
var
Props: CURProps;
hDb: hDBIDb;
TableDesc: CRTblDesc;
begin
if not Table.Active then raise EDatabaseError.Create("Table must be opened to pack");
if not Table.Exclusive then raise EDatabaseError.Create("Table must be opened exclusively to pack");
Check(DbiGetCursorProps(Table.Handle, Props));
if (Props.szTableType = szPARADOX) then begin
FillChar(TableDesc, sizeof(TableDesc), 0);
Check(DbiGetObjFromObj(hDBIObj(Table.Handle), objDATABASE, hDBIObj(hDb)));
StrPCopy(TableDesc.szTblName, Table.TableName);
StrPCopy(TableDesc.szTblType, Props.szTableType);
TableDesc.bPack := True;
Table.Close;
Check(DbiDoRestructure(hDb, 1, @TableDesc, nil, nil, nil, False));
end else
if (Props.szTableType = szDBASE) then Check(DbiPackTable(Table.DBHandle, Table.Handle, nil, szDBASE, True))
else raise EDatabaseError.Create("Table must be either of Paradox or dBASE type to pack");
Table.Open;
end;

функции стандартные взяты из хелпа делфи. таблици должны быть открыты в монопольном режиме. (не получится шли мне попробую чтонибудь сделать)

рекомендовать чтото глупо все одно что совета спрашивать (единственный смысл в советах чтобы было кого обвинить если не получится). но если просиш ставь MS SQL или еще лутше Pervasive (Btrieve, мне кажется он лутше "легче", возможностей больше но со структурой заколебешся разбиратся)


 
xim   (2002-03-18 15:47) [6]

Спасибо всем за ответы!

> Alexandr © (18.03.02 09:27)
> виновато скорее всего питание.

Это вряд ли. С питанием проблем не бывает,
питаемся от пилота + SmartUps.

> На втором месте аппаратный сбой в памяти, винде

С памятью проблем тоже не было никогда,
память протестирована вдоль и поперёк,
да и за W2K с SP2 сбоев не замечалось.

> да и много чего еще. Файловая система-то NTFS?

Система на FAT поставлена, а база на сжатом NTFS,
может быть из-за сжатия?

> А ты уверен, что тебе именно база данных нужна? По-моему
> тут лучше в файлах свои BLOB хранить...

Беда в том, что в одной записи как правило от 10 до 50 картинок, с комментариями и thumbnail"ами,
в файлах пробовал хранить, но это оказалось неудобным,
вдруг юзеру понадобится грохнуть 25-ю картинку из 40-ка
или вставить между десятой и 11-ой ещё какую-нибудь + картинки должны быть осортированы.
+ Необходима возможность поиска по комментариям к картинке
а они могут быт довольно большими, в Exif не загонишь.
Ну я вышел из положения так:
вместе с новой записью создаю к этой записи
дополнительную таблицу методом createtable, с именем файла = ключевым полям этой записи.
И наплодилось у меня этих файлов около 3-х тысяч,
не знаю во что это превратиться когда в базе будет 12.4 тыс.
записей. (А их будет ровно столько)
Среди BDE компонентов виднеется нечто
с названием NestedTable. Что это такое?
Кажется это то что мне нужно: таблица в таблице,
но как это приделать к Pradox"у?


 
Shaman_Naydak   (2002-03-18 18:45) [7]

>>xim

в парадоксовых таблицах постоянно слетают ключи при попытке одновременной работы с таблицей из нескольких приложений..
ну не скл сервер тебе это..
Нет, в парадоксе этой штуки нет и не будет, я так думаю :)
Это серьезная такая хренька для Oracle 8 или при использовании MIDAS :))
Если нужен tutility - могу выслать, вроде валялся у меня, пиши мыло.
Я в свое время тоже своей программкой лечил такие таблицы, но исходников уже нет :(



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

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

Наверх





Память: 0.47 MB
Время: 0.006 c
3-22575
KaPaT
2002-03-17 20:45
2002.04.08
Кто работал с отчетами помагите пожалуйста!


7-22865
MystiX
2002-01-08 12:25
2002.04.08
CD и Delphi


1-22757
sammy
2002-03-27 09:00
2002.04.08
Keyboard Layout


3-22518
Dima Kopachev
2002-03-11 20:12
2002.04.08
Непосредственный ввод значения в DBLookupComboBox


1-22741
Lego
2002-03-26 07:44
2002.04.08
PageControl ... как сохранить динамически созданые RichEdit и текст из них?





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