Difference between revisions of "Внешняя таблица DBF"
(→Атрибуты и функции) |
m (1 revision imported) |
(No difference)
|
Latest revision as of 07:54, 7 February 2021
DBF (Внешняя таблица DBF) | |||||
---|---|---|---|---|---|
|
Объект внешняя таблица 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() | Функция перечитывает текущую запись из памяти, все изменения произведенные в текущей записи будут утеряны. |