Dbf — Скажите пожалуйста как использовать DBF файлы в PHP


Dbf — Скажите пожалуйста как использовать DBF файлы в PHP?

Здесь могла бы быть ваша реклама

Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006
Откуда: Israel

Секрет
Теперь, когда вы уже наверняка второпях отправили свой запрос,
я расскажу вам простой секрет, который сэкономит вам уйму ожиданий,
даже если первый ответ по теме последуем сразу же.

Само собой я знаю что ответят мне тут же, и если я посмотрю
на сообщения на форуме, то пойму что в общем то я и не ошибаюсь.
Но еще я точно замечу, что очень мало тем, в которых всего два ответа :
вопрос автора и еще два сообщение вида Ответ + Спасибо

После этого приходится начинать уточнять этим неграмотным что мне надо.
Они что, сами читать не умеют? А уточнять приходится.
И иногда пока они переварят то что я им скажу проходит и не одна ночь..

Уверен что если бы я им сказал что у меня есть
фиолетовый квадрат, и нужно превратить его в синий треугольник
и я пытался взять кисточку, макнуть в банку и поводить ей по квадрату
но почему то кисточка не принимала цвет краски в банке,
то на мой вопрос — где взять правильные банки мне бы ответили гораздо быстрее
предложив её открыть, а не тратить еще стольник на жестянку.

Поэтому с тех пор я строю свои вопросы по проверенной давным давно схеме:
Что есть
Что нужно получить
Как я пытался
Почему или что у меня не получилось.

На последок как оно происходит на форумах

Новичок: Подскажите пожалуста самый крепкий сорт дерева! Весь инет перерыл, поиском пользовался!
Старожил: Объясни, зачем тебе понадобилось дерево? Сейчас оно в строительстве практически не используется.
Новичок: Я небоскрёб собираюсь строить. Хочу узнать, из какого дерева делать перекрытия между этажами!
Старожил: Какое дерево? Ты вообще соображаешь, что говоришь?
Новичок: Чем мне нравиться этот форум — из двух ответов ниодного конкретного. Одни вопросы неподелу!
Старожил: Не нравится — тебя здесь никто не держит. Но если ты не соображаешь, что из дерева небоскрёбы не строят, то лучше бы тебе сначала школу закончить.
Новичок: Не знаите — лучше молчите! У меня дедушка в деревянном доме живёт! У НЕГО НИЧЕГО НЕ ЛОМАЕТСЯ.
Но у него дом из сосны, а я понимаю, что для небоскрёба нужно дерево прочнее! Поэтому и спрашиваю. А от вас нормального ответа недождёшся.
Прохожий: Самое крепкое дерево — дуб. Вот тебе технология вымачивания дуба в солёной воде, она придаёт дубу особую прочность:
Новичок: Спасибо, братан! То что нужно.

Отредактировано модератором: Uchkuma, 26 Апреля, 2011 — 10:21:12

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

(0)
пробуй через оледб

или так:
Соединение = «Prov ;

SSSSS_AAAAA SSSSS_AAAAA SSSSS_AAAAA

(8) Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (ADODB.Connection): Не удается найти указанного поставщика. Вероятно, он установлен неправильно.

КаталогИБ = «D:\Bd_ppsp.dbf»;
СтрокаСоединения = «Prov ;

Способов доступа к dbf из 1C вагон и маленькая тележка. Самый простой путь воспользоваться советом Волшебника: «Используй объект XBase, встроенный в платформу 1С». Для любителей изощренных способов можно почитать тут http://www.sql.ru/forum/601874/vs-rabota-s-dbf . Там речь идет о «семерке», но это не принципиальный момент.

Для общего развития могу сказать, что dbf без бинарного заголовка это обычный текст в формате sdf (поля фиксированной ширины без разделителей). Это намек, как можно работать с dbf без специализированных средств. Кстати, формат заголовка dbf хорошо известен и его легко сгенерировать самому ( http://emery-emerald.narod.ru/Cpp/2E14.html ).

В качестве лирического отступления могу рассказать о достоинствах и недостатках dbf-файлов. Об относительных преимуществах речь идет тут: http://www.sql.ru/forum/1212962/otnositelnye-preimushhestva-dbf-faylov , а про недостатки можно добавить то, что поле размера файла заголовка dbf является главным подозреваемым на вывод из строя жесткого диска нашего нетбука. Речь идет о моем драйвере для считывателей rfid-карт сотрудников при учете рабочего времени ( http://emery-emerald.narod.ru/Others/ElPath.html ). Там драйвер создает и заполняет dbf-файл во время считывания карточек пользователей. Эти считыватели китайские и шли безо всякого сопроводительного ПО, зато позволяли легко программировать собственное. Выбор формата dbf обусловливался удобством его дальнейшего использования в собственной конфигурации 1С77 по учету рабочего времени. Так вот главной моей ошибкой было то, что из-за необходимости заполнять поле размера файла в заголовке dbf, головка записи жесткого диска вынуждена была интенсивно дергаться из начала файла в конец и обратно (поскольку при входе / выходе на / с работы шел интенсивный обмен данных сотрудников со считывателями). Со временем файл данных сильно увеличился и головка диска явно подвергалась избыточным перегрузкам. В итоге это ожидаемо привело к выходу из строя жесткого диска, хотя пару лет он прослужил, а вот его «брат» близнец, работает до сих пор, поскольку обслуживает другой участок, где поток пользователей на порядок меньше.

В итоге, жесткий диск мы поменяли, а драйвер я переделал. Теперь он создает простой текстовый файл в формате sdf. Головка диска работает только на допись, соответственно никакой избыточной нагрузки. А работать в конфигурации с текстовыми файлами ничуть не сложнее, чем с dbf. При желании можно даже генерировать в «семерке» основу для кодировки UTF-8, например, собственные xml-файлы (иногда это сделать гораздо удобнее без использования штатных средств).

Ну и в заключении «раз пошла такая пьянка» скажу, что текстовый sdf-формат дает наводку на вопрос: А зачем вообще использовать заголовки в отдельных файлах баз данных, если их вполне можно вынести в отдельный файл для целой sdf-группы данных? Это плавно подводит нас к идее базы данных ориентированной на представление через колонки, а не строки. Т.е., не несколько строк в одном файле, а несколько колонок в одном файле (либо даже одна колонка в одном файле, как в самой крутой по производительности опенсорной базе данных «ClickHouse» от Яндекса).

Это все к тому, как можно далеко зайти от невинного вопроса ТС :) .

