- Access 2000を起動して新規データベース MyKB
を作成します。
- データベースウインドウのテーブルタブをクリックしたら新規作成のボタンをクリックして、tblTipsとtblTypeを作成します。テーブルを作成したらサンプルデータを入力します。

|
| 図1-tblTipsを作成してサンプルデータを入力 |
 |
| 図2-tblTypeを作成してサンプルデータを入力 |
- ツールボックスからコントロールの選択アイコン
をクリックします。ActiveXコントロールの一覧から、Microsoft
TreeView Control, version 6.0をクリックしてフォームの左側に貼り付けます。同様の手順でMicrosoft
ListView Control, version 6.0をクリックしてフォームの右上に貼り付けます。Microsoft Web Browserをクリックしてフォームの右中央に貼り付けます。。最後に、Microsoft
ImageList Control, version 6.0 をクリックしてTreeViewコントロールの上に貼り付けます。
ActiveXコントロールを貼り付けたら、コントロール名をobjTreeView、objListView、objImageType、objIEの名前に書き換えます。
 |
| 図4-フォームにTreeView、ListView、Web
Browser、ImageListコントロールを貼り付けた例 |
- ImageListのコントロールをダブルクリックしてプロパティを表示させます。全般タブから
16 x 16 を選択してから、イメージタブをクリックして
テーブル(1-"Tables")、 クエリ(2-"Queries")、 フォーム(3-"Forms")、 レポート(4-"Reports")、 モジュール(5-"Modules")、 チップ(6-"Tips")のイメージを登録します。イメージを登録するとき、インデックスとキーを入力します。キーは、ダブルクオテーション(")で囲みます。全てのイメージを登録したら、OKをクリックしてプロパティを閉じます。
 |
| 図5-ImageListのプロパティにAccessのオブジェクトのアイコンを登録 |
- TreeViewコントロールをダブルクリックしてプロパティを表示させます。全般タブをクリックしたら、スタイルを
7 - tvwTreelinesPlusMinusPictureText に設定します。線のスタイルを
1- tvwRootLines に設定します。イメージリストにobjImageTypeを設定します。最後にインデント幅を300に設定したらOKボタンをクリックしてプロパティを閉じます。
 |
| 図6-TreeViewのプロパティを表示させて値を再設定する |
- ListViewコントロールをダブルクリックして、プロパティを表示させます。ListViewのプロパティは、デフォルト値を使用しますので図7のようになっているか確認してOKボタンをクリックします。
 |
| 図7-ListViewのプロパティ |
- フォームのプロパティを表示させて、読み込み時のイベントにリスト1のForm_Loadのイベント処理をコピー&ペーストします。以下同様の手順で、フォームのイベント処理、TreeViewのイベント処理そしてListViewのイベント処理をコピー&ペーストします。最後にモジュールレベルのメモリ変数とサブルーチンをコピー&ペーストします。
注)TreeViewとListViewコントロールのイベント登録は、VBE(Visual Basic Editor)を起動して、イベントのコンボボックスから選択します。
| リスト1-フォームの各種イベント処理とサブルーチン |
Option Compare Database
Option Explicit
' #Const VIEW_MODE = "INTERNET"
#Const VIEW_MODE = "INTRANET"
Private mcnn As ADODB.Connection
Private mrsTips As ADODB.Recordset
Private mrsType As ADODB.Recordset
Private mrstImages As ADODB.Recordset
Private mobjListItems As ListItems
' ********************
Private Sub Form_Load()
Call OpenDatabaseConnection
Call OpenTipsRecordset
Call OpenTypeRecordset
Call LoadListViewHeaders
Call LoadListViewData
Call LoadTreeView
End Sub
' ************************************
Private Sub Form_Unload(Cancel As Integer)
Set mrsTips = Nothing
Set mrsType = Nothing
End Sub
' *************************
Private Sub objListView_Click()
objListView.SetFocus
End Sub
' **********************************************************
Private Sub objListView_ColumnClick(ByVal ColumnHeader As Object)
Dim intCol As Integer
intCol = ColumnHeader.Index - 1
With objListView
If (.SortKey = intCol) Then
If .SortOrder = lvwAscending Then
.SortOrder = lvwDescending
Else
.SortOrder = lvwAscending
End If
Else
.SortKey = intCol
.SortOrder = lvwAscending
End If
.Sorted = True
.SelectedItem.EnsureVisible
End With
End Sub
' ****************************
Private Sub objListView_DblClick()
With objListView
Debug.Print Trim(.SelectedItem.Key) & " " & .SelectedItem
#If VIEW_MODE = "ONLINE" Then
Me!objIE.Navigate "http://www.friendlysw.com/knowhow/" & Trim(.SelectedItem.Key)
#Else
Me!objIE.Navigate "http://dellxps/knowhow/" & Trim(.SelectedItem.Key)
#End If
End With
End Sub
' ***********************************************
Private Sub objTreeView_Collapse(ByVal Node As Object)
Call objTreeView_NodeClick(Node)
End Sub
' **********************************************
Private Sub objTreeView_Expand(ByVal Node As Object)
Call objTreeView_NodeClick(Node)
End Sub
' *************************************************
Private Sub objTreeView_NodeClick(ByVal Node As Object)
Dim strSQL As String
mrsTips.Close
If Node = "Tips" Then
strSQL = "SELECT * FROM tblTips"
Else
strSQL = "SELECT * FROM tblTips WHERE TipType= '" & Node & "'"
End If
mrsTips.Open strSQL, mcnn, adOpenKeyset, adLockReadOnly
Call LoadListViewData
End Sub
' *******************************
Private Sub OpenDatabaseConnection()
Set mcnn = New ADODB.Connection
mcnn.ConnectionString = _
"Provider=Microsoft.Jet.OLEDB.4.0; " & _
"Data Source=" & CurrentProject.Connection
mcnn.Open
End Sub
' ***************************
Private Sub OpenTipsRecordset()
Dim strSQL As String
strSQL = "SELECT tblTips.TipID, tblTips.TipType, tblTips.TipTitle," _
& "tblTips.TipURL, tblTips.TipAdded, tblTips.TipUpdated" _
& " FROM tblTips;"
Set mrsTips = New ADODB.Recordset
mrsTips.Open strSQL, mcnn, adOpenStatic, adLockOptimistic
End Sub
' ***************************
Private Sub OpenTypeRecordset()
Dim strSQL As String
strSQL = "SELECT tblType.TypeID, tblType.TypeName" _
& " FROM tblType;"
Set mrsType = New ADODB.Recordset
mrsType.Open strSQL, mcnn, adOpenKeyset, adLockOptimistic
End Sub
' **********************
Private Sub LoadTreeView()
Dim objTreeView As Control
Dim objNode As Node
Set objTreeView = Me.objTreeView
Set objNode = objTreeView.Nodes.Add(, , "Tips", "Tips", 6)
With mrsType
.MoveFirst
Do Until .EOF
With objTreeView.Nodes
Set objNode = .Add("Tips", tvwChild, , Trim(mrsType!TypeName), Int(mrsType!TypeID))
End With
.MoveNext
Loop
End With
End Sub
' ****************************
Private Sub LoadListViewHeaders()
Dim objListItem As ListItem
Set mobjListItems = Me.objListView.ListItems
With Me.objListView
.SmallIcons = objImageType.Object
.View = lvwReport
With .ColumnHeaders
.Add , , "Title", 8500
.Add , , "Added", 1000
.Add , , "Updated", 1000
End With
End With
End Sub
' *************************
Private Sub LoadListViewData()
Dim objListItem As ListItem
mobjListItems.Clear
With mrsTips
.MoveFirst
Do Until .EOF
Set objListItem = mobjListItems.Add(, mrsTips!TipURL, mrsTips!TipTitle)
With objListItem
.SubItems(1) = mrsTips!TipAdded
.SubItems(2) = Nz(mrsTips!TipUpdated, " ")
.SmallIcon = Chr(34) & mrsTips!TipType & Chr(34)
End With
.MoveNext
Loop
End With
End Sub
|
- フォームビューに切り替えたら、TreeViewからTipsをクリックします。Accessのオブジェクトタイプが表示されたら、Modulesをクリックします。図8のように、ListViewにモジュールに関連するTipの一覧が表示されます。ListViewからアイテムをダブルクリックすると、Web上に登録されているHTMLページを読み込んで、Web
Browserコントロールに表示します。HTMLページのURLは、ListViewのSelectedItem.Keyプロパティから取得します。
URLのプリフィックス(http://....)は、インターネット/イントラネット双方の環境で動作するように条件付コンパイラ定数で制御しています。
Private Sub objListView_DblClick()
With objListView
Debug.Print Trim(.SelectedItem.Key) & " " &
.SelectedItem
#If VIEW_MODE = "INTERNET"
Then
Me!objIE.Navigate "http://www.friendlysw.com/knowhow/"
& Trim(.SelectedItem.Key)
#Else
Me!objIE.Navigate "http://dellxps/knowhow/"
& Trim(.SelectedItem.Key)
#End If
End With
End Sub
|
 |
| 図8-ListViewからアイテムをダブルクリックしてWeb上のHTMLページを表示させた例 |
- フォームを frmTreeViewTip2
の名称で保存します。
|