Пример работы с dbf на c. Чем открыть DBF? Удаление записей в файле DBF
DBF – широко распространенный формат хранения данных, появившийся в 80-х годах прошлого века. Впервые формат применялся в семействе СУБД dBase. В связи с популярностью и широким распространением dBase, было создано множество dBase-подобных программных продуктов, получивших собирательное название xBase. Несмотря на значительный возраст формата, он до сих пор достаточно широко используется. В данной статье рассматриваются способы работы с DBF из «1С:Предприятие».
В «1С:Предприятие» для работы с файлами формата DBF(версия dBase III) применяется специальный программный объект – xBase. Работа с этим объектом обычно не вызывает трудностей.
Внимание!
При работе с файлами DBF следует помнить, что имя файла должно удовлетворять ограничению 8.3.
Внимание!
Объект xBase доступен как на стороне клиента, так и на стороне сервера. Следует продумывать клиент-серверное взаимодействие при решении каждой конкретной задачи.
Чтение файла DBF
Чтение данных из файла DBF производится за несколько последовательных этапов:
- Создание объекта XBase;
- Открытие файла;
- Последовательный перебор всех строк файла и считывание значений полей;
- Закрытие файла.
Можно использовать несколько измененный алгоритм перебора строк файла:
Пока НЕ ДБФ . ВКонце () Цикл Сообщить (ДБФ. NAME); ДБФ. Следующая (); КонецЦикла;
Выгрузка в файл DBF
Этапы выгрузки в файл DBF:
- Создание объекта XBase;
- Указание кодировки (если не указать, то будет использоваться кодировка ANSI);
- Описание полей;
- Создание файла;
- Цикл с добавлением и заполнением строк;
- Закрытие файла.
Рассмотрим этот процесс на примере:
ДБФ = Новый XBase; // Этап 1. Создание объекта XBase ДБФ. Кодировка = КодировкаXBase. OEM; // Этап 2. Указание кодировки ДБФ. Поля. Добавить(«CODE» , «S» , 9 ); // Этап 3. Описание имени и типа поля ДБФ. Поля. Добавить(«NAME» , «S» , 40 ); ДБФ. СоздатьФайл(«D:\MyFile.dbf» ); // Этап 4. Создание файла Выборка = Справочники. Номенклатура. Выбрать(); Пока Выборка. Следующий() Цикл ДБФ. Добавить(); // Добавление строки ДБФ. CODE = Выборка. Код; // Заполнение значения поля ДБФ. NAME = Выборка. Наименование; ДБФ. Записать(); // Запись строки КонецЦикла; ДБФ. ЗакрытьФайл (); // Этап 6. Закрытие файла
При указании кодировки используется тип КодировкаXBase , который может принимать два значения:
- ANSI – формат Windows;
- OEM – формат DOS.
Добавление нового поля при описании структуры имеет синтаксис
Доступны следующие типы:
- «N» – число;
- «S» – строка;
- «D» – дата;
- «L» – булево;
- «F» – аналогично «N» – число.
Длина поля является обязательным для типов полей «N», «F» и «S».
Работа с индексами
Совместно с файлом DBF может использоваться индексный файл, в котором может содержаться информация об одном или более индексе. Наличие индексов делает возможным использование поиска, а не только последовательного перебора всех строк файла.
При создании индексного файла следует задать:
- Перечень индексов;
- Путь сохранения индексного файла (на этапе 4 выгрузки).
Пример создания индексного файла:
ДБФ . Индексы. Добавить(«INDCODE» , «CODE» ); ДБФ. СоздатьФайл («D:\MyFile.dbf» , «D:\index.cdx» );
Процедура добавления нового индекса имеет синтаксис:
Для использования индексов при чтении из файла DBF следует:
- Указать путь к индексному файлу (на этапе 2 загрузки);
- Задать текущий индекс.
Пример открытия файла DBF с использованием индексного файла:
ДБФ . ОткрытьФайл(«D:\MyFile.dbf» , «D:\index.cdx» ); ДБФ. ТекущийИндекс = ДБФ. Индексы. INDCODE ;
Внимание!
При открытии файла DBF позиционирование происходит на первой записи в файле. Первая запись в файле не соответствует первой записи в индексе. В связи с этим при использовании индексов перед тем, как последовательно обходить строки, необходимо спозиционироваться на первой строке индекса. Это можно сделать методом Первая () , например:
Для поиска может использоваться одна из двух функций:
- Найти ( , >) ;
- НайтиПоКлючу( >) .
В результате работы обоих функций возвращается значение с типом булево (найдена запись с указанными условиями или нет). В случае успешного поиска текущий указатель устанавливается на найденной строке. В качестве режима поиска может использоваться одно из значений:
- «>=»;
- «>»;
- « = Новый XBase; ДБФ. ОткрытьФайл(«D:\MyFile.dbf» , «D:\index.cdx» ); // При открытии файла DBF дополнительно указывается индексный файл ДБФ. ТекущийИндекс = ДБФ. Индексы. INDCODE; // Установка текущего индекса // поиск методом Найти: Если ДБФ. Найти(«000000003» , «=» ) Тогда Сообщить( + ДБФ. NAME); Иначе Сообщить(«Не найдено» ); КонецЕсли; // поиск методом НайтиПоКлючу: ДБФ. Ключ. CODE = «000000002» ; Если ДБФ. НайтиПоКлючу(» Найдено. Наименование элемента: » + ДБФ. NAME); Иначе Сообщить(«Не найдено» ); КонецЕсли; ДБФ. ЗакрытьФайл ();
Удаление записей в файле DBF
Удаление записи производится методом Удалить () :
Но при использовании этого метода запись не удаляется из файла безвозвратно, ей присваивается пометка удаления. При переборе строк помеченные на удаление записи пропускаются. Если необходимо обойти весь файл, включая помеченные на удаление записи, необходимо присвоить значение Истина свойству ОтображатьУдаленные объекта xBase. Узнать помечена запись на удаление или нет можно с помощью функции ЗаписьУдалена () . Для снятия пометки удаления используется метод Восстановить () .
ДБФ . ОтображатьУдаленные = Истина; Пока НЕ ДБФ. ВКонце() Цикл Если ДБФ. ЗаписьУдалена() Тогда ДБФ. Восстановить(); КонецЕсли; ДБФ. Следующая (); КонецЦикла;
Для непосредственного удаления помеченных записей используется метод Сжать () :
Если необходимо удалить все записи в файле непосредственно, то можно использовать метод ОчиститьФайл () :
Загрузка из DBF при помощи ADO
Для работы с файлами DBF может использоваться технология ADO. Драйверы ADO входят в состав операционной системы Windows и дополнительно их устанавливать не надо.
Рассмотрим пример кода для чтения из файла DBF по технологии ADO:
АДО = Новый COMОбъект(«ADODB.Connection» ); // Создание COM-объекта АДО. Open( «Provider=Microsoft.Jet.OLEDB.4.0; |Data Source=»»D:\»»; |Extended Properties=DBASE III» ); БД = АДО. Execute(«Select * from MyFile» ); // запрос с получением всех записей из файла MyFile.DBF Пока БД. EOF= 0 Цикл //Цикл по записям файла DBF Сообщить(БД. Fields(«Name» ). value); // Пример обращения к значению поля БД. MoveNext(); //Переходим к следующей записи КонецЦикла; АДО. Close();
В приведенном примере используется строка подключения «Provider=Microsoft.Jet.OLEDB.4.0;Data Source= «D:\»;Extended Properties=DBASE III». В этой строке:
- Provider – это используемый драйвер;
- Data Source – путь, где находится файл DBF. Путь указывается с точностью до каталога. Имя файла используется в качестве имени таблицы в запросах;
- Extended Properties – в случае обращения к файлам DBF является обязательным параметром. Можно указать формат файла
Внимание!
При чтении указанным способом кодировка по-умолчанию – OEM. Для того, чтобы изменить кодировку на ANSI необходимо в реестре Windows присвоить параметру HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Jet\4.0\Engines\xBase\DataCodePage значение «ANSI».
Таблицы формата dbf известны еще с далекого 1980 года. С тех пор dBase формат эволюционировал, развивался, появились dBase II, dBase III и dBase IV, к настоящему времени было разработано много популярных программ, работающих с базами данных, в которых используются таблицы dbf формата и по сей день. Формат dbf таблиц довольно старый, но его продолжают использовать для создания как крупных и амбициозных, так и для небольших проектов, таблицы dbf используются в образовательных целях, для знакомства и изучения базовых знаний и представления организации баз данных. DBFNavigator это бесплатная программа для просмотра и редактирования таблиц dbf формата, простая и удобная утилита.
С программой DBFNavigator Вы можете открывать и просматривать таблицы dbf, редактировать таблицы — изменять, добавлять и удалять записи. Используя DBFNavigator Вы сможете изменять структуру таблиц, добавлять, изменять и удалять поля таблицы, сжимать dbf таблицы для очистки их от удаленных записей (сбор мусора), менять кодировку таблиц Windows->DOS и наоборот. В программе можно сортировать записи таблицы, копировать записи и отдельные поля, выводить строки таблицы на печать, выполнять поиск и применять к просмотру записей таблиц фильтры, изменять параметры открытия файлов dbf.
Скриншоты программы DBFNavigator



