powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / Лабуда при чтении VFP DBF (файл Парус-7) с помощью DBFEngine-1.06
25 сообщений из 41, страница 1 из 2
Лабуда при чтении VFP DBF (файл Парус-7) с помощью DBFEngine-1.06
    #39152799
alik-its
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте, коллеги!

Проблема следующая.

Значения из поля "NAME" файла с перечнем подразделений выглядит так:
[уйма пробелов]0007007Q[ещё немножко пробелов]Отдел обеспечения.
Кто может подсказать?
...
Рейтинг: 0 / 0
Лабуда при чтении VFP DBF (файл Парус-7) с помощью DBFEngine-1.06
    #39153106
Garrick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alik-its,

а как оно должно было выглядеть?
Как выглядит в FoxPro или Access?
Что нибудь с кодировкой?
...
Рейтинг: 0 / 0
Лабуда при чтении VFP DBF (файл Парус-7) с помощью DBFEngine-1.06
    #39153129
alik-its
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Должно было выглядеть
Отдел обеспечения
... А "0007007Q" - это слепленные значения двух первых полей: "0007" и "007Q".

Я сделал XBase-копию этого файла и попробовал считать значение - всё честно.
А с оригинальным файлом - что-то странное получается.

Там есть 6 мемо-полей. Может дело в этом?
...
Рейтинг: 0 / 0
Лабуда при чтении VFP DBF (файл Парус-7) с помощью DBFEngine-1.06
    #39153441
Partisan M
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не понял, в чём состоит проблема, так как нет вопроса.
Но для чтения базы Foxpro я испытал несколько готовых программ, и больше понравилась от Intelligent Converters (точностью, в том числе преобразуются поля MEMO).
Она преобразует базу из одного формата в другой, например, из Foxpro в MySQL, Oracle или ещё какой-нибудь.
Поскольку Foxpro устарело, то есть смысл конвертировать базу и пользоваться современной СУБД, а Foxpro отправить на свалку истории, хотя скрипты и экранные формы Foxpro не переносимы. В общем, можно посмотреть, правильно преобразует. Бесплатная тестовая версия преобразует только первые 5 записей таблицы. Если правильно, то преобразовать и потом работать с нормальной базой. Также можно в бесплатном LibreOffice, в компоненте Base, открыть этот файл базы. Есть ещё ряд программ, но в этой у меня тоже получилось правильно.
...
Рейтинг: 0 / 0
Лабуда при чтении VFP DBF (файл Парус-7) с помощью DBFEngine-1.06
    #39153444
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Partisan MПоскольку Foxpro устарело, то есть смысл конвертировать базу и пользоваться современной СУБД, а Foxpro отправить на свалку истории, хотя скрипты и экранные формы Foxpro не переносимы.
Я не Фокспрошник хотя замечу что в своём сегменте у FoxPro нет аналогов.
И если вы ставите знак равенства между произвольной DBMS и языком (и технологией)
то вы допускаете много ошибок.
...
Рейтинг: 0 / 0
Лабуда при чтении VFP DBF (файл Парус-7) с помощью DBFEngine-1.06
    #39153465
Partisan M
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonИ если вы ставите знак равенства между произвольной DBMS и языком (и технологией)
то вы допускаете много ошибок.

Я не допустил ни одной ошибки и ничего не писал про произвольную DBMS и язык (наверно, тоже произвольный). Foxpro устарело, что можно сообразить хотя бы потому, что последняя версия появилась в 2009 г., она 32-битная, её поддержка прекращена и новых версий не будет.
Технология (DBase-подобные СУБД) устарела (а DBase давно не существует).
Поэтому надо существующие базы сконвертировать в формат одной из современных СУБД и выбросить прежнюю базу вместе с её СУБД (относится ко всем DBase-подобным). Если по какой-то причине сейчас это сделать нельзя (потом всё равно придётся), то предложенный мной способ пригодится, чтобы посмотреть, какие на самом деле данные в исходных таблицах.
...
Рейтинг: 0 / 0
Лабуда при чтении VFP DBF (файл Парус-7) с помощью DBFEngine-1.06
    #39153534
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тоже не фокспрошник. Я бы сказал - к сожалению устарела.

При сравнении "устаревшие технологии" vs "новомодные", по большинству параметров "устаревшие" явно выигрывают.
...
Рейтинг: 0 / 0
Лабуда при чтении VFP DBF (файл Парус-7) с помощью DBFEngine-1.06
    #39154220
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Partisan MЯ не допустил ни одной ошибки и ничего не писал про произвольную DBMS и язык (наверно, тоже произвольный). Foxpro устарело, что можно сообразить хотя бы потому, что последняя версия появилась в 2009 г., она 32-битная, её поддержка прекращена и новых версий не будет.