Вот с такой строкой твой файл прекрасно читается:
Соединение = «Prov ;

Работа с файлами DBF в 1С 8.3

Одним из самых распространенных форматов баз данных до сих пор остается формат DBF. И неумение работать с ним из 1С – серьезное ограничение профессиональных навыков для любого специалиста. Тем более изучение теории и практика по этому вопросу потребует совсем немного времени. К тому же работа с DBF файлом никаких дополнительных библиотек не требует – все инструменты встроены в платформу 1С 8.3.

Чтение, создание DBF и запись в данный формат

Вся работа с DBF в 1С происходит с помощью специального объекта – xBase. Рассмотрим основные действия с файлами, начав с чтения из конкретного DBF. В первую очередь необходимо расположить файл базы данных в каталоге, куда есть доступ у пользователя. Код для считывания данных в 1С достаточно прост:

  1. Указываем путь к базе в формате DBF;
  2. Создаем объект для взаимодействия с файлом, открываем его и устанавливаем указатель на первую строку с данными;
  3. В цикле обходим всю базу и производим действия с элементами. В данном случае просто отражаем их на экране пользователя;
  4. Закрываем файл.

Вторая часто встречающаяся задача по взаимодействию с объектом – выгрузка DBF из 1С 8.3. Здесь намного легче создать конечный файл нужного формата программно, чем использовать дополнительно программное обеспечение. Этот алгоритм в 1С тоже достаточно прост и состоит из нескольких строк кода:

  1. Создаем объект XBase;
  2. Определяем кодировку нового файла. Существует кодировка для Windows – ANSI и OEM предназначенная для DOS;
  3. Необходимо описать все колонки будущего файла DBF, указав их тип;
  4. Укажем каталог, в котором будет происходить создание DBF и запишем итоговый файл.

После того как мы создали файл нужного формата, потребуется выгрузка в DBF данных. Программируя этот процесс, помните о том, что данные ИБ находятся на сервере. Чтобы записать имеющиеся данные из 1С необходимо к предыдущему коду добавить следующий алгоритм:

  1. Получаем информацию из справочника;
  2. В цикле последовательно добавляем по 1строчке и записываем;
  3. Закрываем файл и проверяем, что запись прошла удачно.

Это основы работы с данным форматом. Существуют и другие способы открыть из 1С DBF, но xBase остается самым простым по синтаксису и пониманию. Поняв, как осуществляется простейшая выгрузка и загрузка из DBF, можно приступать к более сложным элементам, например, использованию индексов для поиска, удалению или изменению конкретных записей в DBF, а также применению технологии ADO.

Работа с файлами DBF

DBF – широко распространенный формат хранения данных, появившийся в 80-х годах прошлого века. Впервые формат применялся в семействе СУБД dBase. В связи с популярностью и широким распространением dBase, было создано множество dBase-подобных программных продуктов, получивших собирательное название xBase. Несмотря на значительный возраст формата, он до сих пор достаточно широко используется. В данной статье рассматриваются способы работы с DBF из «1С:Предприятие».

В «1С:Предприятие» для работы с файлами формата DBF(версия dBase III) применяется специальный программный объект – xBase. Работа с этим объектом обычно не вызывает трудностей.

Внимание!

При работе с файлами DBF следует помнить, что имя файла должно удовлетворять ограничению 8.3.

Внимание!

Объект xBase доступен как на стороне клиента, так и на стороне сервера. Следует продумывать клиент-серверное взаимодействие при решении каждой конкретной задачи.

Чтение файла DBF

Чтение данных из файла DBF производится за несколько последовательных этапов:

  1. Создание объекта XBase;
  2. Открытие файла;
  3. Последовательный перебор всех строк файла и считывание значений полей;
  4. Закрытие файла.

Рассмотрим этот процесс на примере:

Можно использовать несколько измененный алгоритм перебора строк файла:

Выгрузка в файл DBF

Этапы выгрузки в файл DBF:

  1. Создание объекта XBase;
  2. Указание кодировки (если не указать, то будет использоваться кодировка ANSI);
  3. Описание полей;
  4. Создание файла;
  5. Цикл с добавлением и заполнением строк;
  6. Закрытие файла.

Рассмотрим этот процесс на примере:

При указании кодировки используется тип КодировкаXBase , который может принимать два значения:

  • ANSI – формат Windows;
  • OEM – формат DOS.

Добавление нового поля при описании структуры имеет синтаксис

Доступны следующие типы:

  • «N» – число;
  • «S» – строка;
  • «D» – дата;
  • «L» – булево;
  • «F» – аналогично «N» – число.

Длина поля является обязательным для типов полей «N», «F» и «S».

Работа с индексами

Совместно с файлом DBF может использоваться индексный файл, в котором может содержаться информация об одном или более индексе. Наличие индексов делает возможным использование поиска, а не только последовательного перебора всех строк файла.

Цукерберг рекомендует:  Вакансии Стоматология Валидент

При создании индексного файла следует задать:

  • Перечень индексов;
  • Путь сохранения индексного файла (на этапе 4 выгрузки).

Пример создания индексного файла:

Процедура добавления нового индекса имеет синтаксис:

Для использования индексов при чтении из файла DBF следует:

  • Указать путь к индексному файлу (на этапе 2 загрузки);
  • Задать текущий индекс.

Пример открытия файла DBF с использованием индексного файла:

Внимание!

При открытии файла DBF позиционирование происходит на первой записи в файле. Первая запись в файле не соответствует первой записи в индексе. В связи с этим при использовании индексов перед тем, как последовательно обходить строки, необходимо спозиционироваться на первой строке индекса. Это можно сделать методом Первая () , например:

Для поиска может использоваться одна из двух функций:

  • Найти ( Ключ >, Режим >) ;
  • НайтиПоКлючу ( Режим >) .