DBF Viewer 2000 ® — приложение для просмотра и редактирования DBF всех типов — Clipper, dBase, FoxPro, Visual FoxPro, Visual dBase.
Программа выполняет различные действия: запросы, удаление дубликатов или экспорт в различные форматы — быстрее чем вы ожидаете!
DBF редактор динамически создает визуальные формы на основе структуры DBF файлов для редактирования и запросов.Программа позволяет также просматривать и редактировать мемо поля следующих форматов: dBase III, dBase IV, FoxPro, VFP и dBase Level 7.
Программа полность поддерживает использование коммандной строки для следующих действий: импорт, экспорт, удаление дублирующихся записей или замена данных в DBF файлах. работает независимо от различных СУБД, — все что вам нужно для просмотра и редактирования DBF файла это установить приложение!
Почему DBF Viewer 2000
уникален ?
Простой и интуитивный интерфейс
Интерфейс приложения достаточно простой и удобный, позволяет вам сохранить много времени при каждодневной работе.
Удобная модификация структуры DBF файлов в DBF Viewer 2000
Вы можете добавлять, удалять, переименовывать, менять порядок полей и оптимизировать структуру DBF файлов.
Импорт данных из различных форматов при помощи DBF Viewer 2000
DBF Viewer 2000 позволяет вам импортировать данные из следующих форматов: TXT,CSV, Excel (XLS,XLSX), DBF и Paradox. Импорт данных может выполняться с предварительным просмотром или из коммандной строки.
DBF Viewer 2000 предлагает расширенные возможности для экспорта
Приложение позволяет вам экспортировать DBF файлы в Excel (XLS, XLSX), CSV, TXT, SQL, SDF, XML, HTML, PRG, и MS SQL, MySQL, Oracle, PostgreSQL скрипты.
DBF Viewer 2000 помогает удалять дубликаты
Удаление дублирующихся записей легко как 1-2-3.
Работает на всех платформах
DBF Viewer 2000 запускается на всех версиях Windows от 95 до XP, Vista, 7/8/10 и Server Editions (32/64-bit)
Наиболее часто встречаемой проблемой, из-за которой пользователи не могут открыть этот файл, является неверно назначенная программа. Чтобы исправить это в ОС Windows вам необходимо нажать правой кнопкой на файле, в контекстном меню навести мышь на пункт «Открыть с помощью», а выпадающем меню выбрать пункт «Выбрать программу. «. В результате вы увидите список установленных программ на вашем компьютере, и сможете выбрать подходящую. Рекомендуем также поставить галочку напротив пункта «Использовать это приложение для всех файлов DBF».
Другая проблема, с которой наши пользователи также встречаются довольно часто — файл DBF поврежден. Такая ситуация может возникнуть в массе случаев. Например: файл был скачан не польностью в результате ошибки сервера, файл был поврежден изначально и пр. Для устранения данной проблемы воспользуйтесь одной из рекомендаций:
- Попробуйте найти нужный файл в другом источнике в сети интернет. Возможно вам повезет найти более подходящую версию. Пример поиска в Google: «Файл filetype:DBF» . Просто замените слово «файл» на нужное вам название;
- Попросите прислать вам исходный файл еще раз, возможно он был поврежден при передаче;
Формат DBF (Data Base File) был введен в обиход компанией Ashton-Tate в 1980 году, в первой СУБД семейства систем управления базами данных dBase — dBase II.
Открытый формат данных и популярность изначальной системы привели к появлению множества различных аналогов СУБД, таких как FoxPro, dbFast, XBase++ и других. При этом разработчики вносили различные изменения в базовый формат связанные с функциональностью (добавление новых типов данных, изменение структуры заголовка или структуры полей таблицы и т.д.).
Отсутствие какой-либо жесткой стандартизации и подобные изменения повлекли за собой отсутствие гарантий что разрабатываемая программа сможет корректно выполнить операцию чтения/записи с любым dbf-файлом. Тем не менее, сохраняется базовая совместимость между различными форматами DBF.
DBF-файл состоит из 2 разделов: заголовок и непосредственно сама таблица данных. Заголовок содержит общую информацию о dbf-файле: структуру файла, количество записей, используемая версия dbf, объем памяти занимаемый заголовком и таблицей и т.п. Состав структуры заголовка отличается в различных версиях формата.
Конец файла помечается маркером EoF (End Of File).
Для ускорения работы с dbf-файлами существует возможность использования индексных файлов, в котором перечислены значения ключевого поля (или совокупность ключевых полей, если файл мульти индексный) и идентификаторы соответствующих записей.
В 1С работа с dbf-файлами может осуществляться несколькими способами:
- Объект XBase;
- Интерфейс программирования
Объект XBase обеспечивает возможность работы с базами данных формата DBF с помощью встроенного языка 1С:Предприятие.
Данный объект обеспечивает доступ к коллекции полей и индексов dbf-таблицы, позволяет выполнять любые действия над данными (создание новых и чтение существующих таблиц, добавление, корректировка и удаление записей).
Для каждого файла dbf, с которым предстоит работать, требуется создавать отдельный объект XBase.
Интерфейс программирования ADO
ADO (ActiveX Data Objects) – интерфейс программирования для доступа к данным, позволяющий получить данные из различных источников.
Основные объекты ADO позволяющие выполнять манипуляции с dbf-файлом:
С полным перечнем объектов и их свойств можно ознакомиться в MSDN.
Connection – объект, непосредственно обеспечивающий доступ к dbf-файлу
| Open(ConnectionString) | Открывает сеанс работы с источником данных. В качестве параметра передается строка соединения вида “ Provider=Microsoft.Jet.OLEDB.4.0;Data Source=; Extended Properties=dBASE IV;User > В параметр DataSource указывается папка, в которой находятся файлы dbf. |
| Close() | Закрывает соединение с источником данных |
| Provider | Содержит имя используемого провайдера. При выполнении метода Open автоматически заполняется значением Provider из строки подключения |
| ConnetionString | Содержит строку подключения. При выполнении метода Open автоматически заполняется параметром функции ConnectionString |
| ConnetionTimeout | Содержит число секунд ожидания при подключении. По умолчанию — 15 |
| CommandTimeout | Содержит число секунд ожидания при выполнении команды. По умолчанию — 30 |
| Execute(CommandText) | Выполняет запрос, осуществляет вызов хранимой процедуры или любой другой команды доступной на стороне провайдера. |
Recordset – объект представляющий из себя набор записей (строк) таблицы данных
Часто задаваемые вопросы
Для редактирования мемо поля, выберите запись и сделайте двойной клик на мемо поле. Мемо редактр позволяетр вам просматривать, редктировать, печатать и экспртировать в текстовый файл.
Как экспортровать записи с мемо полями?
Используйте команду «Файл/Сохранить как». Вы можете выбрать поля для экспорта и изменить порядок полей. DBF Viewer позволяет вам экспортировать записи с Мемо полями в Excel(XLS, XLSX), CSV, TXT, XML, SQL и HTML форматы.
Как востановить поврежденные dbf файлы?
Вы можете использовать DBF Repair Tool
Сколько стоят обновления?
Владельцы лицензий получают все обновления бесплатно как и приоритетную техническую поддержку.
Возможно ли обновить DBF Viewer 2000 с одной лицензии на другую?
Да, конечно. Пожалуйста, Свяжитесь с нами и мы пришлем необходимую информацию.
Могу ли я получить Регистрационный Ключ Бесплатно?
Да конечно! Пришлите подробный баг-репорт на support@dbf2002.com
Как установить?
Вам необходимо скачать и запустить .EXE или .MSI файл.
Как удалить?
Нажмите кнопку Старт и выберите Панель управления. В панели Управления, нажмите на Установить/Удалить программы и выберите «DBF Viewer 2000», для начала удаления, нажмите кнопку «Удалить».
Есть ли у Вас дополнительные вопросы?
Пожалуйста обратитесь в Техническую поддержку или присылайте вопросы на support@dbf2002.com
Главная | Конфиденциальность | Контакты | Page top | Copyright © 2023 HiBase Group. All rights reserved.
Как удалить строку-запись из dbf-файла
Задача любой информационной системы, вне зависимости от её назначение – сбор, накопление и структурированное хранение информации. Накопление больших массивов информации с возможностью её обмена между другими подобными системами невозможно без стандартизированного подхода. Именно с для решения этой задачи и был разработан формат файла DBF.
Что такое dbf файл
Надёжное и стандартизированное хранение информации, главная задача файла формата DBF (от англ. сокрщ. Data Base File), который в свою очередь является составной частью системы управления базами данных (например, dBASЕ-подобные системы – JBASE, FoxPro и Clipper). Особенностью данного, хоть немного устаревшего, типа базы данных является использование в структуре двумерной таблицы, что делает редактирование подобных файлов довольно простой задачей. О наиболее простых способах редактирования, а также как удалить строку в dbf файле мы рассмотрим ниже.
Как удалить строку в dbf файле
Прежде чем преступить к любым операциям с файлами СУБД имеющим расширение .DBF, необходимо выполнить следующие подготовительные действия:
Завершить работу СУБД с сохранением всех произведённых в ней операций. Обратить особое внимание, чтобы исполняемый модуль системы не находился в фоновом режиме – это позволит избежать как повреждение базы данных, так и исключить её влияние на дальнейшие процедуры.
Создать резервную копию файла базы данных (.DBF файл). Это позволит мгновенно восстановить работоспособность и получить полный доступ ко всем данным в случае каких-либо допущенных ошибок или непредвиденных сбоев.
Благодаря простой структуре файла, процедура удаления строк в dbf файле достаточно проста, а программное обеспечение, позволяющее выполнить эту процедуру, возможно уже присутствует на вашем компьютере.
Как удалить строку из dbf файла с помощью DBF Commander Free
Для решения задачи, необходимо воспользоваться сторонними специализированными утилитами. Одной из таких программ, доступной в бесплатной версией, является DBF Commander Free. При инсталляции приложения, установщик настроит необходимые ассоциации .DBF файлов.
И так для того чтобы удалить строку из файла dbf нужно открыть этот файл в программе DBF Commander Free. Далее находим строку которую нужно удалить. Кликаем на ней правой кнопкой и выбираем удалить запись.

