powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Другие СУБД [игнор отключен] [закрыт для гостей] / Как с помощью VB (VBA) или C++ вытянуть инфу из *.DDF(Pervasive)
15 сообщений из 15, страница 1 из 1
Как с помощью VB (VBA) или C++ вытянуть инфу из *.DDF(Pervasive)
    #37537443
Flash75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте! Столкнулся с такой проблемой, есть бухгалтерская программа, "FinExpert" её кличут, она работает с таблицами базы Pervasive, точнее даже, по моему Btrive 6.5, таблицы в ней с расширением *.DDF, так же имеется отдельная папка "ODBC" с файлами Field.ddf, File.ddf, Index.ddf, программка умеет выкидывать нужные данные в Excel и DBF файлы,но программка не очень сильна в округлениях и по этому есть разница в начислениях и удержаниях с них, я написал программку для бухгалтеров для вылавливания таких багов, но вся суть в том, что бухгалтера настолько древние, что не могут даже экспортировать данные в Excel из программы и требуют чтобы все делалось одним нажатием волшебной кнопочки, но так как я с этой базой раньше не дружил, то и как вытянуть данные из файлов DDF не знаю, помогите пожалуйста знающие люди подключиться к этой базе программно(C++ или VB) и вытянуть информацию из таблиц.
Заранее благодарен!
...
Рейтинг: 0 / 0
Как с помощью VB (VBA) или C++ вытянуть инфу из *.DDF(Pervasive)
    #37537914
golsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если работа идет через Pervasive - создайте ODBC источник и работайте через него. Если работа через Btrieve - поищите SDK (Software Development Kit) на www.Pervasive.com
...
Рейтинг: 0 / 0
Как с помощью VB (VBA) или C++ вытянуть инфу из *.DDF(Pervasive)
    #37538679
Flash75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
golsa,

В том то и дело, по той инфе что я нашел по подключению через ODBC, нужно на сервере(установлен Pervasive SQL 10sp3) через Pervasive Control Centr создать базу данных и прописать путь к таблицам базы, а как мне его прописать если таблицы *.DDF лежат в отдельных папках(погодичных, помесячных и т.д.) затем установить в Администраторе источника данных ODBC драйвер Pervasive DNS engine ODBC и указать в нем вновь созданную базу на клиенте установить Pervasive ODBC Client Interface указать сервер и созданную базу, но вот вопрос как работать с теми таблицами которые лежат в других папках, или я чегото недопонял?
...
Рейтинг: 0 / 0
Как с помощью VB (VBA) или C++ вытянуть инфу из *.DDF(Pervasive)
    #37539666
golsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
C 10-кой не работал - ничего сказать не могу, но в Pervasive 2000 и Pervasive 9 DDF файлы (дата дефинишен файл - это системные таблицы Pervasive) должны быть в одной папке с таблицами данных. Так что копируйте DDF файлики из папки ODBC в папку к данным и назначайте БД на нее.
...
Рейтинг: 0 / 0
Как с помощью VB (VBA) или C++ вытянуть инфу из *.DDF(Pervasive)
    #37540399
Flash75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
golsa,
в этой программе одни ddf таблицы и они раскиданы по папкам, допустим: папка 2010 в ней
в ней общие таблиці ddf формата (там, годовые справочники и т.д.) затем идут папки с таблицами месячной фиксацией 01; 02; и т.д, мне нужно каждый месяц выбирать данные из разных папок, можно конечно попробовать программно копировать эти несколько таблиц в папку ODBC к которой подключена база, но это чего то не совсем правильно, ведь как то же прога выкидывает данные в excel и dbf файлы а из драйверов подключен только Microsoft acces dBase driver для dbf файлов и ни каких pervasive или btrieve дров нет, папку с программой тупо копируешь на сервак даеш доступ, на клиентах подключаешь сетевой диск, добавляеш в менеджере ODBC, Microsoft acces dBase driver(без него не будет сбрасывать в dbf) и ставишь на сервер серверную а на клиентский клиентские части Pervasive PSQL можно от 2000 и до 10sp3 и все работает.
Может есть какой то другой способ?
...
Рейтинг: 0 / 0
Как с помощью VB (VBA) или C++ вытянуть инфу из *.DDF(Pervasive)
    #37541746
Garrick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Flash75,

Файлы Btrieve, оно же Pervasive имеют строго бинарную структуру и не имеют заголовка с описанием структуры файла, как например некоторые бругие СУБД. Поэтому для работы с такими файлами нужно описание их структуры, которое поставляется отдельно, обычно в файлах с расширением DDF (Data Definition File). Вам повезло, что они у вас есть, т.к. для работы готового приложения с Btrieve эти файлы не нужны, описание структуры базы зашивается в код программы и тогда уже работа сторонних приложений с этой базой данных становится невозможной. Скормите свои DDF файлы менеджеру ODBC и радуйтесь.
...
Рейтинг: 0 / 0
Как с помощью VB (VBA) или C++ вытянуть инфу из *.DDF(Pervasive)
    #37541763
golsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Системные таблицы Pervasive:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
ATTRIB.DDF
COMMENT.DDF
FIELD.DDF
FIELDEXT.DDF
FILE.DDF
INDEX.DDF
OCCURS.DDF
PROC.DDF
RELATE.DDF
RIGHTS.DDF
TRIGGER.DDF
VARIANT.DDF
VIEW.DDF
Если они есть - пробуй назначить БД на эту папку.
...
Рейтинг: 0 / 0
Как с помощью VB (VBA) или C++ вытянуть инфу из *.DDF(Pervasive)
    #37543460