В результате работы обоих функций возвращается значение с типом булево (найдена запись с указанными условиями или нет). В случае успешного поиска текущий указатель устанавливается на найденной строке. В качестве режима поиска может использоваться одно из значений:

Но при использовании этого метода запись не удаляется из файла безвозвратно, ей присваивается пометка удаления. При переборе строк помеченные на удаление записи пропускаются. Если необходимо обойти весь файл, включая помеченные на удаление записи, необходимо присвоить значение Истина свойству ОтображатьУдаленные объекта xBase. Узнать помечена запись на удаление или нет можно с помощью функции ЗаписьУдалена () . Для снятия пометки удаления используется метод Восстановить () .

Для непосредственного удаления помеченных записей используется метод Сжать () :

Если необходимо удалить все записи в файле непосредственно, то можно использовать метод ОчиститьФайл () :

Загрузка из DBF при помощи ADO

Для работы с файлами DBF может использоваться технология ADO. Драйверы ADO входят в состав операционной системы Windows и дополнительно их устанавливать не надо.

Рассмотрим пример кода для чтения из файла DBF по технологии ADO:

В приведенном примере используется строка подключения «Prov >

  • Provider – это используемый драйвер;
  • Data Source – путь, где находится файл DBF. Путь указывается с точностью до каталога. Имя файла используется в качестве имени таблицы в запросах;
  • Extended Properties – в случае обращения к файлам DBF является обязательным параметром. Можно указать формат файла

Внимание!


При чтении указанным способом кодировка по-умолчанию – OEM. Для того, чтобы изменить кодировку на ANSI необходимо в реестре Windows присвоить параметру HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Jet\4.0\Engines\xBase\DataCodePage значение «ANSI».

Остались вопросы?
Спросите в комментариях к статье.

Файл формата DBF: чем открыть, описание, особенности

Формат DBF применяется к текстовым и числовым файлам Системы Управления Базой Данных (СУБД). В стать.

Формат DBF применяется к текстовым и числовым файлам Системы Управления Базой Данных (СУБД). В статье рассмотрим особенности формата и чем открыть DBF файл.

Общее описание формата DBF

DBF расшифровывается как DataBase File. Файлы DBF первоначально использовались в dBase II вплоть до dBase Version IV.

Внутри DBF-файл состоит из заголовка с порядковым номером формата и непосредственно информации в виде таблицы установленного размера.

История возникновения

В 1978 году Уэйн Рэтлифф запустил проект формата для СУБД Vulcan. В следующем году программа Вулкан в составе с первой сборкой формата DBF поступила в продажу.

Затем в 1980 году Вулкан получил другое название – dBase II. В программе стала применяться вторая ревизия формата. Право продажи получила фирма Ashton−Tate.

Далее последовали сборки dBase III и dBase III+, использовавшие третью версию DBF. Программы оказались несовместимы по размеру.

Последний (седьмой) вариант формата появился вместе с dBase 7 for Windows.

Как и чем открыть файл DBF расширения

Мы подготовили список инструментов, чем открыть DBF в программе Excel или просмотреть онлайн.

Как открыть формат DBF в Excel

Начнем с электронных таблиц Excel. Программа входит в офисный пакет Microsoft и в ней присутствует функция чтения формата DBF.

Если на компьютере не установлен пакет Office, то скачайте дистрибутив с сайта Microsoft и установите нужные программы.

Чтобы открыть файл DBF в таблице Excel:

  • нажмите на документ правой кнопкой мыши, чтобы вызвать контекстное меню;
  • наведите курсор мыши на «Открыть» с помощью и переходите в пункт Выбрать программу;
  • выберите Microsoft Office Excel, нажмите «Ок»;
  • нужный файл откроется в виде таблицы Excel.

Открываем расширение DBF онлайн

Открывается файл формата DBF и на веб-сайте Jobtools. Правда, без редактирования.

Чтобы попасть на страницу просмотрщика:

  • в URL-строке браузера введите адрес http://jobtools.ru
  • в окне кликните кнопку Файл, затем «Открыть»;
  • в поле DBF нажмите «Выбрать файл»;
  • найдите нужный документ и щелкните «Загрузить».

Файл отобразится в окне браузера.

Интерфейс простой, нет опций кроме просмотра и постраничной прокрутки.

Чтобы открыть другой файл, нажмите кнопку «Reset» и повторите загрузку.

Чем открыть DBF на компьютере

Кроме стандартного Офиса открываются и правятся файлы DBF через сторонние программы.

Приложение DBF Commander предоставляет распространенные операции с файлами DBF: просмотр, редактура и распечатка файлов. Поддерживается экспорт в форматы CSV, XML, HTML и Excel. Файл кодируется и декодируется алгоритмом AES-256 (Rijndael). Записи удаляются и восстанавливаются, доступна сборка таблицы.

Какие могут быть проблемы с DBF файлом

Случается, что при попытке открыть файл с расширением DBF программа выбивает ошибку File not found (Файл не найден).

В этом случае откройте файл в другой программе. Подойдет Advantage Data Base. Создайте таблицу, импортируйте исходный файл и поменяйте компоненты.

Другой выход – конвертируйте в текстовый формат doc, docx или exl и откройте в офисной программе.

Следующий тип ошибки – file or table does not exist. Это значит, что файл оказался в папке с временной копией. Откройте папку и задайте значение TSession. для переменной Session.PrivateDir.

Если программа выбивает ошибку Table Level Changed,значит,несовместимы компоненты. Установите компоненты TTable. Проверьте, правильно ли связаны файл DBF и хранилище pft.

Если не открывается файл при подключении к базе, откройте соединение и задайте новое имя OleDbCommand cmd = new OleDbCommand («SELECT * FROM Employees») с расширением DBF.

DBFShow

Бесплатная программа, предназначена для просмотра и редактирования файлов DBF( dBase III, dBase IV, FoxPro, VFP) . Разрабатывается как замена DBF Viewer 2000 . Для запуска не требует никаких сторонних библиотек кроме Net Framework 2.0.

С 11.09.2020г.начиная с версии 0.116 для запуска необходим NET 4.0 плюс с программой распространяется dll для работы с xlsx файлами

