Меню

Corrupt table index header ошибка

На чтение 4 мин. Просмотров 101 Опубликовано 15.12.2019

Группа: Участник
Сообщений: 70


Возможно ли восстановление таблицы БД Paradox?
Видимо, некорректно была завершена работа с БД, в результате чего при попытке открытия таблицы вылазит мессага «corrupt table/index header»
Есть ли средства ремонтирования таблиц Paradox’a?

Группа: Администратор
Сообщений: 1190


Возможны 2 ситуации:

1 попортились индексы (индексные файлы .px .XG0, .XG1, YG0 . )
2 повредились сами файлы таблиц ( .db)

1 Сначала попробуйте сделать переиндексацию.
То есть удалите все индексные файлы и проиндексируйте таблицы.
Для этого удобнее всего написать отдельную программу,
которая это делает (через Table1->AddIndex() ).

2 Средство для ремонта таблиц Paradox — сам Paradox
Например Paradox 9, в нем команда «Rebuild»
Но может полностью и не восстановить.

Конечно, перед любыми подобными действиями,
делайте копию базы данных.

Группа: Участник
Сообщений: 247


Еще в Paradox 4 под Dos я делал так.
Удалить, добавить индекс.

Если не помогало.

Делаешь такую-же таблицу и по записям копируешь
начиная с первой записи до ошибки,
потом с первой записи прыгаешь на последнюю и копируешь с
с последней записи до ошибки.

Когда мне это надоело сделал принудительную архивацию таблиц в конце работы программы.

Именно из за этого я бросил рабуту с Paradox.
Очень жаль мне он нравился.

Как можно его отвязать? Удалить сам файл? Как он называется??

Как программно восстановить индексы? Саму ошибку программно поймать возможно.Как сделать, чтобы их вообще не было — и ничего не портилось бы наверно?

В одном старом проекте после 6 лет нормальной работы началась такая же херьня.Данные в Paradox-е не нужны, так как это временное хранилище, из которого далее данные ложатся на SQL Server. Но на клиентах нужны работающие БД на Paradox-е. Как программно восстановить индексы? Саму ошибку программно поймать возможно.Как сделать, чтобы их вообще не было — и ничего не портилось бы наверно?

Hi,
When I try to open one of my paradox tables with Database Desktop i get the following error:
«Corrupt table/index header».
Also when I try to add a new record to that table I get «Key violation».
Anyone know what to do?

Premium Content
Premium Content
  • Facebook
  • Twitter
  • LinkedIn
  • https://www.experts-exchange.com/questions/20970230/Corrupt-table-index-header.html copy

You can try to repair the data with a third party tool like Chimney Sweep.

Ok, don’t have the money to buy it!
Is there any freeware product or any other way I can go?

I don’t know of any free tools; although, there may be some. I thought the 30 day evaluation was free but I see that it isn’t. You could try some of the following:

1) Restore a backup, if you have one — before running any Paradox applications use the repair tool (Paradox repair utility).

2) Open the table using restructure, click PACK and then save. If you can do that, try the repair tool again.

3) Create a new table with the same structure and attempt to copy your data into it using ADD. Then run the repair against the new table.

Ensure you’re charging the right price for your IT

Do you wonder if your IT business is truly profitable or if you should raise your prices? Learn how to calculate your overhead burden using our free interactive tool and use it to determine the right price for your IT services. Start calculating Now!

There is also a website that has some bde repair tools; although, I don’t know how well they work.

They have a Paradox Table Repair Utility.

Whatever you decide to do, I would make sure you have a backup.

Thanks for your help, bwdowhan.
At last I found a data repair utility at Torry’s delphi pages.
The app I found was: Pdxrbld — Paradox tables check/repair utility v.4.41b.
I tried it and it work just fine.

bwdowhan post an comment and you will get the points.

It’s nice when things work. I’m glad you found your solution!

I have got some information from one site.

Other third-party tools (freeware and shareware) for repairing Paradox
tables are available at:
http://www.bdesupport.com/tools.htm

