Внешняя таблица DBF

From SunFlurry wiki
Jump to: navigation, search
  DBF (Внешняя таблица DBF)
Статус разработки: Реализован
Создание объекта: Create

Объект внешняя таблица DBF позволяет получить быстрый доступ к данным во внешних файлах .dbf, а также создавать новые файл DBF, удалять записи в них, добавлять или удалять отдельные поля и пр. Объект используется для выгрузки или загрузки данных из приложений, по-прежнему использующих этот формат, для создания новых интерфейсов обмена рекомендуется использование более простых текстовых или xml файлов. К ограничениям формата относится максимальный размер наименования его поля (всего 10 байт), невозможность использования для данных или наименований полей Unicode (наименования полей желательно записывать в латинском алфавите в верхнем регистре для того, чтобы избежать проблем с совместимостью со старыми программами). Для работы с объектом после его создания можно открыть внешний файл (Open) и получить информацию из него (Select, Next), либо, для новых файлов, изменить имя файла (чтобы объект считал, что файл открыт), выбрать необходимую кодовую страницу, добавить нужные поля, и сохранить файл. Пример создания и заполнения нового файла:

//Создадим новый файл с именем ИмяФайла для выгрузки продаж
бРез:=dbf.Create();
бРез.FileName:=ИмяФайла;
//Используем кодировку: кириллица OEM
бРез.CodePage:=866;
бРез.AddField(,"DATE","DATE");
бРез.AddField(,"NUMBER","STRING.20");
бРез.AddField(,"POINTCODE","STRING.20");
бРез.AddField(,"POINT","STRING.200");
бРез.AddField(,"NOMCODE","STRING.10");
бРез.AddField(,"NOMNAME","STRING.60");
бРез.AddField(,"NOMCOEFF","NUMBER.5.0");
бРез.AddField(,"AMOUNT","NUMBER.10.0");
бРез.AddField(,"PRICE","NUMBER.15.2");
бРез.AddField(,"SUM","NUMBER.15.2");

//Выгрузим строки строчной части Номенклатура в созданный файл
зАД:=aEl.ТорговаяТочка;
aTab:=aEl.LineParts("Номенклатура");
aTab.Select();
While aTab.Next() Do
  If aTab.Количество=0 Then
    Continue;
  EndIf;
  зН:=aTab.Номенклатура;
  //Добавим новую запись
  бРез.AddRecord(,"DATE,NUMBER,POINTCODE,POINT,NOMCODE,NOMNAME,NOMCOEFF,AMOUNT,PRICE,SUM",
    aEl.DocDate,aEl.DocNum,зАД.Code,зАД,зН.Code,зН.Name,зН.Коэффициент,aTab.Количество,Round(aTab.Сумма/aTab.Количество,2),aTab.Сумма);
EndDo;
//Сохраним и закроем файл
бРез.Save();
бРез.Close();

Атрибуты и функции