Основные возможности

    Поддержка следующих форматов файлов: dbf , txt, csv — текстовые файлы с разделителями, mem — файлы переменных в FoxPro Работа с DBF, TXT, CSV файлами как с таблицей в едином интерфейсе Поддержка типов: CHAR, DATE, NUMERIC, MEMO, BOOL, FLOAT, DATETIME, INTEGER, CURRENCY, DOUBLE, MEMO (только чтение); Возможность редактировать файлы более 4Гб; Все операции производятся в отдельных потоках с возможностью отмены операции (за исключением сортировки) Для запуска необходим Net Framework 2.0 . Не использует сторонних библиотек, работа с файлами осуществляется напрямую;

Возможности редактирования

    Редактирование возможно как в таблице, прямо в ячейках, так и в отдельном окне как это реализовано в DBFViewer 2000 для этого необходимо нажать Ctrl+Enter на текущей записи Возможность копирования и вставки выделенных диапазонов в таблице, как мышкой, так и клавиатурой; Модификация данных (Удалить пробелы слева, удалить все пробелы, выровнять по правому краю, в верхний регистр в нижний регистр, перевернуть, с заглавной буквы); Контекстное меню дублирующее основные функции по модификации выделенных ячейки, столбца; Поиск и замена данных; Фильтрация данных, по одному-всем полям; Глобальный фильтр; Заполнение данных константным значением или номером по порядку с учётом установленного диапазона и дополнительного условия; Удаление, восстановление записей по условиям; Очистка, усечение, сжатие файлов; Возможность перемешать записи, добавить n-ое количество записей Шифрование текстовых данных по XOR ; Смена кодировки файла — в том числе и на UTF Конвертирование между кодировками (в том числе и на UTF ) Редактирование заголовка dbf файла; Добавление, удаление, переименование колонок;

Дополнительные возможности

    Удаление дубликатов, дублирующих записей по выбранным полям с дополнительными опциями; Удаление дублирующих записей с использование алгоритмов нечеткого поиска Сортировка по одному нескольким полям одновременно; Сохранение порядка сортировки в файл; Разбиение файлов (создает файлы dbf или xls с именем значения в выделенной колонке, содержащие только это значение); Объединение dbf файлов (как одного так и группы файлов); Возможность добавления текущего файла к другим выбранным файлам dbf ; Форма статистики, группировки данных; Форма математических операций с полями файла; Связь двух таблиц по установленным полям и возможность навигации Возможность сравнить два DBF файла по выбранным полям и заполнить данными из одного файла в другой в случае совпадения Возможность сравнить структуры 2 файлов Экспорт в txt, csv, xls, sql и многое, многое многое другое…

153 Replies to “DBFShow”

Добавьте запоминание позиции окна, а то не удобно же …

Ок. В версии 0.63 реализовано

Здравствуйте!
Экспорт dbf-таблицы в Excel 2007 не получается: поле типа CHAR c текстом в кодировке
1251-Russian Windows почему-то преобразуется в колонку с кракозябрами типа «. ».
Или я что-то делаю не так? С уважением, Геннадий.

Исправлено в 0.65. Спасибо.

Отличная программа, приятный интерфейс. И главное видно, что с душой сделано — а сейчас это такая редкость :). Спасибо за хороший инструмент!
С уважением, Сергей.

Большое спасибо!! Очень приятно услышать лестный отзыв. 8)

1.Ваша программа по своим возможностям, конечно, превосходит общеизвестную
DbfNavigator, но есть момент, связанный с кодировкой таблиц, а именно: в FoxPro
под DOS (прошу прощения за такую древность, но вот еще пользуюсь) применяются
таблицы с пустым 29-ым байтом в заголовке, т.е. код 866 — кириллица DOS как бы
принимается по умолчанию. Ваша программа, в отличие от упомянутой, текстовые
поля с кириллицей в таких таблицах не идентифицирует. Конечно, это мелочь — если
очень нужно, всегда можно самому кодовую метку внести в файл. И всё же …
2.Нельзя ли ввести параметр, задающий ширину колонок, но чтобы (в отличие от
того же Навигатора) значение параметра сохранялось при последующем
обращении к программе.
С уважением, Геннадий.

1. На этот случай есть возможность в опциях указать «Кодировку по умолчанию», тогда при открытии файла если 29 байт выставлен в 0, программа автоматически изменит на кодировку по умолчанию. Или Вам все таки необходимо, что бы 29 байт так и оставался нулевым?
2. Сохранять ширину колонок по конкретным файлам? То есть запоминать имена файлов и измененную ширину колонок? Как вариант можно сделать (опционально) в зависимости от размера колонки выставлять автоматически размеры.

1. Спасибо за подсказку! Я не до конца осознавал
полезность опции “Кодировка по умолчанию», её
результат меня вполне устраивает.
2.Насчет ширины колонок. Нет, я не имел в виду их
сохранение по конкретным файлам, насколько я понимаю, это довольно сложновато реализовывать,
да и не очень то нужно. Достаточно было бы то,
чтобы параметр задавл одинаковую ширину для всех видимых колонок и всех просматриваемых таблиц,
и чтобы этот режим сохранялся при следующей
загрузке программы.
С уважением, Геннадий.

Ок. Размеры колонок добавлю в понедельник на работе. Дома работоспособности ноль 8)

Программа отличная, большое спасибо. Но хотелось бы иметь возможность выбора шрифта для отображения содержимого файла.
С уважением, Александр.

Реализовано в 0.69. Качайте, пробуйте 8)

Спасибо, все работает. И еще один вопрос: при закрытии файла дата/время изменения файла устанавливаются на текущие, даже если ничего не менялось. Это баг или фича?

Цукерберг рекомендует:  6 заповедей менеджера паролей

Не всегда, пока не смог понять почему. Но меняется лишь изредка, по крайней мере у меня… буду отлавливать «фичу» 8)

Здравствуйте!
Для таблиц VFP некорректно работает с autoincrement полями — при добавлении записи заполняет его значением 32, счетчик в заголовке не увеличивает.
Поддержка CDX индексов (foxpro) не предусмотрена?

