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

Материал из GedeminWiki
(Различия между версиями)
Перейти к: навигация, поиск
(С использованием библиотеки gsdbquery.dll)
 
(не показана 1 промежуточная версия 1 участника)
Строка 1: Строка 1:
 +
Файлы DBF представляют собой таблицы [http://en.wikipedia.org/wiki/DBase СУБД dBase] и часто используются для передачи данных от одного приложения к другому. Драйвер [http://en.wikipedia.org/wiki/ActiveX_Data_Objects ADO] встроен в систему Windows и не нуждается в отдельной установке.
  
Файлы DBF представляют собой таблицы файловой базы данных dBase. Часто используются для передачи данных от одного приложения к другому.
+
==== Создание подключения ====
== При помощи ADO ==
+
  
Драйвер ADO уже встроен в систему Windows, и дополнительно устанавливать его не нужно. Он представляет собой всего лишь удобную Active-X оболочку для доступа к данным, которую можно использовать почти из любых языков и сред программирования.
 
 
Тот же самый драйвер ADO можно применять для доступа к самым разным источникам данных (например, к базе Oracle), с небольшими отличиями в строке подключения. Строки подключения для разных источников данных можно найти здесь: http://www.connectionstrings.com/
 
 
Создание подключения:
 
 
<source lang="vbnet">
 
<source lang="vbnet">
 
set ADOConnection = CreateObject("ADODB.Connection")
 
set ADOConnection = CreateObject("ADODB.Connection")
Строка 14: Строка 9:
 
"Extended Properties=""dBASE IV;"";")
 
"Extended Properties=""dBASE IV;"";")
 
</source>
 
</source>
где FilePath – путь к папке с файлом DBF
 
  
Создание объекта-комманды:
+
где FilePath –- путь к папке с файлом DBF. Строки подключения для разных источников данных можно найти [http://www.connectionstrings.com/ здесь].
 +
 
 +
==== Создание объекта-комманды ====
 +
 
 
<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>
Пример работы:
+
 
 +
==== Пример работы с DBF файлами через ADO ====
 +
 
 
<source lang="vbnet">
 
<source lang="vbnet">
 
' Создадим подключение к файлу DBF
 
' Создадим подключение к файлу DBF
Строка 57: Строка 60:
 
ADOConnection.Close
 
ADOConnection.Close
 
</source>
 
</source>
Схема используемых классов:
+
 
 +
==== Схема используемых классов ====
  
 
<source lang="delphi">
 
<source lang="delphi">
Строка 84: Строка 88:
 
   State: Integer
 
   State: Integer
 
   Version: String
 
   Version: String
</source>
 
  
<source lang="delphi">
 
 
Command = class
 
Command = class
 
методы:
 
методы:
Строка 105: Строка 107:
 
   Properties: Properties
 
   Properties: Properties
 
   State: Integer
 
   State: Integer
</source>
+
 
<source lang="delphi">
+
 
Recordset = class
 
Recordset = class
 
методы:
 
методы:
Строка 166: Строка 167:
 
   Status: Integer
 
   Status: Integer
 
   StayInSync: Boolean
 
   StayInSync: Boolean
</source>
 
<source lang="delphi">
 
  
 
Fields = class
 
Fields = class
Строка 182: Строка 181:
 
   Item(Index: Variant): _Field default
 
   Item(Index: Variant): _Field default
  
</source>
 
<source lang="delphi">
 
 
Field = class
 
Field = class
 
методы:
 
методы:
Строка 203: Строка 200:
 
   Value: Variant
 
   Value: Variant
  
</source>
 
 
<source lang="delphi">
 
 
Properties = class
 
Properties = class
 
методы:
 
методы:
Строка 212: Строка 206:
 
   Count: Integer
 
   Count: Integer
 
   Item(Index: Variant): Property default
 
   Item(Index: Variant): Property default
</source>
 
<source lang="delphi">
 
  
 
Property = class
 
Property = class
Строка 221: Строка 213:
 
   Type: Integer(перечисление)
 
   Type: Integer(перечисление)
 
   Value: Variant
 
   Value: Variant
 +
</source>
  
</source>
+
=== См. также ===
 +
 
 +
* Информация по [http://msdn.microsoft.com/en-us/library/ms807498.aspx ADO] в MSDN
  
[[Category:Учебный курс]] [[Category:Импорт/экспорт данных]]
+
[[Category:VBScript]]
 +
[[Category:Учебный курс]]  
 +
[[Category:Импорт/экспорт данных]]

Текущая версия на 16:26, 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 файлами через 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
Персональные инструменты
Пространства имён

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