Идентификатор Статус Тип Визуальная Параметры Описание
Create Реализована Функция DBF.Create():<Новый объект (DBF)> Функция возвращает новый объект типа Внешняя таблица DBF
FileOpen Реализована Атрибут DBF.FileOpen:<DBF-файл открыт (INT)> Атрибут проверяет, задан ли файл для текущего объекта. Атрибут возвращает 1 если файл был загружен (он существовал раньше), либо задано имя файла, но таблица новая, и еще ни разу не сохранялась.
Codepage Реализована Атрибут DBF.Codepage:<Кодовая страница данных файла (INT)> Получить кодовую страницу файла, либо установить ее в заголовок файла (при этом сами данные в файле не будут перекодированы -- используется для открытия неверно созданных файлов, для перекодировки данных используйте TranslateTo).
LoadInMemory Планируется Атрибут DBF.LoadInMemory:<Загружать файл полностью или читать по записям с диска (INT)> Получить или изменить режим открытия файла. По умолчанию файл полностью загружается в память, что сильно ускоряет работу с ним. Опция может изменить режим, в память будут загружены только отдельные записи, что может быть полезно для очень больших файлов.
FileName Реализована Атрибут DBF.FileName:<Имя открытого или создаваемого файла (STRING)> Получить или изменить имя открытого в данный момент файла. Имя задается с путем к файлу и расширением. Если при изменении имени файл существует, файл будет автоматически открыт.
CurRecord Реализована Атрибут DBF.CurRecord:<Индекс текущей записи (INT)> Получает индекс текущей открытой записи. Если запись новая, атрибут возвращает -1, если позиционирование на запись не производилось, атрибут возвращает 0.
IsDeleted Реализована Атрибут DBF.IsDeleted:<Текущая запись удалена (INT)> Получить или изменить статус удаления текущей позиционированной или новой записи.
Fields Реализована Атрибут DBF.Fields:<Количество полей в файле (INT)> Атрибут возвращает количество полей в текущем файле
<Имя поля> Реализована Атрибут DBF.<Имя поля>:<Значение поля> Получить или изменить значение поля с именем <Имя поля> для текущей позиционированной или созданной строки. Внимание! Поиск имен полей ведется без учета регистра, если в таблице существуют поля, имена которых отличаются только регистром, необходимо использовать функции GetValue или SetValue.
Open Реализована Функция DBF.Open(<Имя файла (STRING)>) Функция закрывает ранее открытый файл, если таковой был, и открывает указанный
Save Реализована Функция DBF.Save() Функция сохраняет все изменения, произведенные в открытом файле (т.е., сохраняет на диск все данные файла и, если необходимо, его заголовок).
SaveRecord Реализована Функция DBF.SaveRecord(<Сохранить изменения (INT)>=0) Функция сохраняет изменения в текущей записи (при этом сама запись не будет записана на диск, без дополнительного параметра).
Close Реализована Функция DBF.Close() Функция закрывает текущий рабочий файл, удаляя из него все записи. Все несохраненные изменения будут утеряны.
Pack Планируется Функция DBF.Pack() Функция удаляет из текущего файла все записи, помеченные на удаление.
AddField Реализована Функция DBF.AddField(<Индекс нового поля (INT)>,<Наименование нового поля (STRING)>,<Тип данных нового поля (STRING)>) Функция добавляет новое поле в текущий файл. Если в файле существуют записи, новое поле будет заполнено пустыми значениями.
RemoveField Планируется Функция DBF.RemoveField(<Индекс или наименование поля (INT,STRING)>) Функция удаляет поле из текущего файла.
FieldName Реализована Функция DBF.FieldName(<Индекс поля (INT)>):<Наименование поля (STRING)> Функция получает наименование поля по его индексу.
FieldIndex Реализована Функция DBF.FieldIndex(<Наименование поля (STRING)>):<Индекс поля (INT)> Функция получает индекс поля по его наименованию.
FieldDataType Планируется Функция DBF.FieldDataType(<Наименование или индекс поля (INT,STRING)>):<Тип данных поля (STRING)> Функция получает тип данных поля по его наименованию или индексу.
Clear Реализована Функция DBF.Clear() Функция удаляет все записи и все поля из текущего файла.
ClearRecords Реализована Функция DBF.ClearRecords() Функция удаляет все записи из текущего файла, при этом его поля остаются без изменения.
RemoveRecords Планируется Функция DBF.RemoveRecords(<Фильтры поиска записей>...,<Наименование используемого индекса (STRING)>) Функция физически удаляет записи, входящие в фильтр, из текущего файла.
RecordsNumber Планируется Функция DBF.RecordsNumber(<Фильтры поиска записей>...,<Наименование используемого индекса (STRING)>):<Количество записей (INT)> Функция возвращает количество записей, входящих в заданный фильтр.
LoadRecords Планируется Функция DBF.LoadRecords(<Макс. количество записей для загрузки (INT)>=0,<Фильтры поиска записей>...,<Наименование используемого индекса (STRING)>):<Загруженные записи (TAB)> Функция загружает в таблицу значений записи файла, входящие в заданный фильтр.
CopyFrom Планируется Функция DBF.CopyFrom(<Таблица из которой происходит копирование (TAB)>,<Начальная позиция таблицы (INT)>=0,<Количество записей для копирования (INT)>) Функция копирует требуемый диапазон строк из таблицы значений в файл. Наименования столбцов для копирования должны соответствовать наименованиям полей файла.
AddRecord Реализована Функция DBF.AddRecord(<Индекс записи (INT)>=0,<Наименования полей (STRING)>,<Значение поля 1>,<Значение поля 2>...) Функция добавляет (или вставляет) новую запись в текущий файл и заполняет указанные поля записи указанными значениями. Запись становится текущей, остальные поля можно заполнить позже. До изменения текущей записи, предыдущая будет автоматически сохранена (т.е., будет выполнена функция <DBF>.SaveRecord(0), если было позиционирование на предыдущей записи). Внимание! Поиск имен полей производится с учетом регистра! При указании имени необходимо соблюдать корректный регистр букв имени поля!
Get Планируется Функция DBF.Get(<Индекс записи (INT)>,<Индекс или наименование поля (INT,STRING)>):<Значение поля> Функция получает значение указанного поля в произвольной записи файла
Set Планируется Функция DBF.Set(<Индекс записи (INT)>,<Индекс или наименование поля (INT,STRING)>,<Значение поля>) Функция изменяет значение указанного поля в произвольной записи файла
GetValue Реализована Функция DBF.GetValue(<Индекс или наименование поля (INT,STRING)>):<Значение поля> Функция получает значение поля текущей записи по его имени или индексу. Внимание! Поиск имен полей производится с учетом регистра! При указании имени необходимо соблюдать корректный регистр букв имени поля!
SetValue Реализована Функция DBF.SetValue(<Индекс или наименование поля (INT,STRING)>,<Значение поля>) Функция изменяет значение поля текущей записи по его имени или индексу. Внимание! Поиск имен полей производится с учетом регистра! При указании имени необходимо соблюдать корректный регистр букв имени поля!
TranslateTo Планируется Функция DBF.TranslateTo(<Кодовая страница (INT)>) Функция преобразует текстовые данные во всем файле в новую кодовую страницу. Заголовок файла будет модифицирован соответствующим образом.
OpenIndexFile Планируется Функция DBF.OpenIndexFile(<Имя файла индекса (STRING)>) Функция добавляет указанный файл индекса к текущим открытым индексам файла
IndexCount Планируется Функция DBF.IndexCount():<Количество открытых индексов (INT)> Функция получает количество загруженных в данный момент индексов
CloseIndexFile Планируется Функция DBF.CloseIndexFile(<Имя индекса (STRING)>) Функция закрывает указанный индекс файла (индексы именуются по именам их файлов без расширений).
CreateIndex Планируется Функция DBF.CreateIndex(<Путь и имя файла индекса (STRING)>,<Имена полей идекса с направлениями сортировки (STRING)>) Функция создает и заполняет новый индекс с указанным именем файла
First Реализована Функция DBF.First() Функция перемещает текущий курсор позиционирования вне записей файла (текущая запись не будет позиционированной)
Select Частичная реализация Функция DBF.Select(<Фильтры поиска записей>...,<Наименование используемого индекса (STRING)>):<Найдена по крайней мере одна запись (INT)> Функция открывает выборку в файле, которая будет получать записи с указанным фильтром.
Next Реализована Функция DBF.Next():<Следующая запись найдена (INT)> Функция получает следующую запись выборки. Если запись найдена, функция возвращает 1, иначе 0.
Goto Реализована Функция DBF.Goto(<Индекс записи файла (INT)>) Функция перемещает текущую запись внутри файла.
Mark Реализована Функция DBF.Mark(<Установить пометку удаления (1), снять (0) (INT)>,<Индекс записи (INT)>=0,<Сохранить изменения (INT)>=0) Функция устанавливает или снимает на требуемой или текущей записи признак удаления. Функция также может сохранить текущие изменения файла.
RereadRecord Реализована Функция DBF.RereadRecord() Функция перечитывает текущую запись из памяти, все изменения произведенные в текущей записи будут утеряны.