Здравствуйте. Не было у меня никогда таблиц c autoincrement-ом. Обязательно проверю всё и исправлю.
Индексы не предусмотрены. Хотел было сделать просмотр индексных файлов, но чтото посчитал не нужным

PS. В качестве пожеланий — работать с программой на мой взгляд станет удобнее если:
1. отображение удаленных при старте сделать настраиваемым;
2. числовые величины выровнять вправо и отображать группами (если последнее сделать настраиваемым с возможностью применения параметров ОС — будет совсем шикарно).

Autoincrement реализовал. Про числовые величины надо подумать, как прикрутить.

Как выполнить функцию «Добавление данных из других dbf файлов» ?

«Файл\Добавить(Импорт)» — выбираете один или несколько файлов для объединения. Добавит новые записи с проставлением данных в совпадающие по имени поля.

“Файл\Добавить(Импорт)” –
Unhandled exception has occurred in your application.

оппаньки… это что-то новое. Не могли бы Вы отправить Ваши файлы мне на почтовый ящик gerztrue@gmail.com. Такой ошибки здесь мне не приходилось видеть.

Скажите, как сделать, чтобы отображалось содержимое MEMO — полей?
Меня интересует CLIPPER — ная таблица (DBT — файлы). Есть такая возможность?

Реализовано в 0.92. Пробуйте

Пожелание!
Добавить импорт из SQL.

Никогда не думал, что столкнусь с необходимостью импорта из SQL, над обдумать реализацию. Спасибо за пожелание.

Программа чудесная! Использую вместо плагина в Far Manager.
Из пожеланий — хотелось бы горячую клавишу на вызов структуры для удобства,
а в информационной строке (которая в самом низу) добавить информацию
про поле (тип (символьное, цифровое, дата,…) и размер) на котором находиться курсор.
Спасибо!

Спасибо за отзыв!
Горячая клавиша — обязательно будет,
а доп. информация — хорошая идея, тоже реализую

Доброго времени суток. Программка маленькая, удобная и бесплатная — это приятно. Столкнулся с такой проблемой — мне необходимо объединить три столбца в один (причем через пробел чтобы было). Столбцы содержат имя, фамилию, отчество. Не смог этого осуществить в этйо программке, не планируется ли сделать подобную функцию объединения столбцов (желательно с возможностью делать это через пробел) в новой версии программки? Cпасибо.

Спасибо! Средствами реализованными на данный момент в программе можно объединить несколько столбцов в один с любым разделителем. Попробуйте этот способ:
1. Сделайте копию Вашего файла;
2. Открываете свой файл (оригинал) и заходите в меню «Файл\Сравнить содержимое»;
3. В новом окне открываете копию файла. Добавляете поля для сравнения, чтобы записи совпадали например Фамилия + Имя + Отчество + Дата рождения.
4. Выбираем пункт меню «Проставить в поле» выбираем поле в которое будем сохранять объединенные значения;
5. В поле «значения с» перетаскиваем мышкой столбцы в Вашем случае Фамилию, Имя и отчество, а в качестве разделителя выбираем пробел.
6. Программа сопоставит по выбранным полям значения с таблиц, а так как они будут идентичны то всем проставит выбранные поля через разделитель.
Попробуйте этот вариант. Он конечно не тривиален, но с ним можно решить множество задач 8) Вот еще описание этого режима: http://jobtools.ru/2013/11/dbfshow-kak-sravnit-soderzhimoe-dvux-dbf-fajlo/
Отпишитесь, пожалуйста, получилось ли у Вас?

Добрый день!
Программа очень порадовала своим функционалом, спасибо автору. Буду всем ее рекомендовать.
Есть вопрос, никак не могу понять как удалять строки. Помечаю на удаление стоит крестик, строка не исчезает, пробовал открывать другим ПО удаленные строки остаются, сохраняешь открываешь строки на месте только с крестиком. Подскажите пожалуйста.

Спасибо за отзыв!
Это особенность DBF формата строки помечаются на удаление, чтобы удалить помеченный на удаление записи физически из файла — надо его упаковать, сжать (ZAP). В dbfshow это «Правка\Сжать файл»

Для моей задачи нехватает параметров командной строки, например чтобы приклеить «кусочек» к n — кол-во файлов.

Можно реализовать, только поподробней пожалуйста.один файл приклеить ко всем остальным из перечня или все из каталога и т.д.

Да именно так, было бы удобно реализовать работу с ключами. Допустим имеем n — количество dbf c одинаковой структурой. Имеем подготовленный «кусок» который необходимо добавить к n файлам. Сейчас это, Файл — Добавить(Импорт). Делать это для n файлов — долго. А вот если бы можно было бы запустить dbfshow -insert original.dbf add.dbf rezult.dbf. Было бы классно, потом в «батник» ��
С меня «пиво» если сделаете оперативно ��


не сразу заметил Ваш комментарий! Теперь понял, что Вы имели ввиду. Реализовано в 0.98.

У меня 2 вопроса:
1. Можно ли с помощью Вашей программы так отредактировать заголовок dbf-файла, чтобы не было ограничений на размер файла (больше 2 Гб, больше 4Гб, больше 200Гб) на количество полей (колонок больше 100000)? Будет ли после этого система программирования работать с такими файлами?
2. Как можно получить Вашу программу?

1. Количество столбцов ограничено самой струткурой dbf заголовка. В два байта длины заголовка физические не уместить 10000000*32. Про 4 Гб точно сказать не могу, не было таких файлов), но здесь все зависит от того что вы используете. Если это 1С то не получится, так как используются индексы dbf в которых на это дело отведено 4 байта, которые максимально могут адресовать 2 Гигабайта. Если же просто хранить в dbf записи без индексов то я думаю, что это возможно, и естсественно использовать не FAT32 а NTFS
2. Программу может получить скачаев её с этого сайта

В 2 байта можно уместить 2^16=65536 номера столбца, т.е. это и есть теоретически максимальное кол-во столбцов. А в системе получается использовать не более 1600, а если пытаться сделать больше, то возникают ошибки.

Я задавал подобные вопросы на другом форуме. Там мне ответил Дима Бандык:

