Форум: "Начинающим";
Текущий архив: 2006.06.04;
Скачать: [xml.tar.bz2];
ВнизГлюки Paradox, либо... Найти похожие ветки
← →
serko © (2006-05-18 22:55) [0]Всем ЗДРАСТЕ! У меня есть база Paradox, которая создавалась около 3-х лет, в ней находятся данные о врачах. сейчас там уже больше 2300 записей, и вот недавно произошел глюк! После добавления врача при повторном запуске проги выскакивает ошибка "Corrupt table/index header ..."
И пока я не вставлю резервную копия базы прога не заработает! Этот глюк произошел именно при достижении такого числа записей, хотя насколько я знаю это не предел. У меня поле (порядковый номер) на котором установлен Index имеет значение LongInteger.
Это основная проблема! Помогите с ней разобраться!
И еще один вопрос по этой базе! Та же база... Я в Combobox загружаю только имена врачей:
form9.Table1.First;
for k:=1 to form9.Table1.RecordCount do
begin
form1.ComboBox4.Items.Add(form9.Table1.Fields[1].AsString);
form9.Table1.Next;
end;
Но тоже в один прекрасный момент (раньше чем первый глюк) в Comboboxe пропадают последние 10 врачей, хотя в самой базе они есть, и form9.Table1.RecordCount совпадает со значением в базе. Как это обяснить? Ато меня тероризируют а я незнаю что ответить! Помогите ПЛИЗ!
← →
unknown © (2006-05-18 23:04) [1]Да уж. Парадокс.
Попробуй удалить файлы *.px, *.x , *.y и пересоздай индексы.
← →
sniknik © (2006-05-18 23:15) [2]> а я незнаю что ответить!
отвечай, что прогу надо переписывать с использованием нормальной базы, а не парадокса. накопленные данные естественно перенести в новуцю базу.
у парадокса много ограничений, размер например... при дефаултном BLOCK SIZE (2048) максимальный резмер у созданной таблицы может бать только 128мг. посмотри если у тебя близкое значение значит ты "уперся в максимум" таблицу надо пересоздавать с увеличенным BLOCK SIZE. но это полумеры, не так так иначе но опять "попадеш" ты со своим парадоксом...
> Я в Combobox загружаю только имена врачей:
зачем? есть же DB_xxxxxx аналог, и ничего грузить не надо.
> for k:=1 to form9.Table1.RecordCount do
плохая конструкция для циклу по таблице... используй while not Table1.eof do вместо нее.
← →
аматор © (2006-05-18 23:21) [3]Привет...
1. "Этот глюк произошел именно при достижении такого числа записей" - тута мона поспорить (может быть ошибка в проге).
2. Попробуй "While not Eof do begin".
И "for k:=1 to form9.Table1.RecordCount do", в умных книгах писали НИКОГДА на 1 переменные не начинать, нуно 0 ставить. Отсюда "for k:=0 to form9.Table1.RecordCount - 1 do".
← →
sniknik © (2006-05-18 23:25) [4]> в умных книгах писали НИКОГДА на 1 переменные не начинать, нуно 0 ставить.
без разници, хоть for k:=100 to form9.Table1.RecordCount+99 do
← →
serko © (2006-05-18 23:41) [5]
> максимальный резмер у созданной таблицы может бать только
> 128мг. посмотри если у тебя близкое значение
У меня база весит всего 539 Кб
> прогу надо переписывать с использованием нормальной базы
А нормальная это какая?
← →
sniknik © (2006-05-18 23:47) [6]любая более менее современная, а не заброшенная 10 лет назад... (цифра неправильная, смысл верен ;)
лучше какой нибудь sql сервер, "на вырост".
← →
serko © (2006-05-18 23:48) [7]
> > Я в Combobox загружаю только имена врачей:
> зачем? есть же DB_xxxxxx аналог, и ничего грузить не надо.
>
Положил я на Form DBCombobox выбрал DataSourse, выбрал "ВРАЧИ". И что же дальше? Всего списка нет, есть только первый в списке врач. В items ниче не надо вручную добавлять?
← →
serko © (2006-05-18 23:49) [8]
> любая более менее современная, а не заброшенная 10 лет назад.
> лучше какой нибудь sql сервер, "на вырост".
Ну а по конкретнее?
> (цифра неправильная, смысл верен ;)
Что хочеш сказать что моя база в тупике?
← →
sniknik © (2006-05-19 00:03) [9]вообше тебе наверное нужен DBLookupComboBox, а не DBCombobox. не знаю смысла задачи, но судя по тому что выше ты вносиш значения в Combobox...
> Ну а по конкретнее?
не могу, не знаю задачи, но я бы выбирал между MSSQL и Access-ом, просто потому что лучше их знаю, но могу также и IB(/FB), Pervasive, Foxpro, даже Oracle на худой конец... (ну не нравится он мне, ничего не поделать), это если "по быстрому" надо, если нет то лучше чегонибудь новенькое.
> Что хочеш сказать что моя база в тупике?
однозначно.
← →
serko © (2006-05-19 10:16) [10]
> отвечай, что прогу надо переписывать с использованием нормальной
> базы
Как не верится что кирдык проге и базе пришел! Я же ее 3 года делал и это уже целый проект! Может есть какой то выход?
> > максимальный резмер у созданной таблицы может бать только
>
> > 128мг. посмотри если у тебя близкое значение
>
> У меня база весит всего 539 Кб
Но 539Кб это же на много меньше чем 128мг
← →
MsGuns © (2006-05-19 11:15) [11]Очевидно, что "кирдык" не в парадоксе, а в программке или модели БД. 2300 записей - это курам на смех. У меня есть базы с таблицами по миллиону записей и ничего. Другое дело - какие таблицы ! Если, к примеру, в расчетных по з/пл хранить не указатель на чела, а его ФИО, а вместо кода начисления - его название, то даже на базе в 1000 человек через год такая "база" начнет жутко тормозить, а потом и вообще периодически валиться.
Да еще при такой сугубо локальной технологии, которая описана (наверняка это TTable, правка в гриде и т.д.
Рекоментация: попробовать добавлять "лишние" записи запросом (INSERT INTO). Если все прокатит (99,99%), то переделать прогу на "запросную" технологию. Аргумент типа "3 года разрабатывал, не переделывать же" - ф топку.
← →
Desdechado © (2006-05-19 11:22) [12]> Всего списка нет, есть только первый в списке врач
FetchAll или Last;First для справочника врачей
← →
Плохиш © (2006-05-19 11:29) [13]
> form9.Table1.First;
> for k:=1 to form9.Table1.RecordCount do
> begin
> form1.ComboBox4.Items.Add(form9.Table1.Fields[1].AsString);
>
> form9.Table1.Next;
> end;
Увидев этот код сразу подумалось, что парадокс в проблемах не виноват. К тому же есть подозрение, что база используется не одним клиентом, а BDE на этих клиентах не настроено, в частности "NET DIR".
← →
Виталий Панасенко (2006-05-19 11:45) [14]
> Плохиш © (19.05.06 11:29) [13]
Согласен, очень похоже на то...
← →
MsGuns © (2006-05-19 11:48) [15]>Плохиш © (19.05.06 11:29) [13]
Обратил внимение на код. Да уж, шедевр народного "рукоприкладства". И это - результат трехлетнего труда ?
ИМХО, ситуация из тех, когда огурец навалял из кучи дерьма некое сооружение, которое со временем стало заваливаться на бок и зорал "караул !". Когда же ему сказали, что вместо каракулей на обрывке газеты надо использовать нормальный чертеж здания, а вместо фекалий - цемент, песок, кирпич и т.д., прошел убийственный аргумент "Я ж 3 года писал !" и резюме типа "не знаете - не лезьте".
Кстати, крайней в беде оказалась ни в чем не повинная кельма ;))
← →
serko © (2006-05-19 17:41) [16]Ну вы тут вообще меня опустили, и хотите сказать что я ничего особенного не сделал! Это кусочек кода, а вы по нему уже такое ФУУУ прогнали... Зачем же так?
> К тому же есть подозрение, что база используется не одним
> клиентом, а BDE на этих клиентах не настроено, в частности
> "NET DIR".
Не правильно подозреваете, прога стоит на одном компе и больше она ни где не работает!
> что парадокс в проблемах не виноват
Раз так, то попровьте меня! Что я сделал не правильно? Критиковать все могут, а вот указать что и где не так сделано не всем дано!
С огромным уважением ко всем вам!
← →
AlexWlad © (2006-05-19 18:51) [17]
> serko © (19.05.06 17:41) [16]
>
> Не правильно подозреваете, прога стоит на одном компе и
> больше она ни где не работает!
В таком случае Firebird Embedded самое то!!! Это, что касается где хранить. По работе с данными была в свое время отличная книга, еще для Д2 "Разработка приложений для работы с БД".
← →
аматор © (2006-05-19 20:59) [18]sniknik 4: Вы правы, но этот вариант сюда не катит.
А про код, странно, почему Вы (мастера) это раньше не заметили и ругать позже начали. У serko код изначально прикольный, и если смотреть на кусок кода то мона предположить какой программ. Да, мастера, квалиКфикацию теляем?(Шутка).
serko а кому Вы прогу писали, там платят холосо? Если да, то я согласен написать ещё парочку подобных прог. А, чё через пару лет только оЩибку искать будут, а деньгу сбросят и я се дачку поштрою за бугром, КЛАСС.
А реально, прочитайте книжку по базе (любую, пока (но толстую) :)). И проверьте код проги. Парадокс, как и любая база работает нормально, а если код в проге запороть, то и глючит будет. Ошибка может быть оочень мелкой и при малых "размерах" не заметной, но потом...
With Form9 do begin
With Table1 do begin
First;
While not Eof do begin
/////////////////издеваемся
Next;
end;
end;
end;
Я не уверен, но может так краше? Ну, есть и другие варианты... Я не прав?
← →
serko © (2006-05-19 23:18) [19]Мда... Сказал я себе!
Ну то что лудше использовать While я согласен.
А то в чем моя главная ошибка вы так и не говорите, а просто издеваетесь (как всегда) надо мной!
Может уже пора указать на мои прогоны?
← →
serko © (2006-05-20 00:00) [20]Ну вот у меня вроде уже работает и база и прога, но до того момента пока я всю папку исходника вместе с базой не скопировал на тот комп где она должна работать все время! После этого и у меня и на том компе при запуске выскакивает ошибка "Corrupt table/index header ..."
Чтоооооооооооооооо это?
← →
unknown © (2006-05-20 00:05) [21]
> serko © (19.05.06 23:18) [19]
[1] уже пробовал?
Дело в том, что в большинстве случаев при работе с парадоксом
ошибки типа Corrupt table/index header и пропадание данных, о
которых известно, что они есть - причина в битом индексе.
PK например.
← →
serko © (2006-05-20 01:07) [22]
> unknown © (20.05.06 00:05) [21]
От блин слепота куринная! Не заметил твой первый пост и морочил себе и всем тут яйца! А выход то проще простого! unknown Спасибо тебе огромное, прога и база пока работает! Тьху-тьху-тьху щоб не сглазить!
А всем остальным пожелаю... ай ладно промолчу! Настроение не охота портить!
unknown ЛУДШИЙ!
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.06.04;
Скачать: [xml.tar.bz2];
Память: 0.51 MB
Время: 0.041 c