1С. 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
Объект XBase обеспечивает возможность работы с базами данных формата DBF с помощью встроенного языка 1С:Предприятие.
Данный объект обеспечивает доступ к коллекции полей и индексов dbf-таблицы, позволяет выполнять любые действия над данными (создание новых и чтение существующих таблиц, добавление, корректировка и удаление записей).
Для каждого файла dbf, с которым предстоит работать, требуется создавать отдельный объект XBase.
Интерфейс программирования ADO
ADO (ActiveX Data Objects) – интерфейс программирования для доступа к данным, позволяющий получить данные из различных источников.
Основные объекты ADO позволяющие выполнять манипуляции с dbf-файлом:
— Connection
— Recordset
— Command
С полным перечнем объектов и их свойств можно ознакомиться в MSDN.
Connection – объект, непосредственно обеспечивающий доступ к dbf-файлу
Open(ConnectionString) | Открывает сеанс работы с источником данных. В качестве параметра передается строка соединения вида “ Provider=Microsoft.Jet.OLEDB.4.0;Data Source=; Extended Properties=dBASE IV;User ID=;Password=;” В параметр DataSource указывается папка, в которой находятся файлы dbf. |
Close() | Закрывает соединение с источником данных |
Provider | Содержит имя используемого провайдера. При выполнении метода Open автоматически заполняется значением Provider из строки подключения |
ConnetionString | Содержит строку подключения. При выполнении метода Open автоматически заполняется параметром функции ConnectionString |
ConnetionTimeout | Содержит число секунд ожидания при подключении. По умолчанию — 15 |
CommandTimeout | Содержит число секунд ожидания при выполнении команды. По умолчанию — 30 |
Execute(CommandText) | Выполняет запрос, осуществляет вызов хранимой процедуры или любой другой команды доступной на стороне провайдера. |
Recordset – объект представляющий из себя набор записей (строк) таблицы данных
ActiveConnection | Определяет объект типа Connection. В качестве значения можно задавать как объект типа Connection, так и текстовую строку аналогичного вида, как и свойство ConnectionString у объекта Connection |
ActiveCommand | Определяет объект типа Command в результате выполнения которого был получен данный RecordSet |
Filter | Содержит фильтр данных, который необходимо применить к данному RecordSet. |
Close | Закрывает объект RecordSet |
Requery | Выполняет обновление объекта путем повторного запроса к таблице. Аналогичен последовательному вызову Close() Open() |
BOF/ EOF | Признаки начала/конца таблицы. Если BOF=Истина, тогда указатель находиться перед первой записью объекта RecordSet. Если EOF = Истина, тогда указатель находится после последней записи объекта RecordSet |
Move | Осуществляет сдвиг указателя текущей записи вперед на указанное количество записей (или назад, если это число отрицательное) |
MoveFirst | Осуществляет сдвиг указателя на первую запись |
MoveLast | Осуществляет сдвиг указателя на последнюю запись |
MoveNext | Осуществляет сдвиг указателя на следующую запись |
MovePrevious | Осуществляет сдвиг указателя на предыдущую запись |
Fields | Содержит коллекцию полей. Через конструкцию (“Имя_Поля”).Value можем получить значение указанного в текущей строке. |
Find | Осуществляет поиск строки по заданным критериям. |
GetString | Позволяет получить строковое представление текущей строки |
Command – объект обеспечивающий выполнение команд или SQL-запросов
ActiveConnection | Определяет объект типа Connection. В качестве значения можно задавать как объект типа Connection, так и текстовую строку аналогичного вида как и свойство ConnectionString у объекта Connection |
CommandText | Строка, определяющая действие команды. Это может быть как SQL-запрос, название хранимой процедуры, имя таблицы и т.д. |
CommandTimeout | Содержит число секунд ожидания при выполнении команды. По умолчанию — 30 |
Execute() | Запускает выполнение команды. |
Автор: Мусатов Андрей
Comments
So empty here ... leave a comment!