Помогите прочесть dbf файл #805039


#0 by Dimon1089
Не могу прочесть DBF файл АДО = Новый COMОбъект("ADODB.Connection"); // Создание COM-объекта по причине: Произошла исключительная ситуация (Microsoft JET Database Engine): Внешняя таблица не имеет предполагаемый формат. Исправлял dBASE III на dBASE IV тоже самое.
#1 by Волшебник
Используй объект XBase, встроенный в платформу 1С
#2 by Ёпрст
пробуй через оледб Соединение = "Provider=VFPOLEDB.1;Data Source=" + КаталогИБ + ";Mode=Read;Exclusive=No;Collating Sequence=MACHINE;TABLEVALIDATE TO 0"; или так: Соединение = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + КаталогИБ + ";Mode=Share Deny None;Extended Properties=dBase IV;";
#3 by SSSSS_AAAAA
При этом оба указанных драйвера надо сначала установить, они не штатные.
#4 by SSSSS_AAAAA
Сам файлик покажи, попробуем определить в каком конкретно он формате.
#5 by Dimon1089
#6 by Dimon1089
#7 by Dimon1089
по причине: Формат файла отличен от .DBF
#8 by SSSSS_AAAAA
Это FOXPRO. Используй первый вариант из . Драйвер искать на сайте мелкомягких по слову VFP OLEDB Provider. Драйвер только 32-битный, работать с ним, соответственно, только из 32-битной платформы.
#9 by Йохохо
попробуй этот загрузить отличаются типизацией полей
#10 by Dimon1089
Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (ADODB.Connection): Не удается найти указанного поставщика. Вероятно, он установлен неправильно. СтрокаСоединения = "Provider=VFPOLEDB.1;Data Source=" + КаталогИБ + ";Mode=Read;Exclusive=No;Collating Sequence=MACHINE;TABLEVALIDATE TO 0";
#11 by Dimon1089
Мне нужен первоначальный формат. Так как DBF в течении дня заполняется.
#12 by Йохохо
об этом в предупреждали
#13 by ils108
у меня такая ошибка уходила при запуске под админскими правами. и когда в дбф ридере каком-нить таблица открыта, тоже ругался. закрываешь таблицу все работает
#14 by Emery
> Не могу прочесть DBF файл Способов доступа к dbf  из 1C вагон и маленькая тележка. Самый простой путь воспользоваться советом Волшебника: «Используй объект XBase, встроенный в платформу 1С». Для любителей изощренных способов можно почитать тут . Там речь идет о «семерке», но это не принципиальный момент. Для общего развития могу сказать, что dbf без бинарного заголовка это обычный текст в формате sdf (поля фиксированной ширины без разделителей). Это намек, как можно работать с dbf без специализированных средств. Кстати, формат заголовка dbf хорошо известен и его легко сгенерировать самому ( ). В качестве лирического отступления могу рассказать о достоинствах и недостатках dbf-файлов. Об относительных преимуществах речь идет тут: , а про недостатки можно добавить то, что поле размера файла заголовка dbf является главным подозреваемым на вывод из строя жесткого диска нашего нетбука. Речь идет о моем драйвере для считывателей rfid-карт сотрудников при учете рабочего времени ( ). Там драйвер создает и заполняет dbf-файл во время считывания карточек пользователей. Эти считыватели китайские и шли безо всякого сопроводительного ПО, зато позволяли легко программировать собственное. Выбор формата dbf обусловливался удобством его дальнейшего использования в собственной конфигурации 1С77 по учету рабочего времени. Так вот главной моей ошибкой было то, что из-за необходимости заполнять поле размера файла в заголовке dbf, головка записи жесткого диска вынуждена была интенсивно дергаться из начала файла в конец и обратно (поскольку при входе / выходе на / с работы шел интенсивный обмен данных сотрудников со считывателями). Со временем файл данных сильно увеличился и головка диска явно подвергалась избыточным перегрузкам. В итоге это ожидаемо привело к выходу из строя жесткого диска, хотя пару лет он прослужил, а вот его «брат» близнец, работает до сих пор, поскольку обслуживает другой участок, где поток пользователей на порядок меньше. В итоге, жесткий диск мы поменяли, а драйвер я переделал. Теперь он создает простой текстовый файл в формате sdf. Головка диска работает только на допись, соответственно никакой избыточной нагрузки. А работать в конфигурации с текстовыми файлами ничуть не сложнее, чем с dbf. При желании можно даже генерировать в «семерке» основу для кодировки UTF-8, например, собственные xml-файлы (иногда это сделать гораздо удобнее без использования штатных средств). Ну и в заключении «раз пошла такая пьянка» скажу, что текстовый sdf-формат дает наводку на вопрос: А зачем вообще использовать заголовки в отдельных файлах баз данных, если их вполне можно вынести в отдельный файл для целой sdf-группы данных? Это плавно подводит нас к идее базы данных ориентированной на представление через колонки, а не строки. Т.е., не несколько строк в одном файле, а несколько колонок в одном файле (либо даже одна колонка в одном файле, как в самой крутой по производительности опенсорной базе данных «ClickHouse» от Яндекса). Это все к тому, как можно далеко зайти от невинного вопроса ТС :) .
#15 by Ёпрст
Вот с такой строкой твой файл прекрасно читается:     Соединение = "Provider=VFPOLEDB.1;Data Source=" + КаталогИБ + ";Collating Sequence=MACHINE"; если че, win 2012 x64
#16 by Ёпрст
КаталогИБ = "F:"; // тут свой путь воткнешь + в системе должен быть установлен vfp провайдер, вот отсюда, к примеру:     //
#17 by Ёпрст
+     Соединение = "Provider=VFPOLEDB.1;Data Source=" + КаталогИБ + ";Collating Sequence=MACHINE";     ОлеДБ.Open(Соединение);
#18 by SSSSS_AAAAA
+ ";Collating Sequence=MACHINE" совершенно бесполезная дописка ибо нужна только и исключительно при создании индексов.
#19 by Ёпрст
не только при создании
#20 by Ёпрст
#21 by Ёпрст
Это всё оттуда осталось.
#22 by Dimon1089
Всем спасибо))) Пошло)))
#23 by Dimon1089
Ошибка при установке значения атрибута контекста (ActiveConnection)     Command.ActiveConnection = ОлеДБ; по причине: Произошла исключительная ситуация (ADODB.Command): Для требуемой операции необходим объект OLE DB Session, не поддерживаемый текущим проводником. Провайдер установил
#24 by Ёпрст
см
#25 by SSSSS_AAAAA
Сия настройка стоит по умолчанию и потому явное ее указание - перебор. Если таки у вас она вдруг почему-то имеет другое значение, то это повод разобраться с настройками винды.
#26 by SSSSS_AAAAA
Откуда взялось Command.ActiveConnection = ОлеДБ; ?
#27 by Dimon1089
Ошибка при вызове метода контекста (Execute)     RecordSet = Command.Execute; по причине: Произошла исключительная ситуация (ADODB.Command): Невозможно использование подключения для выполнения операции. Оно закрыто или не допускается  в данном контексте.
#28 by Ёпрст
#29 by Dimon1089
Ошибка при вызове метода контекста (Execute) RecordSet = Command.Execute; по причине: Произошла исключительная ситуация (Microsoft OLE DB Provider for Visual FoxPro): d:dbfd_ppsp.dbf is not a table. vfp установлен DBF находится в папке d:dbf 28
#30 by Ёпрст
тот файл что в читается.
#31 by Ёпрст
Он у тя хотя бы дбф редактором каким открывается ?
#32 by Dimon1089
CDBF открывается
#33 by Dimon1089
CDBF открывается
#34 by Ёпрст
оледб откуда скачал хоть ? Там иссылка была
#35 by Ёпрст
и выложи файло, которое не читается
#36 by Dimon1089
это файлик
#37 by Dimon1089
оледб уже встроена была
#38 by Dimon1089
когда пересохраняю файлик все прекрасно работает
#39 by Ёпрст
значит смотри, чем отличается заголовок
#40 by Ёпрст
Или пробуй с другим провайдером, например, Microsoft.ACE.OLEDB.12.0
#41 by Dimon1089
немного не понял, какой заголовок
#42 by Ёпрст
смотри, чем отличается заголовок файла до правки в дбф редакторе и после.
#43 by Dimon1089
да вот именно ничем я на его пересахронил
#44 by Dimon1089
а можно как нибудь написать в 1с чтобы автоматом пересохронял файлс другим именем и менялся формат?
#45 by Ёпрст
проще взять другого поставщика. Или изначально создавать файло в нужном формате.
#46 by Dimon1089
этот файл загружается из другой программы
#47 by Йохохо
точно ничем?
#48 by Dimon1089
Типом поменялся до сохранения тип: Unknown после FoxBASE+/Dbase III plus, no memo
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С