Flash75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо вам за помощь и терпение, вроде все делаю как вы советуете, создаю новую базу и направляю в папку с файлами программы FinExpert
FIELD.DDF
FILE.DDF
INDEX.DDF
при этом убираю галочку Create dictionary files, чтоб не затереть эти файлы, остальные файлы создаются сами, затем закидываю в эту папку таблицы программы FinExpert, они тоже в формате DDF, а не как в дэмо базе MKD,но в Pervasive Control Centr эти таблицы почемуто не отображаются, вопрос такой, почему сами рабочие таблицы программы FinExpert в формате DDF, значит ли это, что с ними можно работать на прямую без FIELD.DDF FILE.DDF INDEX.DDF, и от сюда еще один вопрос, могут ли эти таблицы иметь еще какую то защиту от дураков?

Еще раз спасибо за помощь и терпение!
...
Рейтинг: 0 / 0
Как с помощью VB (VBA) или C++ вытянуть инфу из *.DDF(Pervasive)
    #37543565
Garrick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Flash75почему сами рабочие таблицы программы FinExpert в формате DDF
Расширение файлов Btrieve/Pervasive никак не регламинтируется, оно может быть любым по усмотрению разработчика или отсутствовать вовсе.
Flash75значит ли это, что с ними можно работать на прямую без FIELD.DDF FILE.DDF INDEX.DDF

Нет
...
Рейтинг: 0 / 0
Как с помощью VB (VBA) или C++ вытянуть инфу из *.DDF(Pervasive)
    #37543855
golsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А какие-то таблицы есть, или получается пустая БД?
...
Рейтинг: 0 / 0
Как с помощью VB (VBA) или C++ вытянуть инфу из *.DDF(Pervasive)
    #37545193
Flash75
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
golsa,

Блин, сейчас только дошло(не без вашей конечно помощи), я сначала думал что файлы FIELD.DDF FILE.DDF INDEX.DDF это какоето общее описание таблиц используемой базы данных, но потом полазив и поковыряв понял, что там описывается структура каждой таблицы используемой в конкретной базе, с помощью шамана и бубна я подложил нужную мне таблицу в demo базу и переименовал ее в файл одной из прописанных там таблиц, она конечно стала видимой, но естественно с нулевым поподанием собственого формата в формат таблицы demo базы, потом просмотрел те ddf файлы, которые я нашел в своей программе, в папке с обнадеживающим названием ODBC и увидел, что они описывают только собственные структуры и ниодной таблицы из этой же прорграммы(таблиц там, что то около 300 - от, а мне нужны лиш две из них), так моя надежда наоблегчение труда нашим доблестным бухгалтерам, помоему, рухнула, или всетаки можно еще спасти нашу бухгалтерию от финансового и нервного краха?
...
Рейтинг: 0 / 0
Как с помощью VB (VBA) или C++ вытянуть инфу из *.DDF(Pervasive)
    #37547095
golsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если речь идет о паре таблиц, то можно попытаться.
Утилита BUTIL прилагаемая к Pervasive в помощь:

BUTIL -SAVE <sourceFile> <unformattedFile>
Выгружает данные в файл не меняя формата полей.
Записи идут одна за другой. Перед каждой записью выводится длина записи и запятая. Больше ни какой дополнительной информации.
Если записи фиксированной длины, то 99,99% что и структура фиксирована.
А дальше терпение и дедукция. Подбери структуру, тем более если знаешь какие данные в этих таблицах хранятся.

Типы данных:
Integer (4)
Real (4)
Dooble (8)
Текстовые поля (видны в файле) могут быть двух видов:
1 - а ля Pascal (начинается с байта содержащего длину (0-255))
2 - массив символов
и т.д.
Описание стандартных типов ищи на www.Pervasive.com

BUTIL -STAT <sourceFile>
Даст длину записи и число записей, а также начало (смещение в записи), длину и предполагаемый тип полей входящих в индексы.

Подобрав структуру, можно пойти 2 путями:
1 - Через ODBC. Создать в пустой БД таблицы по выявленной структуре и затем подсунуть настоящие файлы.
2 - Через API Btrieve.
...
Рейтинг: 0 / 0
Как с помощью VB (VBA) или C++ вытянуть инфу из *.DDF(Pervasive)
    #37745936
lesha_m_ua
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Flash75,

В FinExpert в приложении "Администрирование" есть возможность сгенерировать словари FILE.DDF, FIELD.DDF и INDEX.DDF
...
Рейтинг: 0 / 0
Как с помощью VB (VBA) или C++ вытянуть инфу из *.DDF(Pervasive)
    #37745939
lesha_m_ua
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А где, если не секрет, до сих пор Финик используют ?
...
Рейтинг: 0 / 0
Как с помощью VB (VBA) или C++ вытянуть инфу из *.DDF(Pervasive)
    #37746874
Фотография Человек-триплоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Когда-то конвертировал DDF - файлы клиент-сбербанка. По структуре они были аналогичны dbf.
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Другие СУБД [игнор отключен] [закрыт для гостей] / Как с помощью VB (VBA) или C++ вытянуть инфу из *.DDF(Pervasive)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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