Работа с DBF файлами через ADO

Материал из GedeminWiki
Перейти к: навигация, поиск

Файлы 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 файлами через ADO

' Создадим подключение к файлу 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

См. также

  • Информация по ADO в MSDN
Персональные инструменты
Пространства имён

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