Visual Basic Tips


Jetデータベース(DAO)インデックスの作成と削除


Jetデータベースの中のテーブルにインデックスを作成します。

※このサンプルを動かすにはVisual Basic Tipsの
 Jetデータデース(DAO)データベースの作成と削除
 Jetデータベース(DAO)テーブルの作成と削除
 を行ってデータベースとテーブルを作成してください。

Private Sub Form_Load()
  
Call CreateIndex(App.Path & "\work.mdb")
End Sub


Sub CreateIndex(strDbPath As String)
  
Dim intRet As Integer
  
Dim db As Database
  
Dim ws As Workspace
  
Dim tdf As TableDef
  
Dim fld1 As Field
  
Dim fld2 As Field
  
Dim idx As Index

  
On Error GoTo ErrHandler

  
'ワークスペースの設定
  
Set ws = DBEngine.Workspaces(0)
  
'データベースのオープン
  
Set db = ws.OpenDatabase(strDbPath)
  
'対象テーブルの設定
  
Set tdf = db.TableDefs("新規テーブル")
  
'インデックスの作成
  
Set idx = tdf.CreateIndex("primarykey")

  idx.Primary =
True 'プライマリキーの時指定します。
  idx.Unique =
True

  
Set fld1 = idx.CreateField("FieldText")
  
Set fld2 = idx.CreateField("FieldInteger")

  idx.Fields.Append fld1
  idx.Fields.Append fld2

  
'インデックスの追加
  tdf.Indexes.Append idx

  
'データベースのクローズ
  db.Close
  ws.Close
  
Exit Sub
ErrHandler:
  
If Err = 3283 Then '主キーが既に存在(主キーで無い場合は3284になります)
    db.TableDefs("新規テーブル").Indexes.Delete "primarykey"
    
Resume
  
End If
  intRet = MsgBox("<" & Err & ">" & Error(Err), vbOKOnly, "CreateIndex")
End Sub


DownLoad vbtips014.lzh 5KB (VB6.0)