После этого строга будет подсвечиваться красным цветом. Но это еще не означает что она удалена. Этими действиями вы только пометили её на удаление. И если вы закроете файл то строка не удалиться.

Для того чтобы её удалить нужно выбрать пункт Правка и в нем кликнуть на Паковать таблицу. В разных программах этот пункт называется по разному. Например в программе DBF viewer 2000 этот пункт называется Сжать.

Скачать DBF Commander Free — .
Другие сторонние утилиты (WinDBFview, Database Workshop, DBF SEE и т.п.) предоставляют аналогичный функционал, а процедура редактирования аналогична описываемым выше.
В заключение необходимо отметить несколько особенностей, которые необходимо иметь в виду при работе с данным форматом файла: удаляемые данные до сохранения базы данных (паковка таблицы) фактически не удаляются, а лишь помечаются на удаление; необходимо проверять используемую в файле кодировку используемого текста.
DBF Viewer 2000: Удаление нескольких записей из командной строки?
Я пытаюсь написать .bat-файл, который будет вызывать DBF Viewer 2000, чтобы удалить все записи из базы данных с полем даты раньше, чем 1/1/2006. Однако я не могу найти ничего, что иллюстрирует, как это сделать. Может кто-то указать мне верное направление?DBF Viewer 2000: Удаление нескольких записей из командной строки?
Я не знаю DBF Viewer 2000, но если вы хотите использовать Python, я могу предложить решение. –
Если DBF — это тот, у которого есть автоинкрементные столбцы, я знаю, что версия DBF Viewer не уважает его и фактически шланги этого столбца от автоматического инкремента обратно к целому типу данных . будьте осторожны – DRapp
ответ
Не уверен в DBF Viewer 2000, но вы можете легко выполнить эту задачу, используя DBF Commander Pro. Используйте следующую команду в пакетном режиме (или в файле .BAT):
Это отметит все записи, удовлетворяющие условию как удаленные. Чтобы удалить записи полностью, используйте еще одну команду:
Программа имеет 20-дневный полнофункциональный испытательный период, так что вы можете сделать эту работу в течение 3-х недель бесплатно.