IT issues often require a personalized solution. With Ask the Experts™ , submit your questions to our certified professionals and receive unlimited, customized solutions that work for you.

  1. 08.06.2012, 14:17


    #1

    mcmaster вне форума


    Разбирающийся

    Аватар для mcmaster


    corrupt table/index header

    При выполнении Append32.exe на Reorders.db вылетает corrupt table/index header. Чем и как лечить?


  2. 08.06.2012, 16:58


    #2

    Admin вне форума


    Да, вы ЕЁ и видите.

    Аватар для Admin


    Всеж очевидно. Сохранить текущую бд и реиндексацией для начала.

    You see ass…
    Если проблему можно решить за деньги, то это не проблема, это расходы. Еврейская мудрость.


  3. 08.06.2012, 20:47


    #3

    Valera вне форума


    Сведущий


    Цитата Сообщение от Admin
    Посмотреть сообщение

    реиндексацией для начала

    Да не, это же енддей, тут реиндексация вообще ни при чем.

    Насколько мне известно, Reorders.db таблица некритичная. Как я понял, кипер туда вносит изменения о факте редактирования стола. То есть только сам факт, а изменения вносит в соответствующие таблицы — dcheck, rcheck…

    Попробуйте открыть эту дбшку в каком-нибудь редакторе, и посмотреть содержание. Возможно, найдете там мусор — кракозябры или что-то такое, что разительно отличается от предыдущих записей. Эти строки можно удалить — восстановлению уже не подлежат.

    Если и это не спасет, то просто прогрузите день без этой таблицы (перенесите ее куда-нибудь, но не удаляйте). Скорее всего, все должно заработать. Проверьте отчеты, я думаю, все сойдется.

    Дерзайте, удачи.


  4. 08.06.2012, 23:04


    #4

    Admin вне форума


    Да, вы ЕЁ и видите.

    Аватар для Admin


    Цитата Сообщение от Valera
    Посмотреть сообщение

    тут реиндексация вообще ни при чем.

    C чего бы не причем? Реиндексация ващето не только манагера имеется, если кто забыл.

    You see ass…
    Если проблему можно решить за деньги, то это не проблема, это расходы. Еврейская мудрость.


  5. 18.06.2012, 12:45


    #5

    mcmaster вне форума


    Разбирающийся

    Аватар для mcmaster


    помогите пожалуйста. все методы какие знаю перепробовал.


  6. 18.06.2012, 14:13


    #6

    okis вне форума


    Разбирающийся

    Аватар для okis


    С файлом во вложении делали что-нибудь? Он пустой. Файла в изначальном состоянии нет?


  7. 18.06.2012, 20:21


    #7

    mcmaster вне форума


    Разбирающийся

    Аватар для mcmaster



  8. 19.06.2012, 00:56


    #8

    okis вне форума


    Разбирающийся

    Аватар для okis


    И здесь ничего не восстанавливается.


  9. 19.06.2012, 10:57


    #9

    mcmaster вне форума


    Разбирающийся

    Аватар для mcmaster



  10. 19.06.2012, 11:17


    #10

    Admin вне форума


    Да, вы ЕЁ и видите.

    Аватар для Admin


    Цитата Сообщение от mcmaster
    Посмотреть сообщение

    И что же делать?

    Да собственно вариантов 2.
    1. Ничего, а расход вбить в хаус в ручную.
    2. По чекам восстанавливать день, но если таковая возможность имеется.

    You see ass…
    Если проблему можно решить за деньги, то это не проблема, это расходы. Еврейская мудрость.


18 / 18 / 8

Регистрация: 21.04.2010

Сообщений: 110

1

28.11.2011, 11:01. Показов 7702. Ответов 15


поместил на форму элемент table1 в свойстве TableName прописал путь к фалу Foxpro таблицы (*.dbf)
фаил имеет обьем более 300 мегабайт
при попытке добавление полей в редакторе полей выдает ошибку «Corrupt tableindex headr»
Подскажите пожалуйста как это победить

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь



0



568 / 291 / 12

Регистрация: 28.01.2011

Сообщений: 1,326

28.11.2011, 11:12

2

