Работа с DBF файлами с помощью библиотеки gsdbquery.dll

Материал из GedeminWiki
Версия от 20:34, 30 декабря 2006; SYSDBA (обсуждение | вклад)

(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

Работа с DBF-файлами в Гедымине By Alexandra Для работы с DBF в Гедымине используется класс gsdb_rpQueryList, создаваемый средствами VBScript (обязательно должен быть установлен BDE): set gsql = CreateObject("gsdbquery.gsdb_rpQueryList") Дальше все очень похоже на IgsQueryList (к которому принадлежит BaseQueryList).

Методы Add(QueryName: String; MemQuery: Integer): Integer Добавляет объект IgsDBQuery с именем QueryName в список запросов, возвращает его индекс в списке (начиная с 0). MemQuery может иметь значения 0 и 1.

        Если  MemQuery = 0, то данные хранятся в объекте класса TQuery. Значит, добавленный IgsDBQuery может выполнять SQL-запросы.

Если же MemQuery = 1, данные хранятся в объекте класса TClientDataSet. В него можно добавлять поля и вставлять записи (см BaseQueryList). (И вряд ли кому-нибудь на практике это понадобится).

Clear Очищает список IgsDBQuery’в

Delete(Index: Integer) Удаляет IgsDBQuery с индексом Index. Индексы всех следующих за ним в списке запросов уменьшаются на 1 (см пример в BaseQueryList).

DeleteByName(AName: String) Удаляет запрос с именем AName из списка

Свойства Count: Integer Количество IgsDBQuery’в в списке

Query (Index: Integer): IgsDBQuery Возвращает IgsDBQuery по индексу в списке

QueryByName(Name: String): IgsDBQuery Возвращает IgsDBQuery по имени в списке.

После добавления нового IgsDBQuery с параметром MemQuery = 0 его можно использовать для создания файла DBF:

 set gsql = CreateObject("gsdbquery.gsdb_rpQueryList")
 set qryDoc = gsql.Query(gsql.Add("qryDoc", 0))
 qryDoc.SQL = "CREATE TABLE '" + _
     FileName + "'" + _
     "(" +_
     "  FIELD1  CHAR(5), " + _
     "  FIELD2  DATE, " + _
     "  FIELD3  NUMERIC(5)," + _
     "  FIELD4  NUMERIC(5, 3), " + _
     "  FIELD5 BOOLEAN " + _
     "  )"
 qryDoc.ExecSQL
 qryDoc.Close

Здесь FileName – полный путь к файлу. Если такой файл существует – получим ошибку. Поэтому предварительно нужно проверить, существует ли файл с таким именем, и, например, удалить его. Тип NUMERIC(5, 3) означает, что размер поля – 5, из них 3 знака после запятой.

Можно вставлять записи в DBF. Пусть поля записи, которые нужно вставить в DBF, найдены с помощью q (TIBSQL):

qryDoc.SQL = _
   "INSERT INTO '" + FileName + "'" + _
   "(FIELD1, FIELD2, FIELD3, FIELD4, FIELD5) " + _
   "VALUES" + _
   "(:FIELD1, :FIELD2, :FIELD3, :FIELD4, :FIELD5) "
   qryDoc.ParamByName("FIELD1").AsString = _
                q.FieldByName("FIELD1").AsString
   qryDoc.ParamByName("FIELD2").AsVariant = _  
                q.FieldByName("FIELD2").AsDateTime
   qryDoc.ParamByName("FIELD3").AsFloat = _
                q.FieldByName("FIELD3").AsDouble
   qryDoc.ParamByName("FIELD4").AsFloat = _
                q.FieldByName("FIELD4").AsDouble
   qryDoc.ParamByName("FIELD5").AsInteger = _ 
                q.FieldByName("FIELD5").AsInteger
   qryDoc.ExecSQL

Параметры могут иметь тип AsInteger, AsFloat, AsString, AsVariant. Для булевых полей можно использовать AsInteger, для даты – AsVariant.

Делать выборку из DBF можно тоже через IgsDBQuery. qryDoc.SQL = _

     “SELECT * FROM ‘” + _
     FileName + “’” + _
     “WHERE FIELD3 = :fld3”

qryDoc.ParamByName(“fld3”).As Float = 3 qryDoc.Open ‘ а не ExecSQL

Также можно удалять записи из DBF.

Персональные инструменты
Пространства имён

Варианты
Действия
Навигация
Инструменты