Согласно этому формату (dBase III) количество записей задается 32-битным числом. Т.е. максимально возможное количество записей — 4294967296. Каждая запись — это строка.

Количество полей в записи вообще не ограниченно. Каждое поле — это столбец.
=====
Именно этого формата я придерживался когда читал данные из ваших баз данных. Т.е. я убедился что ваши базы данных соответствуют этому формату. А значит имеют те же ограничения т.е. практически неограниченны.

Причина по которой есть описанные вами ограничения на размер базы данных кроется видимо не в самом формате а в той программе при помощи которой вы создаете базы данных. Вероятно она почему-то не использует весь потенциал формата.

Учитывая что вы назвали ограничение на размер файла в 2 Гб (а формат файла DBF вообще не имеет ограничения на размер файла а только на количество записей — при том что каждая запись не ограничена в размерах) я могу предположить что в вашем случае ограничение скорей всего связано с тем что программа использует 32-битную адресацию при чтении данных из файлов. Т.е. это внутренняя проблема программы которая читает или создает файлы DBF, но не ограничение самого формата DBF. Вероятно программа писалась еще в давние времена когда никто еще не предполагал что когда-то может понадобиться адресация более чем в 32 бита.

На Delphi такого ограничения нет. При чтении и записи файлов используется 64-битная адресация. Поэтому я могу создавать и читать DBF-файл практически неограниченных размеров (вернее ограниченные размером в 18 446 744 073 709 551 616 байт �� )»

А ссылку на скачивание программы дадите? А то я что-то не нашел

Скачал. Приятно сделанная и полезная программа. Буду размещать ее вместе с системой, которую разрабатываю. Но не нашел там работы с заголовком dbf-файла: его просмотра и корректировки в диалоге. Не подскажите где они? Я так понял, что эта возможность есть.

«Инструменты\Редактировать заголовок dbf»

Я могу физически работать с файлами, т.е. могу считать только-что созданный dbf-файл в виде значения текстовой переменной, заменить в ней любые байты на какие хочу и записать обратно с ем-же или другим именем. Мне интересно, можно ли таким путем снять ограничения на максимальное число полей и размер dbf-файла, которые есть в системе. Индексы мне в данном случае не нужны.

Позвольте я отвечу Вам завтра с работы. Я проверю что можно сделать и как

буду очень благодарен. Большое спасибо!

PS
Я спрашивал у разработчиков языка программирования возможно ли таким способом (путем корректировки заголовка DBF-файла) снять ограничения на его размер и число полей для программы, сделанном на этом языке программирования. Они ответили утвердительно. Значит мне нужно точно узнать какие байты заменить и на какие значения и попробовать создать базу, превышающую по этим параметрам те, что возможны по умолчанию. Надеюсь Вы в этом мне поможете советом, что и на что поменять. А остальное я могу сделать сам.

Пока я сделал свой собственный формат баз данных вообще абсолютно ничем не ограниченный, кроме размеров носителя на компьютере, и пользуюсь им. Но это не очень удобно, т.к. мне пришлось переписать все функции, необходимые для работы с базами данных в этом формате. Я их все не переписал, а только основные. Но все равно в целом получилось не очень удобно (хотя в некоторых случаях даже удобнее, чем стандартными средствами). Я знаю, как все довести до ума, но у меня нет для этого времени да и вообще зачем изобретать велосипед, если его уже изобрели.

Доработал DBFShow на открытие файлов, где больше 4 000 000 записей. До версии 0.99 выходила ошибка переполнения. Скачать можно по той же ссылке. Добавил в файл 8 000 000 записей размер dbf составил 5 Гигабайт DBFShow открыл его, другие редакторы (установленные на компьютере) вылетели с ошибкой. Сам FoxPro открывал файл, пока его размер не превысил 2Гигабайт

Прекрасно. Большое спасибо за программу. Остается спросить у Вас, какие байты Вы скорректировали в заголовке и какие им присвоили значения. Тогда я попробую сделать тоже самое в своей системе и попробовать создать и открыть в ней гигантские DBF-файлы. Может быть получится, как получилось у Вас в своей системе. Я на это надеюсь. Я эту тему обсуждал на форуме разработчиков: http://bb.donnay-software.com/donnay/viewtopic.php?f=2&t=1294&s >

Ничего не менял. Используется следующая формула для определения позиции начала строки в файле: header.headerSize + RowIndex * (long)header.recordSize. Значения headerSize и recordSize берутся из заголовка, то есть главное чтобы они влезли в ограничения, это может повлиять на кол-во колонок, а на количеств строк никак не влияет.

Так Вы что, работаете с DBF-файлом не с помощью стандартных средств, предназначенных для работы с ним, а просто как с бинарным файлом физически? Я примерно так как Вы делал со своими неограниченными файлами собственного стандарта. А я бы хотел использовать стандартные команды языка программирования, предназначенные для работы с BDF-файлами

Да именно так. Сожалею, что не сразу друг друга поняли. Попробуйте стандартными средствами добавить в DBF файл около 4 миллионов записей (но чтобы файл не превысил 2Гб), если FoxPro споткнется, значит произошло тоже что и у меня в качестве позиции файла используется Int32, когда я переделал на long то всё пошло. Если же FoxPro нормально переварит этот файл. То дело в размере файла (может быть внутренние ограничения) так как я не вижу что может в заголовке dbf препятствовать большому кол-ву строк и размеру

Только что попробовал добавил 4 500 000 foxpro нормально скушал. Буду разбираться с размером файла

Цукерберг рекомендует:  Обучение - Скрытые символы в текстовом файле

При превышении размера в 2Гб FoxPro пишет Not a Table. Попробую покопаться с заголовком, чтоб он открыл только там копаться и то негде.

Интересно. Я работаю на Аляске, это современный CLIPPER: http://www.hotsoft.ru/ALASKA/

Теперь мне понятно Ваше желание использовать формат по максимуму. Попробую ознакомится с Аляской

Добрый день.
Возник вопрос — можно ли запускать программу из командной строки для автоматического конвертирования DBF в XLS?

Я уже и забыл есть такое или нет. Чуть позже отпишусь, если нет такой возможности то добавлю.