Отказаться от использования dbf.
И пока есть возможность мигрировать на что-то иное.
Вариантов тьма.



1



18 / 18 / 8

Регистрация: 21.04.2010

Сообщений: 110

28.11.2011, 11:17

 [ТС]

3

Друг я dbf не использую для сохранения но для обработке
Смысл програмы в обработке dbf файлов



0



1496 / 1238 / 244

Регистрация: 04.04.2011

Сообщений: 4,356

28.11.2011, 11:24

4

Очень похоже на то, что алиас, который Вы используете для TTable, указывает на БД не того типа (у фокспро свой тип насколько помнится).

Добавлено через 3 минуты
Если Вы используете фокс-файлы для транзита данных (например из одной системы в другую), то ИМХО лучше их (данные) все же преобразовывать в текст (по размеру разница небольшая) с помощью того же фокспро и его уже «перетаскивать»



1



568 / 291 / 12

Регистрация: 28.01.2011

Сообщений: 1,326

28.11.2011, 11:28

5

А я бы для транзита xml использовал. Хороший тон в крупных проектах.
Какого рода обработке?
Заливке данных?



0



1496 / 1238 / 244

Регистрация: 04.04.2011

Сообщений: 4,356

28.11.2011, 11:41

6

xml — полный отстой и тормозищи ! Я бы того кто его выдумал (а заодно и изобретателей хатмеля) повесил на первой же березе



0



568 / 291 / 12

Регистрация: 28.01.2011

Сообщений: 1,326

28.11.2011, 11:55

7

Ну знаешь я не замечал тормозов. Может потому что не гонял большие объемы через него.
В основном межсистемный обмен в рамках одной модульной системы.
Вполне приятные впечатления.
Но тут опять же мы не в курсе что надо ТС.



0



18 / 18 / 8

Регистрация: 21.04.2010

Сообщений: 110

28.11.2011, 12:36

 [ТС]

8

Цитата
Сообщение от rdama
Посмотреть сообщение

А я бы для транзита xml использовал. Хороший тон в крупных проектах.
Какого рода обработке?
Заливке данных?

есть 2 прогрмаы использующие dbf програмы я переделовать не имею права
мне нужно синхронезировать (уровнять) поле в таблицах
грубо говоря берём даные из одной програмы суем её в другую

Добавлено через 1 минуту

Цитата
Сообщение от MsGuns
Посмотреть сообщение

Очень похоже на то, что алиас, который Вы используете для TTable, указывает на БД не того типа (у фокспро свой тип насколько помнится).

Это может быть вызвана тем что таблица включена в базу даных а я пытаюсь получить доступ обходя фаил dbc напрямую к файлу таблицы?



0



714 / 402 / 33

Регистрация: 04.10.2009

Сообщений: 1,686

28.11.2011, 13:13

9

Скорей всего, вы пытаетесь получить доступ к файлу в момент его использования. Завершите те проги.



0



18 / 18 / 8

Регистрация: 21.04.2010

Сообщений: 110

28.11.2011, 13:23

 [ТС]

10

Цитата
Сообщение от Андрей Борисови
Посмотреть сообщение

Скорей всего, вы пытаетесь получить доступ к файлу в момент его использования. Завершите те проги.

не с этим все нормально



0



1496 / 1238 / 244

Регистрация: 04.04.2011

Сообщений: 4,356

28.11.2011, 15:01

11

Формат dbf имеют множество «баз», при этом далеко не все они имеют стандарный формат dBase III, IV… Вы же в алиасе указали скорее всего STANDARD, вот и получили..



0



18 / 18 / 8

Регистрация: 21.04.2010

Сообщений: 110

28.11.2011, 18:14

 [ТС]

12

Цитата
Сообщение от MsGuns
Посмотреть сообщение

Вы же в алиасе указали скорее всего STANDARD, вот и получили..

не ttfoxpro указал



0



1496 / 1238 / 244

Регистрация: 04.04.2011

Сообщений: 4,356

28.11.2011, 18:21

13

В алиасе (BDE Administrator), а не в TTable !



1



6 / 6 / 0

Регистрация: 06.11.2011

