Работа с DBF файлами через ADO
Материал из GedeminWiki
(Различия между версиями)
SYSDBA (обсуждение | вклад) (→С использованием библиотеки gsdbquery.dll) |
SYSDBA (обсуждение | вклад) |
||
| Строка 1: | Строка 1: | ||
| + | Файлы DBF представляют собой таблицы [http://en.wikipedia.org/wiki/DBase СУБД dBase] и часто используются для передачи данных от одного приложения к другому. Драйвер [http://en.wikipedia.org/wiki/ActiveX_Data_Objects ADO] встроен в систему Windows и не нуждается в отдельной установке. | ||
| − | + | Строки подключения для разных источников данных можно найти [http://www.connectionstrings.com/ здесь]. | |
| − | + | ||
| − | + | ==== Создание подключения ==== | |
| − | |||
| − | |||
| − | |||
<source lang="vbnet"> | <source lang="vbnet"> | ||
set ADOConnection = CreateObject("ADODB.Connection") | set ADOConnection = CreateObject("ADODB.Connection") | ||
| Строка 14: | Строка 11: | ||
"Extended Properties=""dBASE IV;"";") | "Extended Properties=""dBASE IV;"";") | ||
</source> | </source> | ||
| − | |||
| − | Создание объекта-комманды | + | где FilePath –- путь к папке с файлом DBF. |
| + | |||
| + | ==== Создание объекта-комманды ==== | ||
| + | |||
<source lang="vbnet"> | <source lang="vbnet"> | ||
set ADOCommand = CreateObject("ADODB.Command") | set ADOCommand = CreateObject("ADODB.Command") | ||
ADOCommand.ActiveConnection = ADOConnection | ADOCommand.ActiveConnection = ADOConnection | ||
</source> | </source> | ||
| − | Выполнение запроса и получение результата | + | |
| + | ==== Выполнение запроса и получение результата ==== | ||
| + | |||
<source lang="vbnet"> | <source lang="vbnet"> | ||
ADOCommand.CommandText = " SELECT COUNT(*) as c_all FROM [" & Filename & "]" | ADOCommand.CommandText = " SELECT COUNT(*) as c_all FROM [" & Filename & "]" | ||
set ADODataset = ADOCommand.Execute | set ADODataset = ADOCommand.Execute | ||
</source> | </source> | ||
| + | |||
Запрос на создание таблицы в папке указанной в подключении: | Запрос на создание таблицы в папке указанной в подключении: | ||
| + | |||
<source lang="vbnet"> | <source lang="vbnet"> | ||
ADOCommand.CommandText = " CREATE TABLE NEW.DBF (kod_plat CHAR(4), debet decimal(10), kredit decimal(10))" | ADOCommand.CommandText = " CREATE TABLE NEW.DBF (kod_plat CHAR(4), debet decimal(10), kredit decimal(10))" | ||
ADOCommand.Execute | ADOCommand.Execute | ||
</source> | </source> | ||
| + | |||
Пример работы: | Пример работы: | ||
| + | |||
<source lang="vbnet"> | <source lang="vbnet"> | ||
' Создадим подключение к файлу DBF | ' Создадим подключение к файлу DBF | ||
| Строка 57: | Строка 62: | ||
ADOConnection.Close | ADOConnection.Close | ||
</source> | </source> | ||
| − | Схема используемых классов | + | |
| + | ==== Схема используемых классов ==== | ||
<source lang="delphi"> | <source lang="delphi"> | ||
| Строка 84: | Строка 90: | ||
State: Integer | State: Integer | ||
Version: String | Version: String | ||
| − | |||
| − | |||
Command = class | Command = class | ||
методы: | методы: | ||
| Строка 105: | Строка 109: | ||
Properties: Properties | Properties: Properties | ||
State: Integer | State: Integer | ||
| − | + | ||
| − | + | ||
Recordset = class | Recordset = class | ||
методы: | методы: | ||
| Строка 166: | Строка 169: | ||
Status: Integer | Status: Integer | ||
StayInSync: Boolean | StayInSync: Boolean | ||
| − | |||
| − | |||
Fields = class | Fields = class | ||
| Строка 182: | Строка 183: | ||
Item(Index: Variant): _Field default | Item(Index: Variant): _Field default | ||
| − | |||
| − | |||
Field = class | Field = class | ||
методы: | методы: | ||
| Строка 203: | Строка 202: | ||
Value: Variant | Value: Variant | ||
| − | |||
| − | |||
| − | |||
Properties = class | Properties = class | ||
методы: | методы: | ||
| Строка 212: | Строка 208: | ||
Count: Integer | Count: Integer | ||
Item(Index: Variant): Property default | Item(Index: Variant): Property default | ||
| − | |||
| − | |||
Property = class | Property = class | ||
| Строка 221: | Строка 215: | ||
Type: Integer(перечисление) | Type: Integer(перечисление) | ||
Value: Variant | Value: Variant | ||
| − | |||
</source> | </source> | ||
[[Category:Учебный курс]] [[Category:Импорт/экспорт данных]] | [[Category:Учебный курс]] [[Category:Импорт/экспорт данных]] | ||
Версия 16:19, 10 марта 2011
Файлы DBF представляют собой таблицы СУБД dBase и часто используются для передачи данных от одного приложения к другому. Драйвер ADO встроен в систему Windows и не нуждается в отдельной установке.
Строки подключения для разных источников данных можно найти здесь.
Содержание |
Создание подключения
set ADOConnection = CreateObject("ADODB.Connection") call ADOConnection.Open("Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=" & FilePath & ";" & _ "Extended Properties=""dBASE IV;"";")
где FilePath –- путь к папке с файлом DBF.
Создание объекта-комманды
set ADOCommand = CreateObject("ADODB.Command") ADOCommand.ActiveConnection = ADOConnection
Выполнение запроса и получение результата
ADOCommand.CommandText = " SELECT COUNT(*) as c_all FROM [" & Filename & "]" set ADODataset = ADOCommand.Execute
Запрос на создание таблицы в папке указанной в подключении:
ADOCommand.CommandText = " CREATE TABLE NEW.DBF (kod_plat CHAR(4), debet decimal(10), kredit decimal(10))" ADOCommand.Execute
Пример работы:
' Создадим подключение к файлу DBF set ADOConnection = CreateObject("ADODB.Connection") call ADOConnection.Open("Driver={Microsoft dBASE Driver (*.dbf)};DriverID=277;Dbq=d:\;") ' Создадим объект ADODB.Command и подключим его к файлу DBF set ADOCommand = CreateObject("ADODB.Command") ADOCommand.ActiveConnection = ADOConnection ' Запрос на получение всех данных файла ADOCommand.CommandText = " SELECT * FROM [" & Filename & "]" set ADODataset = ADOCommand.Execute ADODataset.MoveFirst do while not ADODataset.EOF if ADODataset.Fields.Item("DEBET").Value = ADODataset.Fields.Item("KREDIT").Value then call MsgBox("Нулевое сальдо") end if ADODataset.MoveNext loop ' Закрыть подключение ADOConnection.Close
Схема используемых классов
Connection = class методы: BeginTrans: Integer Cancel Close CommitTrans Execute(CommandText: String; RecordsAffected: Variant; Options: Integer): _Recordset Open(ConnectionString: String; UserID: String; Password: String; Options: Integer) OpenSchema(Schema: Integer(перечисление); Restrictions: Variant; SchemaID; Variant): _Recordset RollbackTrans свойства: Attributes: Integer CommandTimeout: Integer ConnectionString: String ConnectionTimeout: Integer CursorLocation: Integer(перечисление) DefaultDatabase: String Errors: Errors IsolationLevel: Integer(перечисление) Mode: Integer(перечисление) Properties: Properties Provider: String State: Integer Version: String Command = class методы: Cancel CreateParameter(Name: String; Type: Integer(перечисление); Direction: Integer(перечисление); Size: Integer(перечисление); Value: Variant): Variant Execute(RecordsAffected: Variant; Parameters: Variant; Options: Integer): _Recordset свойтва: ActiveConnection: _Connection CommandStream: Variant CommandText: String CommandTimeout: Integer CommandType: Integer(перечисление) Dialect: String Name: String NamedParameters: Boolean Parameters: unknown Prepared: Boolean Properties: Properties State: Integer Recordset = class методы: _xClone: _Recordset _xResync(AffectRecords: Integer(перечисление)) _xSave(FileName: String; PersistFormat: Integer(перечисление)) AddNew(FieldList: Variant; Values: Variant) Cancel CancelBatch(AffectRecords: Integer(перечисление)) CancelUpdate Clone(LockType: Integer(перечисление)): _Recordset Close CompareBookmarks(Bookmark1: Variant; Bookmark2: Variant): Integer(перечисление) Delete(AffectRecords: Integer(перечисление)) Find(Criteria: String; SkipRecords: Integer(перечисление); SearchDirection: Integer(перечисление); Start: Variant) GetRows(Rows: Integer; Start: Variant; Fields: Variant): Variant Move(NumRecords: Integer(перечисление); Start: Variant) MoveFirst MoveLast MoveNext MovePrevious NextRecordset(RecordsAffected: Variant): _Recordset Open(Source: Variant; ActiveConnection: Variant; CursorType: Integer(перечисление); LockType: Integer(перечисление); Options: Integer) Requery(Options: Integer) Resync(AffectRecords: Integer(перечисление); ResyncValues: Integer(перечисление)) Save(Destination: Variant; PersistFormat: Integer(перечисление)) Seek(KeyValues: Variant; SeekOption: Integer(перечисление)) Supports(CursorOptions: Integer(перечисление)): Boolean Update(Fields: Variant; Values: Variant) UpdateBatch(AffectRecords: Integer(перечисление)) свойства: AbsolutePage: Integer(перечисление) AbsolutePosition: Integer(перечисление) ActiveCommand: IDispatch ActiveConnection: Variant BOF: Boolean Bookmark: Variant CacheSize: Integer Collect: Variant CursorLocation: Integer(перечисление) CursorType: Integer(перечисление) DataMember: String DataSource: Неопределен EditMode: Integer(перечисление) EOF: Boolean Fields: _Fields Filter: Variant Index: String LockType: Integer(перечисление) MarshalOptions: Integer(перечисление) MaxRecords: Integer(перечисление) PageCount: Integer(перечисление) PageSize: Integer Properties: unknown RecordCount: Integer(перечисление) Sort: String Source: Variant State: Integer Status: Integer StayInSync: Boolean Fields = class методы: _Append(Name: String; Type: Integer(перечисление); DefinedSize: Integer(перечисление); Attrib: Integer(перечисление)) Append(Name: String; Type: Integer(перечисление); DefinedSize: Integer(перечисление); Attrib: Integer(перечисление); FieldValue: Variant) CancelUpdate Delete(Index: Variant) Refresh Resync(ResyncValues: Integer(перечисление)) Update свойства: Count: Integer Item(Index: Variant): _Field default Field = class методы: AppendChunk(Data: Variant) GetChunk(Length: Integer): Variant свойства: ActualSize: Integer(перечисление) Attributes: Integer DataFormat: Неопределен DefinedSize: Integer(перечисление) Name: String NumericScale: Unsigned char OriginalValue: Variant Precision: Unsigned char Properties: unknown Status: Integer Type: Integer(перечисление) UnderlyingValue: Variant Value: Variant Properties = class методы: Refresh свойства: Count: Integer Item(Index: Variant): Property default Property = class свойства: Attributes: Integer Name: String Type: Integer(перечисление) Value: Variant