Visual Basicユ―ザーのための Accessプログラミングソリューション

Access97 Tips集 part 5


秋月 巌 AKIZUKI,Iwao


Accessはデータベースを管理するツールです.データベースの管理のためには,当然,保持されているデータをユーザーに見せるための仕組みが必要になります.Accessにはデータを表示するために,多数のオブジェクトが標準で用意されています.これらのオブジェクトに自由にデータを表示するには,それなりのテクニックが必要です. 今回は,Accessのデータ表示機能の使用法や,プログラム内でエラーが発生した場合のハンドリング方法について説明します.


●入力コントロールに規則を設定する

 ValidationTextプロパティは,コントロールに入力規則を設定します.規則の記述にはクエリーの条件節と同等の式を用います.規則の検証はフォーカスの移動時に行なわれます.  次のサンプルでは,テキストボックスのValidationRuleプロパティに「">=0 and <=10 or Is Null"」という式を設定しています.この条件に違反する内容が入力されたときには, ValidationTextプロパティに設定したメッセージ文字列を,ダイアログボックスに表示します.

Private Sub Form_Load()
  Text1.ValidationRule = ">=0 and <=10 or Is Null"
  Text1.ValidationText = "空白か,0以上10以下の数値を入力してください."
End Sub


図1:設計時にフォームを選択


●リストボックスにテーブルの複数項目を表示する

 ListBoxコントロールはデータ連結が可能なコントロールです.通常のリストボックスのように単一のフィールドを表示するばかりでなく,表のように複数項目を表示することも可能です.複数の項目を表示するにはColumnCountプロパティ,ColumnWidthsプロパティを利用します.ColumnCountプロパティはリストに表示する項目の数, ColumnWidthsプロパティは各項目のサイズを指定します.  サンプルで使われているRowSourceプロパティは表示するデータを指定し,ColumnHeadsプロパティは列の見出しの表示/非表示を設定します.Selectedプロパティは,「List1.Selected(1) = True」というように記述することで,リストの1行目を選択状態にしています.

Private Sub Form_Load()
  List1.RowSource = "SELECT syohin_code AS 商品コード," & _
   "syohin_mei AS 商品名, int(kouri_kakaku * 1.05) AS 金額 FROM Syohin"
  List1.ColumnCount = 3
  List1.ColumnWidths = "1000;2000;1000"
  List1.ColumnHeads = True
  List1.Selected(1) = True
End Sub


図2


●テキストボックスの内容をスペルチェックする

 文字入力可能なコントロールでは,英文のスペルチェック機能を利用することができます.スペルチェック機能を利用するにはAllowAutoCorrectプロパティをTrueに設定します.

Private Sub Form_Load()
  Text1.AllowAutoCorrect = True
End Sub


図3A


図3B



●エラーの内容を取得する

 エラーが発生するとErrオブジェクトにエラーの内容が格納されます.内容を参照するにはDescriptionプロパティを参照します.また,エラーによる処理の中断を防ぐにはコードにエラーハンドラーを設定する必要があります.

Private Sub Command1_Click()
    DoCmd.OpenForm "Syohin", acDesign
    Forms!Syohin.MinMaxButtons = 0
    DoCmd.OpenForm "Syohin"
End Sub


図4:数字が入力され正常にプログラムが動作した状態.2つのテキストボックスの積を表示


図5:エラーハンドラーがないと計算値に文字列を入力するとエラーが発生して中断してしまう


図6:エラーハンドラーを追加し,エラーの内容をダイアログに表示


●エラーメッセージを変更する

 エラーのメッセージ内容を変更するためには,Errオブジェクトのプロパティを変更します.次のサンプルコードでは,変更した内容をダイアログボックスに表示しています.

Private Sub Button1_Click()
  On Error GoTo errmsg
  MsgBox Text1 * Text2
  Exit Sub

errmsg:
  Err.Description = "数字を入力してください"
  MsgBox Err.Description
End Sub


図7




●フォーム内のデータを編集不可にする

 編集可能なフォームと表示専用のフォームを,簡単に切り変えたいことがあります.そのような場合には,AllowEditsプロパティ,AllowAdditionsプロパティ,AllowDeletionsプロパティを指定することですべてのコントロールの編集を不可にすることができます.  このサンプルでは,ボタンをクリックしたときに編集を禁止するようにしています.コントロールのEnabledプロパティをFalseにした場合と違い,コントロールはフォーカスを取得します.

Private Sub Button_MouseDown(Button As Integer, Shift As Integer, _
                             X As Single, Y As Single)
  Form.AllowEdits = False
  Form.AllowAdditions = False
  Form.AllowDeletions = False
End Sub


図8


●データベースと連結していないリストボックスにテーブルの内容を表示する

 リストボックスにテーブルのデータを表示したいが,テーブルとは連結したくないことがあります.このサンプルでは単純にテーブルの内容を表示していますが,データを加工しながら表示する場合には非連結にするテクニックが必要です.  DAOを用いてデータベースにアクセスし,コードでリストボックスのRowSourceプロパティを生成しています.Visual Basicのリストボックスとは違いAddItemメソッドがないので,RowSourceプロパティを操作する必要があります.

Private Sub Form_Load()
  Dim db As Database
  Dim rs As Recordset
  Dim sParam As String
  Set db = CurrentDb
  Set rs = db.OpenRecordset("Syohin")
  lstSyohin.ColumnCount = 1
  Do While Not rs.EOF
    sParam = sParam & rs("syohin_mei") & ";"
    rs.MoveNext
  Loop
  lstSyohin.RowSourceType = "Value List"
  lstSyohin.RowSource = sParam
End Sub


図9


VB Magazine ライブラリ | Visual Basicコースホームページ
int21 ホームページ | PCDN ホームページ


PCDN LOGO