Сообщений: 36

29.11.2011, 09:04

14

wason,
Очень хорошо выравнивает проблему с DBF Visual FoxPro, скачай его и открой свой DBF файл. 95% что проблема исчезнет
Хотя данная ошибка (т.е. Corrupt tableindex headr) свойственна Paradox.



1



18 / 18 / 8

Регистрация: 21.04.2010

Сообщений: 110

29.11.2011, 14:43

 [ТС]

15

Цитата
Сообщение от MsGuns
Посмотреть сообщение

В алиасе (BDE Administrator), а не в TTable !

все верно, создал алиас проблема ушла но это такой ужас

Добавлено через 1 минуту

Цитата
Сообщение от Gulik
Посмотреть сообщение

wason,
Очень хорошо выравнивает проблему с DBF Visual FoxPro, скачай его и открой свой DBF файл. 95% что проблема исчезнет
Хотя данная ошибка (т.е. Corrupt tableindex headr) свойственна Paradox.

не я заходил с foxpro таблица была целая
драва надо качать было на фокспро и ставить



0



MsGuns

1496 / 1238 / 244

Регистрация: 04.04.2011

Сообщений: 4,356

30.11.2011, 11:46

16

Delphi
1
все верно, создал алиас проблема ушла но это такой ужас

А BDE — это вообще ТАКОЙ УЖАС !!!
И это понятно,- ей же 100 лет в обед



0



…Вы сами перестаете слышать и понимать других.

очень жаль

Кто перестаёт слышать и понимать — это ещё вопрос.

Я же хочу донести вполне очевидную вещь:

если в некой системе совместно взаимодействуют два элемента, один из них неизменяем (каспер), второй представлен двумя различными версиями (РИК) и при работе первого элемента системы с одним из вторых происходит сбой в работе одного из вторых компонентов данной системы, то причина здесь в этом втором компоненте системы взаимодействий. Это обычная чёткая логика, и не понимаю, почему Вы обижаетесь на это.

А что если применить эту «логику» к Касперскому и прочим, тем более что никаких вирусов по факту там нет и не было!

Наши программисты, как и все, пишут код программы на языке высокого уровня, компилятор затем компилирует в исполняемый код, который и проверяют антивирусы и отдельные куски этого кода ими воспринимаются как вирусы.

Программист никогда не смотрит непосредственно исполняемый код и не контролирует его.

Почему именно так работает Bilder и допускает создание исполнительного кода, на который кидаются антивирусы…большой вопрос.

Почему обычные dbf и mdx файлы иногда стали восприниматься как вирусы — вопрос из той же серии.

Мы понимаем, что это неудобно пользователям, но как с этим бороться пока неясно.

То что можем — мы делаем, некоторые файлы пересобираем и до поры до времени они становятся «безопасными». Это конечно же полумеры, но ничего лучшего пока не придумали.

И конечно же, нужна тонкая правильная настройка антивируса.

А ведь эти антивир-программы коммерческие и почему они должны мешать нормальной работе других программ?

Скорее всего, если обратиться к ним с конкретной проблемой, то он смогут указать правильные настройки своих программ, но никто этого, конечно, не делает.

Так что, если вникнуть в вопрос глубже и руководствоваться не только пожеланиями, но и реальными возможностями, имеющимися в нашем распоряжении, то совсем даже не все здесь вполне очевидно и вашу логику назвать четкой очень затруднительно.

На чтение 4 мин. Опубликовано 15.12.2019

Группа: Участник
Сообщений: 70


Возможно ли восстановление таблицы БД Paradox?
Видимо, некорректно была завершена работа с БД, в результате чего при попытке открытия таблицы вылазит мессага «corrupt table/index header»
Есть ли средства ремонтирования таблиц Paradox’a?

Группа: Администратор
Сообщений: 1190


Возможны 2 ситуации:

1 попортились индексы (индексные файлы .px .XG0, .XG1, YG0 . )
2 повредились сами файлы таблиц ( .db)

1 Сначала попробуйте сделать переиндексацию.
То есть удалите все индексные файлы и проиндексируйте таблицы.
Для этого удобнее всего написать отдельную программу,
которая это делает (через Table1->AddIndex() ).

