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 ホームページ