Я когда-то искал такой конвертер, не нашел такой, как мне надо, а потом вспомнил, что умею программировать и написал сам, и выложил его сюда: http://www.twirpx.com/file/1028764/.

Много можно было еще реализовать, в том числе и XLS->DBF, но теперь времени всё меньше и меньше.

В версии 0.100 реализован экспорт в XLS из командной строки. Подробнее можно посмотреть здесь: История изменений

Есть ли возможность корректировать структуру файла и задавать формирование индексных массивов с использованием языка CLIPPER (желательно вообще все функции DBU). Есть ли возможность так скорректировать заголовок dbf-файла, чтобы он был неограниченного размера и с неограниченным числом полей: http://softclipper.net/bazy-dbf/format-fajla-dbf.html

Программа определяется антивирусом как Троян-Генератор

У вас Симантек Антивирус или Nod32? Могу Вас заверить, что вируса там нет.
Так они определяют «упаковщик», которым упакована программа, для того чтобы скрыть код от чужих глаз. Мои комплексы не позволяли мне выкладывать как есть. Постараюсь решить эту проблему.

Экспорт CSV -> DBF как? Не делает, молча

Спасибо огромное за программу, перебрал кучу других и только ваша смогла открыть мою dbf от 1С 7.7 ))) размер 2.2 Гб.
Но есть проблема, после пометки на удаление, сжатие не удаляет записи, они также остаются в файле.

Пожалуйста )
Сжатие работало и работает исправно, я не сталкивался с таким. Попробуйте описать поподробней ситуацию

Программка просто супер,выручает не в первый раз, оказывает большую помощь в корректировки баз данных. Но столкнулся с такой ситуацией,очень курьезной,постоянно работаю с базами данных, хотелось бы что бы с экспортного файла программы формата «xls» можно было импорт проводить этого файла обратно в dbf…уж очень надо.Спасибо

Очень удобная програмка, респект автору. Вот толко не нашел, может подскажите, — нужно файл dbf например на 60000 строк, разбить на несколько например по 20 к строк ни или меньше. Такое реально? Проблема в том что исходный файл загружается в стстему, и напрмер если в одной строке ошибка, то отменить можно только удалив весь файл. По времени занимает оч много времени. Если было бы несколько файлов, проще было бы)

Спасибо за отзыв ).
В программе реализовано разбиение файла на части по содержимому какого либо поля. Такая возможность вам подходит? Или нет таких полей в которых записи не уникальны?

Отличная программа. Давно такую искал.
Можно ли сделать, что при экспорте в xls из командной строки добавлять фильтр сортировки, сгенерированный при ручном экспорте ?
С уважением, Иван.

Простите, но я Вас не понял. Что значит сгенирированный при ручном экспорте? Реализовать параметр командной строки для экспорта в XLS, отвечающий за сортировку?

Ну да, при экспорте можно создать фильтр сортировки и сохранить в файл. Вот его бы и добавить в командную строку.
Просто у меня есть очень громоздкая база данных, которая напрямую в Exel не влезает, а в ней много ненужного мусора, вот я и использую фильтр сортировки для избавления от него. Хотелось бы упростить процедуру использованием командной строки.
С уважением, Иван.

DBFshow 0.106.0.0
При попытке скопировать что-то из пустой ячейки и вставить эту пустоту из буфера возникает ошибка, а в ячейке оказывается символ «v».

Вы знаете, только что пробовал на разных типах ячеек, что-то не получилось вызвать ошибку. Скиньте, пожалуйста, Ваш файл для анализа. gerztrue_gmail.com

Отличная программа! Огромное спасибо Автору!
Один вопрос (может быть, я чего-то и сам не увидел?): есть возможность открытия двух (трех, четырех) разных файлов dbf в разных окнах программы (каскадом, рядом и т.д.)?

Спасибо за отзыв! Нет такой возможности нет, никогда не понимал полезности MDI интерфейса. Можно открыть несколько файлов в разных программах и расположить их каскадом 8)

ОГРОМНОЕ спасибо Автору за эту чудесную программу!
Вот не большие замечания к программе:
1. Если можно. то добавьте функцию вывода на печать;
Проблемы в программе:
2. При объединении двух DBF файлов, от программы Visual FoxPro, размером по 70-90 Мб каждый, а то и больше, некоторые записи (строки) пропадают.
3. В числовой колонке, которая имеет 2 разряда (колонка называется Prise), отображается только запятая, а не точка, как в исходном файле. Даже если поставить точку, всё равно будет запятая. Сумма значений в этой же колонке отображается не много не верно — отображаются сотые, тысячные и т.д. доли, хотя кроме десятичных там других нету.

Спасибо!
1. Печать всей таблицы?
2. Вышлите структуру файлов, которые Вы объединяете.
3. Отображение запятая или точка, зависит от региональных настроек компьютера.

Спасибо за быстрый ответ.
1. Иногда печать всей таблицы, если она не большая, а иногда определенного диапазона. Может можно сделать типа как в Excel? Типа печать таких- то колонок (как у Вас сделан экспорт в Excel) и таких-то строк (например печать с 1 по 20 строку).
2. Структуру файлов постараюсь выслать на следующей неделе, подскажите только как ? Я на «форумах» очень редко бываю.
3. Спасибо большое за подсказку, я об этом не подумал.
Ещё раз спасибо за эту чудесную программу. Всех Вам благ.

Ошибка при группировке появляется такое сообщение:

See the end of this message for details on invoking
just-in-time (JIT) debugging instead of this dialog box.

