:: Visual Foxpro, Foxpro for DOS
Как создать DBF файл заданного формата?
Konstantin_Pavlovich

Сообщений: 143
Откуда: Москва
Дата регистрации: 21.11.2007
Клиент прислал образец DBF файла (приложен к теме), говорит, что это DBF-4 (Dbase-IV ?). Файл прекрасно открывается в Foxpro без преобразований. Надо передавать клиенту файлы такого же формата из своей Foxpro программы. Но что это за формат такой и как его сделать? Все попытки получить такой формат экспортом из Foxpro7 или командой Copy to с разными параметрами type (foxplus, fox2x) дают другой формат, который клиент не понимает. Может кто знает, как можно перевести обычный dbf файл Foxpro в заданный формат?


------------------
С уважением
Стороженко Константин Павлович
Ratings: 0 negative/0 positive
Re: Как создать DBF файл заданного формата?
Pliskin

Сообщений: 2959
Откуда: Новосибирск
Дата регистрации: 19.11.2003
COPY TO <file> TYPE FOXPLUS
Ratings: 0 negative/0 positive
Re: Как создать DBF файл заданного формата?
Божья_коровка

Сообщений: 25731
Дата регистрации: 23.08.2001
Вроде ж ИК уже ответил в такой же теме -
Цитата:
Иначе - ищи полноценный ODBC драйвер или OLEDB провайдер к этой системе...

Konstantin_Pavlovich
Все попытки получить такой формат экспортом из Foxpro7 или командой Copy to с разными параметрами type (foxplus, fox2x) дают другой формат, который клиент не понимает.
Надо спросить у собственника файла, а чем всё же он его создавал, если его средства не могут прочитать то что вы создаете в фоксе, насколько я поняла.


------------------
Жись, она как зёбра, полоса белая, полоса черная, а мне всегда задница достается...




Исправлено 1 раз(а). Последнее : Божья_коровка, 11.10.17 19:11
Ratings: 0 negative/0 positive
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 файлах, зависят от числа записей и других параметров.
Ratings: 0 negative/0 positive
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
Ratings: 0 negative/0 positive
Re: Как создать DBF файл заданного формата?
Konstantin_Pavlovich

Сообщений: 143
Откуда: Москва
Дата регистрации: 21.11.2007
Спасибо! Сравнил мою базу данных, созданную через COPY TO ... TYPE FOX2X и образец, файлы отличаются только 2-4 байтами, номером версии dBase3 (dBase4), все остальные байты совпадают! Понятно, у клиента своя версия Dbase4, Fox при переводе ставит свои цифры. Так как эти цифры постоянны и не зависят от наполнения базы данных (от числа записей и т.п.), то просто возьму их из образца и на низком уровне, командой Fwrite вставлю их в свой файл. Я надеюсь, после этого клиентская программа примет мой DBF файл
Ratings: 0 negative/0 positive
Re: Как создать DBF файл заданного формата?
of63
Автор

Сообщений: 25254
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
Возможно не так... "файлы отличаются только 2-4 байтами" - если байты нумеруются с 1, то речь идет всего лишь о LUPDATE:
1..3 - байты, начиная с первого: Y,M,D (Y без столетия, естественно)
Ratings: 0 negative/0 positive
Re: Как создать DBF файл заданного формата?
Foxtrot

Сообщений: 3408
Откуда: Куда:
Дата регистрации: 25.04.2003
если проблема только с заголовком, то логичнее всего почистить файл присланный клиентом и уже его использовать как заготовку для заполнения


------------------
Мойте ноги, моя ноги вы моете и руки
Ratings: 0 negative/0 positive
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
Ratings: 0 negative/0 positive
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
Ratings: 0 negative/0 positive
Re: Как создать DBF файл заданного формата?
ry

Сообщений: 2113
Дата регистрации: 24.09.2007
of63
В русском хелпе (с этого сайта) нет никаких 2F...
Тогда это еще более загадочно
Ratings: 0 negative/0 positive
Re: Как создать DBF файл заданного формата?
Qv_1

Сообщений: 201
Дата регистрации: 14.02.2007
Excel 2003 сохраняет свои файлы в dbf 4.
Ratings: 0 negative/0 positive
Re: Как создать DBF файл заданного формата?
Crispy

Сообщений: 18571
Дата регистрации: 16.05.2005
ry
of63
В русском хелпе (с этого сайта) нет никаких 2F...
Тогда это еще более загадочно
В английском вполне могли быть опечатки и неточности. По сути его выпускали, как оказалось, уже сидя на чемоданах.
Русский же - специально проработан командой фоксклуба, в том числе и через подсказки остальных проверявших его участников данного форума.


------------------
В действительности все иначе, чем на самом деле.
                                      (Антуан де Сент-Экзюпери)
Ratings: 0 negative/0 positive
Re: Как создать DBF файл заданного формата?
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Crispy
Русский же - специально проработан командой фоксклуба, в том числе и через подсказки остальных проверявших его участников данного форума.
Дашовиговорите


------------------
WBR, Igor
Ratings: 1 negative/0 positive
Re: Как создать DBF файл заданного формата?
akvvohinc

Сообщений: 4219
Откуда: Москва
Дата регистрации: 11.11.2008
ry
Из справки VFP9:
File type: 0x01
FoxBASE: 0x02
FoxBASE+/Dbase III plus, no memo: 0x2F

В моей оригинальной версии Help'а нет никаких 0x2F

Konstantin_Pavlovich
Спасибо! Сравнил мою базу данных, созданную через COPY TO ... TYPE FOX2X и образец, файлы отличаются только 2-4 байтами, номером версии dBase3 (dBase4), все остальные байты совпадают!

Не так.

Надо получать таблицу командой
COPY TO ... TYPE FOXPLUS
а затем в заголовке для каждого поля нулить байты 12-15 (Displacement of field in record)

А тип FOX2X будет "портить" заголовок - ведь далеко не все типы данных, имеющиеся в VFP, поддерживались в FPD. Просто в этой таблице их нет.
Ratings: 0 negative/0 positive
Re: Как создать DBF файл заданного формата?
ry

Сообщений: 2113
Дата регистрации: 24.09.2007
akvvohinc
В моей оригинальной версии Help'а нет никаких 0x2F

Хм. Проверил на другой машине, там стоит версия 9.0.0.2412, на ней нормальная справка. У меня 9.0.0.5815 и такая вот несуразица с байтами в DBF.
Ratings: 0 negative/0 positive
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
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 22 (Гостей: 22)

© 2000-2024 Fox Club 
Яндекс.Метрика