Это было чисто "волюнтаристским" решением MS.
Но поначалу фанаты не давали закопать труп.
Да и сейчас, вроде бы, фанаты FoxPro его используют.

Partisan MТехнология (DBase-подобные СУБД) устарела (а DBase давно не существует).


В том то и фишка, что FoxPro это не совсем xBase.
А xBase с элементами SQL.
Данная технология живет и процветает в T-SQL и plSql. :-)
Т.е. процедурный яхык с элементами SQL.

Partisan MПоэтому надо существующие базы сконвертировать в формат одной из современных СУБД и выбросить прежнюю базу вместе с её СУБД (относится ко всем DBase-подобным). Если по какой-то причине сейчас это сделать нельзя (потом всё равно придётся), то предложенный мной способ пригодится, чтобы посмотреть, какие на самом деле данные в исходных таблицах.

Для "переноса" БД из DBF в любую другую БД есть куча различных программ.
Самый простой способ использовать MS Excel.
...
Рейтинг: 0 / 0
Лабуда при чтении VFP DBF (файл Парус-7) с помощью DBFEngine-1.06
    #39154267
alik-its
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте, коллеги!

Задача как раз и состоит в том, чтобы без лишних движений руками
сравнить между собой данные в файлах "Паруса" и во внутренней ИС
и вывести в отдельный файлик журнал результатов.

Если у кого-то есть опыт программной обработки DBF-файлов "Паруса",
подскажите, пожалуйста!
...
Рейтинг: 0 / 0
Лабуда при чтении VFP DBF (файл Парус-7) с помощью DBFEngine-1.06
    #39154400
Garrick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alik-itsДолжно было выглядеть
Отдел обеспечения
... А "0007007Q" - это слепленные значения двух первых полей: "0007" и "007Q".

Могу предположить, что ваш драйвер неправильно обрабатывает файл DBF. Попробуйте другой драйвер. Либо в этом, если есть возможность, указать другой тип DBF (они бывают разные).
...
Рейтинг: 0 / 0
Лабуда при чтении VFP DBF (файл Парус-7) с помощью DBFEngine-1.06
    #39155085
Partisan M
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgulДля "переноса" БД из DBF в любую другую БД есть куча различных программ.

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

Ограниченная поддержка SQL в FoxPro не имеет отношения к теме, т.к. обсуждается чтение файлов базы данных.
...
Рейтинг: 0 / 0
Лабуда при чтении VFP DBF (файл Парус-7) с помощью DBFEngine-1.06
    #39155239
alik-its
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чтобы привести начальный файл в читаемое состояние
(критерий этого - корректный доступ из MSAccess2003),
мне пришлось пересохранить его в формате DBaseIV
из DBFNavigator.

Напомню задачу. Прочитать DBF-файл, распакованный
из архива БД "Парус-7" без промежуточных ручных
преобразований.
...
Рейтинг: 0 / 0
Лабуда при чтении VFP DBF (файл Парус-7) с помощью DBFEngine-1.06
    #39155255
Garrick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alik-itsЧтобы привести начальный файл в читаемое состояние
(критерий этого - корректный доступ из MSAccess2003),
мне пришлось пересохранить его в формате DBaseIV
из DBFNavigator.

Напомню задачу. Прочитать DBF-файл, распакованный
из архива БД "Парус-7" без промежуточных ручных
преобразований.
Файлы DBF, созданные разными программами, как ни странно, и конечно же благодаря Microsoft (а кто же ещё?), имеют разную структуру. Например файлы FoxPro отличаются от dBase расширенным форматом MEMO полей, FoxPro 2 от FoxPro 3 кодировкой CP866-WIN1251 и т.п. И конечно же все они отличаются структурой индексов. Вам надо точно определиться с форматом ваших исходных файлов. Судя по описанию вашей проблемы, инструмент, которым вы пользуетесь, неверно определяет границы полей в файле и показывает вам часть файла, включающую несколько полей, как оно поле. Т.к. с размерностью полей в DBF напутать довольно сложно, могу предположить, что смещение идёт из-за другой размерности заголовка файла, нежели предполагает ваш инструмент. Попробуйте поискать альтернативу или выставить правильные настройки для чтения DBF файла, если ваш инструмент предполагает какие-либо настройки.
...
Рейтинг: 0 / 0
Лабуда при чтении VFP DBF (файл Парус-7) с помощью DBFEngine-1.06
    #39162036