2 Средство для ремонта таблиц Paradox — сам Paradox
Например Paradox 9, в нем команда «Rebuild»
Но может полностью и не восстановить.

Конечно, перед любыми подобными действиями,
делайте копию базы данных.

Группа: Участник
Сообщений: 247


Еще в Paradox 4 под Dos я делал так.
Удалить, добавить индекс.

Если не помогало.

Делаешь такую-же таблицу и по записям копируешь
начиная с первой записи до ошибки,
потом с первой записи прыгаешь на последнюю и копируешь с
с последней записи до ошибки.

Когда мне это надоело сделал принудительную архивацию таблиц в конце работы программы.

Именно из за этого я бросил рабуту с Paradox.
Очень жаль мне он нравился.

Как можно его отвязать? Удалить сам файл? Как он называется??

Как программно восстановить индексы? Саму ошибку программно поймать возможно.Как сделать, чтобы их вообще не было — и ничего не портилось бы наверно?

В одном старом проекте после 6 лет нормальной работы началась такая же херьня.Данные в Paradox-е не нужны, так как это временное хранилище, из которого далее данные ложатся на SQL Server. Но на клиентах нужны работающие БД на Paradox-е. Как программно восстановить индексы? Саму ошибку программно поймать возможно.Как сделать, чтобы их вообще не было — и ничего не портилось бы наверно?

Hi,
When I try to open one of my paradox tables with Database Desktop i get the following error:
«Corrupt table/index header».
Also when I try to add a new record to that table I get «Key violation».
Anyone know what to do?

Premium Content
Premium Content
  • Facebook
  • Twitter
  • LinkedIn
  • https://www.experts-exchange.com/questions/20970230/Corrupt-table-index-header.html copy

You can try to repair the data with a third party tool like Chimney Sweep.

Ok, don’t have the money to buy it!
Is there any freeware product or any other way I can go?

I don’t know of any free tools; although, there may be some. I thought the 30 day evaluation was free but I see that it isn’t. You could try some of the following:

1) Restore a backup, if you have one — before running any Paradox applications use the repair tool (Paradox repair utility).

2) Open the table using restructure, click PACK and then save. If you can do that, try the repair tool again.

3) Create a new table with the same structure and attempt to copy your data into it using ADD. Then run the repair against the new table.

Ensure you’re charging the right price for your IT

Do you wonder if your IT business is truly profitable or if you should raise your prices? Learn how to calculate your overhead burden using our free interactive tool and use it to determine the right price for your IT services. Start calculating Now!

There is also a website that has some bde repair tools; although, I don’t know how well they work.

They have a Paradox Table Repair Utility.

Whatever you decide to do, I would make sure you have a backup.

Thanks for your help, bwdowhan.
At last I found a data repair utility at Torry’s delphi pages.
The app I found was: Pdxrbld — Paradox tables check/repair utility v.4.41b.
I tried it and it work just fine.

bwdowhan post an comment and you will get the points.

It’s nice when things work. I’m glad you found your solution!

I have got some information from one site.

Other third-party tools (freeware and shareware) for repairing Paradox
tables are available at:
http://www.bdesupport.com/tools.htm

IT issues often require a personalized solution. With Ask the Experts™ , submit your questions to our certified professionals and receive unlimited, customized solutions that work for you.

Ошибка после горячего обновления

пользователь

Регистрация: 07.02.2020

Добрый день!

После последнего горячего обновления у нас перестала работать Зарплата.

Выдает ошибку: corrupt table/index header #8961 ($2301)

Не формирует Платежную ведомость, Расчет зарплаты, справки 2-НДФЛ, 6-НДФЛ …

В итоге ничего не получается!

  • 233 просмотра

пользователь

Регистрация: 07.02.2020

Доброе утро!

Господа разработчики, в какой теме надо задать вопрос, чтобы вы на него ответили?

Зарплата так и не работает, а скоро аванс…

  • Войдите или зарегистрируйтесь, чтобы оставлять комментарии

дилер

