Как создать DBF файл заданного формата? | |
---|---|
Konstantin_Pavlovich Сообщений: 143 Откуда: Москва Дата регистрации: 21.11.2007 |
Клиент прислал образец DBF файла (приложен к теме), говорит, что это DBF-4 (Dbase-IV ?). Файл прекрасно открывается в Foxpro без преобразований. Надо передавать клиенту файлы такого же формата из своей Foxpro программы. Но что это за формат такой и как его сделать? Все попытки получить такой формат экспортом из Foxpro7 или командой Copy to с разными параметрами type (foxplus, fox2x) дают другой формат, который клиент не понимает. Может кто знает, как можно перевести обычный dbf файл Foxpro в заданный формат?
------------------ С уважением Стороженко Константин Павлович |
Re: Как создать DBF файл заданного формата? | |
---|---|
Pliskin Сообщений: 2959 Откуда: Новосибирск Дата регистрации: 19.11.2003 |
|
Re: Как создать DBF файл заданного формата? | |
---|---|
Божья_коровка Сообщений: 25731 Дата регистрации: 23.08.2001 |
Вроде ж ИК уже ответил в такой же теме -
Цитата: Надо спросить у собственника файла, а чем всё же он его создавал, если его средства не могут прочитать то что вы создаете в фоксе, насколько я поняла. ------------------ Жись, она как зёбра, полоса белая, полоса черная, а мне всегда задница достается... Исправлено 1 раз(а). Последнее : Божья_коровка, 11.10.17 19:11 |
Re: Как создать DBF файл заданного формата? | |
---|---|
Konstantin_Pavlovich Сообщений: 143 Откуда: Москва Дата регистрации: 21.11.2007 |
У собственника файла своя программа, которой надо давать файлы в формате DBF-4. Программа их обрабатывает, а как она написана, собственник, я думаю, не знает. Дал им обычный DBF файл фокспро, мне прислали сообщение программы: "Файл импорта не открывается. "Файлы VFP не читаются"" и сказали, что надо давать DBF-4. Перевёл свой файл в DBF-4 командой COPY to ... type fox2x, получил с того конца сообщение: " "Недопустимый формат файла". Foxplus вместо FOX2X даёт точно такой же файл, все байты совпадают (команда COMP дала полное совпадение).
Посмотрел, чем отличается образец от аналогичного моего DBF-4 той же структуры и содержания, отличие в первых 32 байтах, далее всё одинаково. Я бы просто приклеил их вместо своих первых байтов, но они же разные в разных dbf файлах, зависят от числа записей и других параметров. |
Re: Как создать DBF файл заданного формата? | |
---|---|
of63 Автор Сообщений: 25254 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
Фокс-то читает образец, что-то знакомое (разница с фоксом - незаполнение положения поля в записи "offset", причем offset легко восстановить, т.е. действительно, можно не передавать в составе описателя поля фокс)... Где-то видел такое, не помню где.
Проверка заголовка DBF: Версия файла DBF: FoxBase+/Dbase III Проверка заголовков полей: Нулевой offset поля 1 Эмуляция: Исправление Field Offset 0-->1 поля 1 Нулевой offset поля 2 Эмуляция: Исправление Field Offset 0-->9 поля 2 ... Нулевой offset поля 15 Эмуляция: Исправление Field Offset 0-->383 поля 15 Проверка DBF RECCOUNT и размера файла - OK Проверка записей DBF, поля типа MN - OK |
Re: Как создать DBF файл заданного формата? | |
---|---|
Konstantin_Pavlovich Сообщений: 143 Откуда: Москва Дата регистрации: 21.11.2007 |
Спасибо! Сравнил мою базу данных, созданную через COPY TO ... TYPE FOX2X и образец, файлы отличаются только 2-4 байтами, номером версии dBase3 (dBase4), все остальные байты совпадают! Понятно, у клиента своя версия Dbase4, Fox при переводе ставит свои цифры. Так как эти цифры постоянны и не зависят от наполнения базы данных (от числа записей и т.п.), то просто возьму их из образца и на низком уровне, командой Fwrite вставлю их в свой файл. Я надеюсь, после этого клиентская программа примет мой DBF файл
|
Re: Как создать DBF файл заданного формата? | |
---|---|
of63 Автор Сообщений: 25254 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
Возможно не так... "файлы отличаются только 2-4 байтами" - если байты нумеруются с 1, то речь идет всего лишь о LUPDATE:
1..3 - байты, начиная с первого: Y,M,D (Y без столетия, естественно) |
Re: Как создать DBF файл заданного формата? | |
---|---|
Foxtrot Сообщений: 3408 Откуда: Куда: Дата регистрации: 25.04.2003 |
если проблема только с заголовком, то логичнее всего почистить файл присланный клиентом и уже его использовать как заготовку для заполнения
------------------ Мойте ноги, моя ноги вы моете и руки |
Re: Как создать DBF файл заданного формата? | |
---|---|
ry Сообщений: 2113 Дата регистрации: 24.09.2007 |
Судя по первому (нулевому) байту, это dBase-III Plus, он же FoxBase+, а не dBase-IV. Байты 1-3 (если с нуля считать) - это дата последней правки файла, можно не обращать внимание. Если других различий в заголовке нет, то странно, что таблица не воспринимается. Может, загвоздка в чем-то другом? Неизвестно же, на какую именно ошибку выдается сообщение программы "на той стороне". Может там, банально, антивирус держит файл и не дает открыть, а программа ругается на формат.
Кстати, а кто подскажет, почему в 9-й версии VFP и в более ранних описаны разные коды для одинаковых типов DBF? Из справки VFP9: File type: 0x01 FoxBASE: 0x02 FoxBASE+/Dbase III plus, no memo: 0x2F Visual FoxPro: 0x30 Visual FoxPro, autoincrement enabled: 0x31 Visual FoxPro, Varchar, Varbinary, or Blob-enabled: 0x42 dBASE IV SQL table files, no memo: 0x62 dBASE IV SQL system files, no memo: 0x82 FoxBASE+/dBASE III PLUS, with memo: 0x8A dBASE IV with memo: 0xCA dBASE IV SQL table files, with memo: 0xF4 FoxPro 2.x (or earlier) with memo: 0xFA Из справки VFP5: Type of file 0x02 FoxBASE 0x03 FoxBASE+/dBASE III PLUS, no memo 0x30 Visual FoxPro 0x43 dBASE IV SQL table files, no memo 0x63 dBASE IV SQL system files, no memo 0x83 FoxBASE+/dBASE III PLUS, with memo 0x8B dBASE IV with memo 0xCB dBASE IV SQL table files, with memo 0xF5 FoxPro 2.x (or earlier) with memo 0xFB FoxBASE |
Re: Как создать DBF файл заданного формата? | |
---|---|
of63 Автор Сообщений: 25254 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
В русском хелпе (с этого сайта) нет никаких 2F...
Тип файла: 0x02 FoxBASE 0x03 FoxBASE+/Dbase III plus, нет memo 0x30 Visual FoxPro 0x31 Visual FoxPro, поддержка свойства autoincrement 0x32 Visual FoxPro, поддержка полей типа Varchar, Varbinary, или Blob 0x43 dBASE IV SQL табличный файл, нет memo 0x63 dBASE IV SQL системный файл, нет memo 0x83 FoxBASE+/dBASE III PLUS, с memo 0x8B dBASE IV с memo 0xCB dBASE IV SQL табличный файл, с memo 0xF5 FoxPro 2.x (или младше) с memo 0xFB FoxBASE |
Re: Как создать DBF файл заданного формата? | |
---|---|
ry Сообщений: 2113 Дата регистрации: 24.09.2007 |
Тогда это еще более загадочно |
Re: Как создать DBF файл заданного формата? | |
---|---|
Qv_1 Сообщений: 201 Дата регистрации: 14.02.2007 |
Excel 2003 сохраняет свои файлы в dbf 4.
|
Re: Как создать DBF файл заданного формата? | |
---|---|
Crispy Сообщений: 18571 Дата регистрации: 16.05.2005 |
В английском вполне могли быть опечатки и неточности. По сути его выпускали, как оказалось, уже сидя на чемоданах. Русский же - специально проработан командой фоксклуба, в том числе и через подсказки остальных проверявших его участников данного форума. ------------------ В действительности все иначе, чем на самом деле. (Антуан де Сент-Экзюпери) |
Re: Как создать DBF файл заданного формата? | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Дашовиговорите ------------------ WBR, Igor |
Re: Как создать DBF файл заданного формата? | |
---|---|
akvvohinc Сообщений: 4219 Откуда: Москва Дата регистрации: 11.11.2008 |
В моей оригинальной версии Help'а нет никаких 0x2F
Не так. Надо получать таблицу командой
А тип FOX2X будет "портить" заголовок - ведь далеко не все типы данных, имеющиеся в VFP, поддерживались в FPD. Просто в этой таблице их нет. |
Re: Как создать DBF файл заданного формата? | |
---|---|
ry Сообщений: 2113 Дата регистрации: 24.09.2007 |
Хм. Проверил на другой машине, там стоит версия 9.0.0.2412, на ней нормальная справка. У меня 9.0.0.5815 и такая вот несуразица с байтами в DBF. |
Re: Как создать DBF файл заданного формата? | |
---|---|
of63 Автор Сообщений: 25254 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
Девствительно, в коробочной версии VFP9 (без SP), в файле справки от 14.06.2007 такая петрушка... Хорошо, что я по англ. не шарю )
File type: 0x01 FoxBASE: 0x02 FoxBASE+/Dbase III plus, no memo: 0x2F Visual FoxPro: 0x30 Visual FoxPro, autoincrement enabled: 0x31 Visual FoxPro, Varchar, Varbinary, or Blob-enabled: 0x42 dBASE IV SQL table files, no memo: 0x62 dBASE IV SQL system files, no memo: 0x82 FoxBASE+/dBASE III PLUS, with memo: 0x8A dBASE IV with memo: 0xCA dBASE IV SQL table files, with memo: 0xF4 FoxPro 2.x (or earlier) with memo: 0xFA Доб. Виноват. Достал коробку с фоксом, посмотрел там хелп - там правильный хелп-то, от 02.12.2004! А неправильный значит накатился вместе с SP каким-то (щас использую версию .5815) ... File type: 0x02 FoxBASE: 0x03 FoxBASE+/Dbase III plus, no memo: 0x30 Visual FoxPro: 0x31 Visual FoxPro, autoincrement enabled: 0x32 Visual FoxPro, Varchar, Varbinary, or Blob-enabled: 0x43 dBASE IV SQL table files, no memo: 0x63 dBASE IV SQL system files, no memo: 0x83 FoxBASE+/dBASE III PLUS, with memo: 0x8B dBASE IV with memo: 0xCB dBASE IV SQL table files, with memo: 0xF5 FoxPro 2.x (or earlier) with memo: 0xFB FoxBASE Исправлено 1 раз(а). Последнее : of63, 22.10.17 14:33 |
© 2000-2024 Fox Club  |