************** Exception Text **************
System.FormatException: Input string was not in a correct format.
at System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal)
at System.Number.ParseDouble(String value, NumberStyles options, NumberFormatInfo numfmt)
at System.Double.Parse(String s, NumberStyles style, NumberFormatInfo info)
at System.Convert.ToDouble(String value)
at iDBFShow.Helper.DBShow.Group(String columnName)
at iDBFShow.Form1.группировкаToolStripMenuItem1_Click(Object sender, EventArgs e)
at System.Windows.Forms.ToolStripItem.RaiseEvent(Object key, EventArgs e)
at System.Windows.Forms.ToolStripMenuItem.OnClick(EventArgs e)
at System.Windows.Forms.ToolStripItem.HandleClick(EventArgs e)
at System.Windows.Forms.ToolStripItem.HandleMouseUp(MouseEventArgs e)
at System.Windows.Forms.ToolStripItem.FireEventInteractive(EventArgs e, ToolStripItemEventType met)
at System.Windows.Forms.ToolStripItem.FireEvent(EventArgs e, ToolStripItemEventType met)
at System.Windows.Forms.ToolStrip.OnMouseUp(MouseEventArgs mea)
at System.Windows.Forms.ToolStripDropDown.OnMouseUp(MouseEventArgs mea)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ScrollableControl.WndProc(Message& m)
at System.Windows.Forms.ToolStrip.WndProc(Message& m)
at System.Windows.Forms.ToolStripDropDown.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

************** Loaded Assemblies **************
mscorlib
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.7041 (QFE.050727-7000)
CodeBase: file:///C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll
—————————————-
iDBFShow
Assembly Version: 0.111.0.0
Win32 Version: 0.111.0.0
CodeBase: file:///D:/PORTABLE%20Program%20Files/DBFShow/DBFShow.exe
—————————————-
System.Windows.Forms
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.7015 (QFE.050727-7000)
CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
—————————————-
System
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.5740 (QFE.050727-5700)
CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll
—————————————-
System.Drawing
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.5740 (QFE.050727-5700)
CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Drawing/2.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
—————————————-

************** JIT Debugging **************
To enable just-in-time (JIT) debugging, the .config file for this
application or computer (machine.config) must have the
jitDebugging value set in the system.windows.forms section.
The application must also be compiled with debugging
enabled.

When JIT debugging is enabled, any unhandled exception
will be sent to the JIT debugger registered on the computer
rather than be handled by this dialog box.

Как подключить PHP к файлу DBF, используя метод ODBC

У меня есть файл dbf . Я хотел бы использовать PHP для чтения данных из этого файла dbf используя метод подключения ODBC.

Я использую xampp, чтобы проверить это.

Я настроил ODBC. Вот соединение ODBC.

Это ошибка, которую я получаю:

Файл dbf сохраняется на рабочем столе. Как я могу использовать скрипт PHP, чтобы использовать соединение ODBC для чтения данных из этого файла? *

Если я правильно помню, php не обрабатывает dbf из коробки, и вам нужно установить расширение или найти версию, которая была скомпилирована с этой возможностью. Это, возможно, изменилось, хотя, поскольку в последний раз я использовал это в днях php 5.x.

Также существуют разные версии dbf, поэтому вам нужно убедиться, что ваша версия совместима с любым используемым вами расширением/драйвером.

Как подключить PHP к файлу DBF, используя метод ODBC?

Форум PHP программистов ► PHP практикум ► PHP + SQL

Пейджер выключен!

Сообщений: 321
Пользователь №: 31230
На форуме:
Карма:

Здравствуйте уважаемые форумчане, столкнулся с проблемой: есть у меня определённые .dbf файлы и надо их через php перегнать в БД.
Пробовал писать так (ну что бы он вывел содержимое .dbf на экран)

Всё замечательно выводиться но вот незадача: как это добавить в базу ума не приложу. Может кто то подскажет как разбить файл по одномерным массивам или как положить его в базу

берется одна строка из файла? Или нет?
Вот ее и добавляй в таблицу свой базы через INSERT каждый раз.

Visman
Не могу понять как сделать sql запрос, пытался так

но он мне array наложил туда

И тогда запрос выглядит примерно так

З.Ы. Значения для числовых полей не надо в кавычки брать.

Подписаться на тему
Уведомление на e-mail об ответах в тему, во время Вашего отсутствия на форуме.

Подписка на этот форум
Уведомление на e-mail о новых темах на форуме, во время Вашего отсутствия на форуме.

Скачать/Распечатать тему
Скачивание темы в различных форматах или просмотр версии для печати этой темы.

Как объединить dbf файлы

Часто в процессе работы может возникнуть необходимость объединения содержимого файлов в один так сказать произвести слияние dbf. Объединение dbf происходит по одинаковым названиям колонок в файлах, то есть не обязательно, чтобы файлы имели одинаковую структуру. В настоящий момент в версии 0.92 реализовано объединение по следующему алгоритму:

  1. Операция слияния происходит в фоновом потоке в с возможностью остановки операции;
  2. Если имена колонок совпадают, то происходит добавление данных в независимости от типа поля, в сравнении участвует только имя колонки.
  3. Можно выбирать сразу несколько файлов (выделяя через shift или ctrl);

Планируется в дальнейшем добавить возможность выбора режимов слияния файлов, таких как например возможность создавать новые колонки, которых нет в исходном файле, или копировать данные только с отсутствующих столбцов.
Итак что нужно сделать:

  1. Открыть файл dbf в который будем подгружать данные;
  2. Зайти в меню «Файл\Добавить(импорт)» или нажать ctrl+shift+A;
  • Выделить файлы для объединения. Либо один, либо несколько используя shift или ctrl;
  • Дождаться окончания операции.

    Dbf — Скажите пожалуйста как использовать DBF файлы в PHP?

    Вступайте в мою группу помощник программиста.
    В ней мы обсуждаем программирование в 1С.

    Чтение и запись DBF в языке 1С 8.3, 8.2 (в примерах)

    С уважением, Владимир Милькин (преподаватель школы 1С программистов и разработчик обновлятора).

    Подписывайтесь и получайте новые статьи и обработки на почту (не чаще 1 раза в неделю).

    Вступайте в мою группу ВКонтакте, Одноклассниках, Facebook или Google+ — самые последние обработки, исправления ошибок в 1С, всё выкладываю там в первую очередь.

    Как помочь сайту: расскажите (кнопки поделиться ниже) о нём своим друзьям и коллегам. Сделайте это один раз и вы внесете существенный вклад в развитие сайта. На сайте нет рекламы, но чем больше людей им пользуются, тем больше сил у меня для его поддержки.

    Нажмите одну из кнопок, чтобы поделиться:

  • Понравилась статья? Поделиться с друзьями:
    Все языки программирования для начинающих