2012年9月3日月曜日

Excel と Access での日付入力

仕事の都合で、業務の集計表がたくさん存在します。これまでの集計表の99.9%はExcelを使っての処理でしたが、ここへ来てデータの多さにAccessを意識するようになりました。

Excelをデータベース扱いする機会が多いから、というのも理由の一つですが、いざAccessで処理するようになると、ExcelとAccessの長所短所が比較できて面白いです。

…そんなことはどうでもいいんですが、初歩的なところで壁にぶつかりました。3つの数字を並べたら自動的に日付になおす…というものです。

Excelでは、Date関数を使って簡単に処理できます。

Excel DATE関数
Excel DATE関数でできること

これをAccessでもやりたいな~と思い、次のように作ってみました。

Access で日付入力 01
Access で日付入力 その①

まず、フォームに必要な要素を配置します。すべてテキストボックスで、年月日それぞれに数値を入力したら、右下のテキストボックスに「2012/9/3」という具合に表示させてみようと思います。

それぞれのテキストボックスには、左上から順に「t_年」「t_月」「t_日」「t_日付」と名前を付けています。連結・非連結については、ここでは省略します。

t_日付のテキストボックスを選択し、プロパティシートのイベントタブから更新後処理を選択、そのままコードビルダーを起動させる。

ビルダーを起動したら、次のプログラムを書き込む。


 Private Sub t_年_AfterUpdate()
   cbfSetDate
 End Sub

 Private Sub t_月_AfterUpdate()
   cbfSetDate
 End Sub

 Private Sub t_日_AfterUpdate()
   cbfSetDate
 End Sub


 Private Sub cbfSetDate()

   Dim strNewDate As String
   '数値の日付データ化
   strNewDate = Me!t_年 & "/" & Me!t_月 & "/" & Me!t_日
   'エラー入力の対処
   If IsDate(strNewDate) Then
     Me!t_日付 = CDate(strNewDate)
       ElseIf IsNull(Me!t_年) Or IsNull(Me!t_月) Or IsNull(Me!t_日) Then
       Me!t_日付 = Null
     Else
       MsgBox "日付の内容に誤りがあります!", vbOKOnly + vbExclamation
       Me!t_日付 = Null
   End If

 End Sub


数値を入力すると、無事に日付変換してくれました。

Access で日付入力 02
Access で日付入力 その②

また、誤って入力したときのエラーメッセージも、ちゃんと出てきます。

Access で日付入力 03
Access で日付入力 その③

入力形式や日付の表示形式などをイジれば、かなり実用的なのではないでしょうか。…とはいえ、あんまりこんなことに時間をかけてもいられないんですよね。…これで仕事の効率が格段にあがれば、話は別なんですが…。

そうそう、大事なことを言い忘れてました。このプログラム、T'sWare Access Tips で取り上げています。こちらで教えてもらいました。ここには多くのチップが掲載されていて、いつも重宝しています。



0 件のコメント:

コメントを投稿