Регистрация: 01.12.2005

Полностью ошибку напишите, с указанием места ошибки. Тогда быстрее и точнее будет ответ.

Могу подключиться по AnyDesk +79255074282

  • Войдите или зарегистрируйтесь, чтобы оставлять комментарии

разработчик

Регистрация: 29.02.2012

Добрый день!

Это, скорее всего, проблема с файлом, возможно с несколькими. Попробуйте поменять файл, на который указывает ошибка, на файл из копии базы, сделанной в то время, когда ошибки еще не было. После замены запустите бланк обновления базы данных.

  • Войдите или зарегистрируйтесь, чтобы оставлять комментарии

пользователь

Регистрация: 22.12.2014

После последнего обновления вдруг «сломалась» Зряплата/карточка начислений и удержаний.

09 января 2023 года рассчитал зряплату за декабрь 2022 года — все было хорошо, а сегодня ВДРУГ:

Открывает карточку начислений и удержаний нормально, но затем при её закрытии (даже без редактирования) матерится (см. вложение) и затирает ВСЕ данные по этому раб-у. Он исчезает после этого даже из «архива» расчётной ведомости (при выводе старых результатов расчёта).

Что это может быть и как с этим бороться?

  • Войдите или зарегистрируйтесь, чтобы оставлять комментарии

дилер

Регистрация: 01.12.2005

Из меню программы вызвать общие настройки:

В общих параметрах, для спецкарточки поставьте ДА:

Не успели исправить всё.

  • Войдите или зарегистрируйтесь, чтобы оставлять комментарии

пользователь

Регистрация: 22.12.2014

Ок. Спасибо. Начну пользоваться Спецкарточкой пока.

Но обычная для меня удобней — мышкой щёлкать меньше приходится. И вообще, на мой взгляд, чем меньше надо щёлкать мышкой  — тем лучше программа (и программист, соответственно!). А у ИБ в последнее время, наоборот, в бланки всё чаще включаются дополнительные «вкладки», до последнего уровня которых рука устаёт мышкой щёлкать. Мониторы сейчас у всех широкие — наверняка можно разместить многое сразу на главной странице бланка (а не в открывающихся вкладках).