alik-its
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот здесь описана вся схема DBF-заголовка, включая тип 48, как в моём случае.
При рассмотрении в строковом виде нашёл фрагмент в 264 байта, начинающийся с "parus.dbс".
Делаю, вроде, по схеме, но получаю всё равно кривой расклад по полям.
...
Рейтинг: 0 / 0
Лабуда при чтении VFP DBF (файл Парус-7) с помощью DBFEngine-1.06
    #39162110
Garrick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alik-its,

файл в какой ОС был создан?
...
Рейтинг: 0 / 0
Лабуда при чтении VFP DBF (файл Парус-7) с помощью DBFEngine-1.06
    #39162178
alik-its
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кажется, Windows ХР.
Думаю, если и Far-овский плагин, и DBFNavigator его корректно открывают,
Значит я что-то криво делаю.

... Сижу вот - прочтённые байты считаю.
Заголовок - 32, поля - тоже по 32, символ окончания заголовка на месте.
Потом идёт parus.dbс и куча \0, потом - первое значение первого поля.
Расстояние между первым и вторым значениями первого поля соответствует размеру записи.
... В приведённой схеме есть что-то про зарезервированный фрагмент после описания полей...
...
Рейтинг: 0 / 0
Лабуда при чтении VFP DBF (файл Парус-7) с помощью DBFEngine-1.06
    #39162188
alik-its
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alik-itsПри рассмотрении в строковом виде нашёл фрагмент в 264 байта, начинающийся с "parus.dbс".
Когда пытаюсь считать значение первого поля первой записи, получаю "arus", -
первое поле - типа С4. То есть читать мой обработчик начинает задолго до нужного значения,
но на 1 знак позже, чем символ конца заголовка.
...
Рейтинг: 0 / 0
Лабуда при чтении VFP DBF (файл Парус-7) с помощью DBFEngine-1.06
    #39162595
Garrick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alik-its,

Другую библиотеку для чтения DBF не пробовали? Их же полно разных.
...
Рейтинг: 0 / 0
Лабуда при чтении VFP DBF (файл Парус-7) с помощью DBFEngine-1.06
    #39162647
alik-its
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Другие не пробовал, а эту взял за наличие исходников.
Сейчас опять поищу...
...
Рейтинг: 0 / 0
Лабуда при чтении VFP DBF (файл Парус-7) с помощью DBFEngine-1.06
    #39162673
alik-its
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
... Или мёртвые ссылки, или через JDBC-ODBC, - а это мне не подходит.
Пробовал на дуру вырезать лишних 264 байта между концом заголовка
и началом данных, тоже некорректно читает.
Прикладываю используемый пакет: вдруг кому интересно станет.
...
Рейтинг: 0 / 0
Лабуда при чтении VFP DBF (файл Парус-7) с помощью DBFEngine-1.06
    #39162718
alik-its
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
... А, ну да! А файлик, который надо прочитать - вот.
...
Рейтинг: 0 / 0
Лабуда при чтении VFP DBF (файл Парус-7) с помощью DBFEngine-1.06
    #39162749
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ни sdbf Ни dbf manager открыть файл могут.

LibreOffice открывает и вроде нормально, можно через его Java API попробовать вытащить данные (SDK качнуть надо будет)

hxtt драйвер нормально читает но он платный
...
Рейтинг: 0 / 0
Лабуда при чтении VFP DBF (файл Парус-7) с помощью DBFEngine-1.06
    #39162760
alik-its
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот у этого мастера есть инструмент, который открывает любые DBF.
И ещё FAR-овский плагин LOOKDBF - тоже спокойно и чётко открывает.
Значит у них учтены тонкости о которых мы не знаем!

К А К И Е ? ! !
...
Рейтинг: 0 / 0
Лабуда при чтении VFP DBF (файл Парус-7) с помощью DBFEngine-1.06
    #39162791
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ни sdbf Ни dbf manager открыть файл не могут.

авторЗначит у них учтены тонкости о которых мы не знаем!

единого стандарта нет на dbf поэтому кто как реализовывал в те годы
...
Рейтинг: 0 / 0
Лабуда при чтении VFP DBF (файл Парус-7) с помощью DBFEngine-1.06
    #39162834
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alik-its... А, ну да! А файлик, который надо прочитать - вот.
Не прошло и недели, автор догадался файл выложил....

Такими темпами, думаю задачу раньше чем через неделю решить не реально )))
...
Рейтинг: 0 / 0
25 сообщений из 41, страница 1 из 2
Форумы / Java [игнор отключен] [закрыт для гостей] / Лабуда при чтении VFP DBF (файл Парус-7) с помощью DBFEngine-1.06
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]