フォームの操作 1


フォームのレコードソースを設定する

1つのフォームを条件によってレコードソースを変更します。例では、「frm_伝票」フォームを ヘッダーのボタンによって、「tbl_入金伝票」と「tbl_出金伝票」に切り替えます。

Private Sub Form_Load()
'フォームを読み込んだ時に 「tbl_入金伝票」を読み込む
    Me.RecordSource =  " tbl_入金伝票 " 'tbl_入金伝票
    
End Sub

Private Sub Cmd1_Click()
'Cmd1をクリック時に 「tbl_出金伝票」に切り替える
    Me.RecordSource =  " tbl_出金伝票 " 'tbl_出金伝票
    
End Sub

Private Sub Cmd2_Click()
'Cmd1をクリック時に 「tbl_出金伝票」に切り替える
    Me.RecordSource =  " tbl_入金伝票 " 'tbl_入金伝票
    
End Sub

レコードソースには「クエリー」や「SQL」も指定できます。

Private Sub Form_Load()
'フォームを読み込んだ時に 「tbl_社員」を読み込む
    Me.RecordSource =  " SELECT tbl_社員.* FROM tbl_社員; "
    
End Sub

Private Sub トルグ1_Click()
'トルグ1をクリック時に 「tbl_社員」から女性社員(性別 = 1)だけを抽出
	If トルグ1 = True Then
	    Me.RecordSource =  _
	    " SELECT tbl_社員.* FROM tbl_社員 WHERE (((tbl_社員.性別)=1)); "
	Else
'「tbl_社員」から男性社員(性別 = 0)だけを抽出
	    Me.RecordSource =  _
	    " SELECT tbl_社員.* FROM tbl_社員 WHERE (((tbl_社員.性別)=0)); "
    End If
    
End Sub

関数を使ってデータの入力チェックをする

「LenB」関数を使ってテキストボックスのデータをバイト数で制限します。

Sub Txt_chk()
   Dim txtData As String

   txtData = frm.txt1.Value
   
   If LenB(txtData) > 64 Then
      MsgBox " 入力データは64バイト以下です " 
   End If

End Sub

Null値を判定する

Null値とは長さが 0 の文字列、つまり空のデータです。「IsNull」関数を使ってテキストボックスの
データの未入力をチェックします。

Sub NullChk()
   Dim txtData As String

   txtData = frm.txt1.Value
   
   If IsNull(txtData) = True Then
      MsgBox " データが未入力です " 
   End If

End Sub

レコードの合計数を取り出す

レコードの合計数を取り出すには、フォームのレコードソースにSQLで特定のフィールドをカウントし、それを「DSum」関数で集計すればできます。
しかし、フィールドの値に空値があると正しく集計されません。この場合、フォームヘッダーにテキストボックスを作成し、コントロールソースに 「=Recordset.RecordCount」と指定します。これができるのはフォームが「帳票形式」の時だけです。


テキストボックスのデータから指定の文字まで取り出す

「Addr」テキストボックスのデータに「県」が含まれる場合、左から県までの文字列を取り出します。

「氏名」テキストボックスのデータが「姓」と「名」をスペースで区切ってある場合、姓だけ取り出します。

'フォーム frm_User の 「氏名」テキストボックスのデータから姓だけデータを取り出し
'Sei テキストボックスに格納する。データはスペースで区切ってあるものとする
'「InStr」関数でスペースが左から何文字目か調べる

テキストボックス:Sei

コントロールソース
   
   = Left([氏名], InStr([氏名]," " )   'スペースが半角の場合
   = Left([氏名], InStr([氏名]," " )   'スペースが全角の場合
	
'フォーム frm_User の 「氏名」テキストボックスのデータから名前だけデータを取り出し
'Mei テキストボックスに格納する。データはスペースで区切ってあるものとする
'「Mid」関数でスペースが何文字目から始まっているか調べる
'「LTrim」関数でスペースを削除する


テキストボックス:Mei

コントロールソース
   
   = LTrim([氏名], Mid([氏名]," " )   'スペースが半角の場合
   = LTrim([氏名], Mid([氏名]," " )   'スペースが全角の場合