Предлагаю установить программистам премию за каждый «сэкономленный» щёлк мышкой (и выговор/штраф за их необоснованное увеличение).

  • Войдите или зарегистрируйтесь, чтобы оставлять комментарии

    msm.ru

    Нравится ресурс?

    Помоги проекту!

    >
    «Corrupt table/index header» при запросе

    • Подписаться на тему
    • Сообщить другу
    • Скачать/распечатать тему



    Сообщ.
    #1

    ,
    20.10.05, 16:50

      Добрый вечер.

      Имеется база данных (DBaseIV/BDE). Поля в базе создаются динамически (в зависимости от настроек программы). База подключается и отображается в сетке на форме (среда разработки Borland Delphi 7). При попытке выполнения запроса к этой базе выдается ошибка:

      «Project … raised exception class EDBEngineError with message ‘Index does not exist. Corrupt table/index header.
      File: [путь_к_файлу]_file.dbt (собственно сама БД)
      File or directory does not exist.
      File: [путь_к_файлу]_file.dbX
      File: [путь_к_файлу]_file.MDX. Process stoped. И т.д. и т.п.'»

      Так вот. Сам файл я проверял открытием в программе просмотра БД. Все с ним в порядке (в программе БД тоже отображается нормально). Индекс для этой БД тоже есть («file.cdx»).

      Каждый день после работы с проектом я делаю бэкап последнего. Открыл копию от 16.10 и запустил скомпиленый exe. Все работает. Перекомпилил эту копию — та же ошибка. В чем может быть дело?


      Anatoly Podgoretsky



      Сообщ.
      #2

      ,
      20.10.05, 17:09

        file.dbt это не файл «базы» а мемо поля
        file.cdx это не dBase, а ФоксПро

        Wizard

        Bas



        Сообщ.
        #3

        ,
        21.10.05, 06:11

          Цитата ReLock @ 20.10.05, 16:50

          В чем может быть дело?

          В

          Цитата ReLock @ 20.10.05, 16:50

          ‘Index does not exist

          Как создаешь, как удаляешь?


          ReLock



          Сообщ.
          #4

          ,
          21.10.05, 11:53

            Цитата Anatoly Podgoretsky @ 20.10.05, 17:09

            file.dbt это не файл «базы» а мемо поля
            file.cdx это не dBase, а ФоксПро

            file.dbt — это просто шаблон. Я могу написать «file.xxx». Это дела не меняет. У меня в структуре при создании БД указан тип: DBASEIV. Я специально поменял расширение, чтобы небыло привязки иконки к DBF. Хотелось сделать свою иконку. Так сказать: DBT — «Database Tournament».

            to BAS:
            Активация и индексация:

            ExpandedWrap disabled

              cIndex:= ChangeFileExt(ExtractFileName(TourFName),’.cdx’);

              DataSet.Active := True;

              SetIndexTable(cIndex,’LNAME’,’LNAME + FNAME’,’Tables’,DataSet, True);

            Процедура индексации:

            ExpandedWrap disabled

              procedure SetIndexTable(FIndex,NIndex,EIndex,DIndex: String; FDataSet: THalcyonDataSet; SortAscending: Boolean);

              var

                SortDir: TgsSortStatus;

                FName: String;

              begin

                FName := AppPath + DIndex + » + FIndex;

                if FileExists(FName) then DeleteFile(FName);

                with FDataSet do

                  if Active then

                    begin

                      if SortAscending = True then

                        SortDir:= halcn6db.Ascending

                      else

                        SortDir:= halcn6db.Descending;

                      IndexFiles.Clear;

                      IndexOn(FIndex,NIndex,EIndex,»,halcn6db.Duplicates,SortDir);

                      IndexFiles.Add(FIndex);

                      IndexName := NIndex

                    end;

              end;

            Сам запрос:

            ExpandedWrap disabled

              Query.DatabaseName := MainForm.DataSet.DatabaseName;

                SQLText := SQLText + ‘SELECT ID,NUMBER,STATE,LNAME,FNAME,SNAME,VIRTUAL,TPOINTS ‘;

                SQLText := SQLText + ‘FROM «‘ + MainForm.DataSet.TableName + ‘» ‘;

                SQLText := SQLText + ‘WHERE STATE = 1 ‘;

                SQLText := SQLText + SortVariant;

                Query.SQL.Clear;

                Query.SQL.Add(SQLText);

                Query.Open;

            Добавлено 21.10.05, 11:57
            Хотелось бы напомнить, что 3-4 дня назад все отлично работало при такой структуре. Вчера заметил такой ньюанс. Когда запускаю программу и создаю новую базу, то с ней все в порядке (можно даже выполнять к ней запросы). Но как только я добавляю в нее новые записи, либо я закрываю программу и подключаю базу снова — происходит вышеописанная ошибка. После ошибки база отключается. В структуре БД повреждений нет. Поключается свободно и все данные из нее в программе отображаются корректно.

            Сообщение отредактировано: ReLock — 21.10.05, 11:59


            ReLock



            Сообщ.
            #5

            ,
            26.10.05, 08:32

              Вообщем разобрался с этой проблемой. Только есть некоторые непонятные вещи. Может кто-нибудь сможет объяснить эти явления? ❓
              Короче дело вот в чем:

              Из полного имени файла конфигурации, который лежит в другом каталоге (имя файла конфигурации и имя БД идентичны, просто лежат в разных каталогах), вытаскивается только имя и меняется расширение на CDX:

              ExpandedWrap disabled

                cIndex:= ChangeFileExt(ExtractFileName(TourFName),’.cdx’);

              База данных становится активной:

              ExpandedWrap disabled

                DataSet.Active := True;

              База индексируется:

              ExpandedWrap disabled

                SetIndexTable(cIndex,’LNAME’,’LNAME + FNAME’,’Tables’,DataSet, True);

              После этих действий в каталоге с базой данных создается индекс для этой БД и в заголовке БД-файла выставляется признак, что «используется индекс». База индексируется. Но в этом случае при попытке выполнить к этой БД запрос — выходит вышеописанная ошибка.

              Если же сделать так:

              Формирую новое расширение (полный путь остается):

              ExpandedWrap disabled

                cIndex:= ChangeFileExt(TourFName,’.cdx’);

              База данных становится активной:

              ExpandedWrap disabled

                DataSet.Active := True;

              База индексируется:

              ExpandedWrap disabled

                SetIndexTable(cIndex,’LNAME’,’LNAME + FNAME’,’Tables’,DataSet, True);

              После этих действий в каталоге с файлом конфигурации создается индекс для БД и в заголовке БД-файла НЕ выставляется признак, что «используется индекс». База индексируется. И только В ЭТОМ случае к базе можно применить запрос.

              ❓ ❓ ❓


              ReLock



              Сообщ.
              #6

              ,
              27.10.05, 09:53

                ;) Ура! Все разобрал. Короче дело вот в чем:

                — если у базы расширение <DBF>, то можно смело делать для нее индекс в том же каталоге. К заголовке файла выставится признак, что база инпользует индекс и к ней можно делать любые запросы.

                — если же у базы расширение, отличное от DBF (например, XXX), то при создании индекса для этой базы в том же каталоге (в заголовок файла опять же выставится признак, что база использует индекс) — к этой базе нельзя применить запрос (BDE ругается на заголовок базы и индекса, мол поврежден). Для этого случая единственным решением будет создать для базы индекс в другом каталоге (в заголовок файла не запишется, что база использует индексы, зато к ней можно применить любые запросы).

                Вот такая вот кухня.

                Добавлено 27.10.05, 09:55
                Все! Тема закрыта.

                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)

                0 пользователей:

                • Предыдущая тема
                • Delphi: Базы данных
                • Следующая тема

                Рейтинг@Mail.ru

                [ Script execution time: 0,0364 ]   [ 16 queries used ]   [ Generated: 28.01.23, 17:35 GMT ]  

                Добрый вечер!

                Пользуюсь переносной версией программы, установлена на внешнем жёстком диске.

                В результате выхода из строя USB-кабеля питания внешнего жёсткого диска произошло его отключение во время сеанса работы с Домашней Бухгалтерией. После подключения жёсткого диска с помощью другого USB-кабеля, был завершён сеанс работы с программой. При выходе из программы всегда выполняется автоматическое создание резервной копии на этом же жёстком диске.

                При следующем запуске программы было выдано сообщение об ошибке и предложено произвести восстановление из резервной копии. Однако, при выборе последнего сохранённого файла с резервной копией для восстановления выдаётся сообщение: «Файл ********_******.hbb повреждён.»
                При восстановлении из более ранней копии программа запускается, но при попытке возврата долга должником выдаётся сообщение: «Corrupt table/index header. File: X:HomeBuh5BaseListMyCikl.DB»

                Запускал CategoryRestore.bat, но результат тот же. После запуска CategoryRestore.bat при закрытии программы появилось сообщение: «При сжатии базы данных произошла ошибка. DeletedItems.DB ModifiedItems.DB ListMyCikl.DB Sync.DB DeletedItemsWeb.DB ModifiedItemsWeb.DB RecordsMap.DB SyncWeb.DB»

                Что ещё можно попытаться сделать для восстановления нормальной работы программы?
                Существует ли какая-то возможность восстановления файла с резервной копией базы ********_******.hbb? Как это можно сделать?

                Заранее благодарю.

                С уважением.

                 
                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 ЛУДШИЙ!


                0 0 голоса
                Рейтинг статьи
                Подписаться
                Уведомить о
                guest

                0 комментариев
                Старые
                Новые Популярные
                Межтекстовые Отзывы
                Посмотреть все комментарии

                А вот еще интересные материалы:

              • Яшка сломя голову остановился исправьте ошибки
              • Ясность цели позволяет целеустремленно добиваться намеченного исправьте ошибки
              • Ясность цели позволяет целеустремленно добиваться намеченного где ошибка
              • Corona renderer initscripts ошибка
              • Corona render ошибка при установке