Форум: "Базы";
Текущий архив: 2006.04.30;
Скачать: [xml.tar.bz2];
ВнизИзвлечение системного номера записи DBF Найти похожие ветки
← →
Dosfalcon (2006-03-02 16:31) [0]Люди, хелп.
Есть доисторическая клипперовская база. Надо ее перегнать во что-нить путнее.
Для восстановления связей между таблицами позарез нужен системный номер текущей записи (т.е. чтоб его можно было прочитать ну и записать в обыкновенное поле). Даже спец-вьюеры не все его видят, а уж ODBC с BDE - вообще не знаю.
Весь инет излазил - мегов 100 приблуд накачал - и никакого толку.
Вся надежда на спецов.
← →
Sergey13 © (2006-03-02 16:36) [1]А что за "системный номер текущей записи"? И зачем он нужен?
ЗЫ: Ни разу про такой не слыхал.
← →
dosfalcon (2006-03-02 16:38) [2]некорректируемое скрытое поле, в которое пишется порядковый номер записи при ее создании. clipper как я понял по ним индексы строит.
← →
stone © (2006-03-02 16:39) [3]нет там никакого порядкового номера, открой файл любым 16-ричным редактором и посмотри
← →
dosfalcon (2006-03-02 16:45) [4]тогда я так понимаю вот это -
http://www.excode.ru/?mod=article&id=text&artid=489&action=showart&page=1&ex=2797d20e8cf7c6b271e15755 95ffc467
полная чушь и ничего более?
← →
Sergey13 © (2006-03-02 16:45) [5]2[2] dosfalcon (02.03.06 16:38)
Если бы он даже был (в чем я сомневаюсь) - зачем он нужен для "перегнать во что-нить путнее"?
← →
dosfalcon (2006-03-02 16:51) [6]для восстановления связей между связанными таблицами dbf (индексы ntx, причем похерены далеко и надолго) А клиента, который эти базы юзает вскрыть не представляется возможным. А базы по несколько сотен тыс записей :)
← →
Sergey13 © (2006-03-02 16:56) [7]2[6] dosfalcon (02.03.06 16:51)
>для восстановления связей между связанными таблицами dbf
А они по номеру записи связаны? В дочерних таблицах так прямо код какой-то и зашит? Что то слабо в это верится.
← →
dosfalcon (2006-03-02 17:05) [8]Дочерние таблицы все как одна: 2 поля: первое - число , второе - какое-нить свойство (строка). Причем с клиента проверял - число равно именно номеру той записи, к которой свойство и относится. Сам шизею второй день.
← →
ANB © (2006-03-02 17:13) [9]1. Базу на клиппере писал идиот. Если хоть раз проводили упаковку - все такие ссылки похерились.
2. В DBF нету спец.поля для номера записи. Он просто физически на нее позиционируется. А индексы при упаковке - перестраиваются.
3. Если нужен клиппер или утилита его для работы с таблицами - могу выслать.
4. Могу также запостить или выслать формат файла DBF и пример его читания.
← →
Виталий Панасенко (2006-03-02 17:14) [10]Что-то ты гонишь... Что курил ?..:-)))
← →
dosfalcon (2006-03-02 17:16) [11]ANB постучись в асю 272122996, буду премного благодарен
← →
Desdechado © (2006-03-02 21:10) [12]> число равно именно номеру той записи, к которой свойство и относится
а та запись не имеет случаем какого-нибудь первичного ключа, особенно числового?
← →
dosfalcon (2006-03-03 05:30) [13]Desdechado, в том то и дело, что нет. Индексов - выше крыши, а идентификаторов числовых - жок.
Ладно, всем спасибо, вчерась сам придумал как ентот номер выташчить. Если кто когда столкнется с флинтовыми ментовскими базами периода распада СССР - имейте ввиду, что в них может быть описанный выше механизм связки.
Решение такое - открыть dbf-ку accessom к примеру (главное, чтоб построчно весь файл прочитался) и тупо пронумеровать записи счетчиком.
← →
Anatoly Podgoretsky © (2006-03-03 07:32) [14]Это системное поле называется RECNO
← →
Anatoly Podgoretsky © (2006-03-03 07:35) [15]Если делалась упаковка или какое либо повреждение индексов, то забудь про связи - их уже нет и это навсегда.
Видимо этот комик программист написал связь так Fld = RECNO
← →
dosfalcon (2006-03-03 08:10) [16]Anatoly Podgoretsky связи то останутся, тока кривые :) Или полетят, но тока в том случае если на последнюю запись основной таблицы была ссылка. Но клиент работает, видимых траблов нет. А уж полетело ли соответсвие до меня - это меня не колышит. Главное перенести то что есть сейчас :).
Кстати, это действительно не поле базы в нормальном смысле слова - это виртуальное поле, создаваемое некоторыми вьюерами на основе структуры dbf.
← →
Виталий Панасенко (2006-03-03 09:28) [17]А ментовские !.. Я когда то видел для ментов на Paradox 4.0 какую то лобуду. Лет 10 назад. Так там тоже связи были построены НА ФИЗИЧЕСКИХ номерах, без единого индекса !..Попробуй что-нибудь удалить - кранты..
← →
msguns © (2006-03-03 09:55) [18]Обалдеть ! Это получается, что в детал писалась запись с полем-связкой, равной RecNo текущей масетр-записи ?
Вообще такого не видел никогда ! Если дело обстоит так, то это какой-то триллер, а не БД, а автор - внук Хичкока.
Все же, мне кажется, там по другому. Каким-то образом вычисляется из содержимого других полей значение связующего ключа и оно уже присваивается указателю в детал-записи. В этом случае ключ будет независим от recNo мастер-таблицы. Подобные штуки встречал как-то и, если память не изменяет в кгб-шных старых прогах (еще досовских).
← →
Виталий Панасенко (2006-03-03 11:58) [19]То что я видел, было как-то по другому. Я уже не помню, но что-то типа "Запись № такой-то в Таблице1 соответствует Записи с таким же номером в Таблце2"
← →
Sergey13 © (2006-03-03 12:04) [20]2[8] dosfalcon (02.03.06 17:05)
>Дочерние таблицы все как одна: 2 поля: первое - число , второе - какое-нить свойство (строка). Причем с клиента проверял - число равно именно номеру той записи, к которой свойство и относится.
Ну дык добавь во все таблицы по полю. Обзови его ID и заполни RecNo. Вот тебе "нормальные" и связи появятся. Наверное будут битые и неверные связи, но уж это другая пестня - для "Главное перенести то что есть сейчас" сойдет.
← →
Anatoly Podgoretsky © (2006-03-04 01:33) [21]Виталий Панасенко (03.03.06 09:28) [17]
Для DBF после упаковки таблицы, базу можно выкидывать.
← →
mike-d © (2006-03-05 19:18) [22]> msguns © (03.03.06 09:55) [18]
> Обалдеть ! Это получается, что в детал писалась запись с
> полем-связкой, равной RecNo текущей масетр-записи ?
>
> Вообще такого не видел никогда !
Увы, такое есть и сейчас... Пример: программа ввода льгот на физических лиц Управления Социальной Защиты Населения г. Владимира (фамилию автора к сожалению еще не выяснил - а то бы обнародовал) - реализована на Foxbase 2.0 под DOS.
И распространяет свой шедевр по всей области...
← →
mike-d © (2006-03-05 19:21) [23]Автору:
Можно добавить в структуру мастера целочисленное поле (ID) и при конвертации данных писать туда текущий RecNo исходных записей. В дальнейшем оно будет использоваться для связи таблиц. Операция одноразовая, разумеется...
← →
Anatoly Podgoretsky © (2006-03-05 19:23) [24]То что под ДОС это мелочи, а вот RECNO для связи это ужас, нельзя таких людей допускать подметать пол в компьютерном помещении.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2006.04.30;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.009 c