VERSION 1.0 CLASS
BEGIN
  MultiUse = -1  'True
  Persistable = 0  'NotPersistable
  DataBindingBehavior = 0  'vbNone
  DataSourceBehavior  = 0  'vbNone
  MTSTransactionMode  = 0  'NotAnMTSObject
END
Attribute VB_Name = "DBase"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = True
Attribute VB_PredeclaredId = False
Attribute VB_Exposed = False
Option Explicit

'Klasa DBase
'Ukrywa szczegóły tworzenia połączeń do konkretnej bazy danych
'Implementuje fabrykę tworzenia indeksów, dodawania tabel,
'Oraz dodawania indeksów do tabel
'Wersja stosująca ADO oraz ADOX
Private db As ADODB.Connection    'Połączenie do bazy danych
Private cat As Catalog
Private fl As File                'Używane dla sprawdzenia istnienia pliku
Private con As String
'--------
Public Sub createDatabase(dbname As String)
  Set fl = New File
  Set cat = New Catalog
  fl.setFilename dbname
  If fl.exists() Then
    fl.delete
  End If

  Set db = New Connection
  'Engine Type 5 dla Access 2000 oraz Engine Type 4 dla Access 97
  'Skonstruuj łańcuch dla połączenia
  con = "Provider=Microsoft.Jet.OLEDB.4.0;Data source=" & dbname & _
  "; Jet OLEDB:Engine Type=5;"
  cat.Create con
End Sub
'-----
Public Sub openDatabase(dbname As String)
  Set db = New Connection
  Set cat = New Catalog
  'Skonstruuj łańcuch dla połączenia
  con = "Provider=Microsoft.Jet.OLEDB.4.0;Data source=" & dbname & _
  "; Jet OLEDB:Engine Type=5;"
  db.ConnectionString = con
  db.Open
  cat.ActiveConnection = con
End Sub
'--------
Public Function makeTable(nm As String) As Indexer
  Dim inx As New Indexer
  inx.makeTable cat, nm
  Set makeTable = inx
End Function
'--------
Public Function openTable(tbName As String) As Recordset
  'Uzyskaj dostęp do tabeli
  Dim rec As New Recordset
  rec.LockType = adLockOptimistic
  rec.CursorType = adOpenKeyset
  'Otwórz połączenie jeśli zostało zamknięte
  If db.State = adStateClosed Then
    db.ConnectionString = con
    db.Open
  End If
  
  'Otwórz recordset
  rec.Open tbName, db, , , adCmdTableDirect
  Set openTable = rec
End Function
'--------
Public Function openQuery(qry As String) As Recordset
  'Otwiera recordset dla zapytania SQL
  Dim cmd As New Command
  Dim rec As Recordset
  cmd.ActiveConnection = db  'Pobierz połączenie
  cmd.CommandType = adCmdText
  cmd.CommandText = qry
  'Wykonaj zapytanie SQL
  Set rec = cmd.Execute
  Set openQuery = rec        'Zwróć recordset
End Function
