| Access実践入門 TOPへ |
| ■ マイクロソフトアクセス、日記のデータ | |
| 1ヶ月分のデータを作る 日記を書く書かないにかかわらず、1ヶ月単位でデータを作ってしまいます。それで、書きたい日付のデータを選んで日記を編集してもらいます、この方が処理が簡単です。 日記のデータは、「ta日記」です。 ![]() フィールド「本文」はメモ型にしています。テキスト型では255文字までしか処理できないので、メモ型です。 最初の画面の下に、「月データ作成」ボタンがあります。 このボタンクリックで、「fo月data作成」が開きます。 ![]() [指定年月]に定型入力で、○○年○○月と入力されます。 隠れた非連結のコントロール[年月]に年月を6桁の文字でコピーしておきます Me![年月] = Format([Forms]![fo月data作成指定]![指定年月], "yyyymm") この[年月]で日記の月単位の管理をします。 「作成」ボタンで、次のプロシージャが実行されます ---------------------------------------------------------- Dim dbs As Database Dim rst_1 As Recordset Dim i As Integer Dim d As String Set dbs = CurrentDb Set rst_1 = dbs.OpenRecordset("ta日記", dbOpenDynaset) For i = 1 To 31 rst_1.AddNew d = Format([Forms]![fo月data作成指定]![指定年月], "yyyy""/""mm""/""") & Right("0" & Right(Str(i), Len(Str(i)) - 1), 2) If IsDate(d) = 0 Then Exit For End If rst_1!日記日付 = DateValue(d) rst_1!年月 = Format(d, "yyyymm") rst_1.Update Next i rst_1.Close MsgBox ("データを作成しました") DoCmd.Close ---------------------------------------------------------- For Next のループで1〜31までをループします(最大31日まであるから) dの文字列変数に、指定2006年2月だった場合、2006/02/01から2006/02/31の文字が代入されていきます。2006/02/29になった時に、IsDate(日付に変換できるかどうか調べる関数)でゼロを返します。その時点でループを抜けます。 Right("0" & Right(Str(i), Len(Str(i)) - 1) この部分は、たとえば、1の時には01の文字列をプラスするのですが、数字を文字列に変換すると左に半角スペースが入るので、それを削除する処理も同時にします。 これで、1ヶ月分のデータができあがります。 |
|
| 月データの移動 最初の画面の左上に、月移動のメニュー部分があります ![]() 「前月」のボタンがクリックされたら、次のプロシージャが実行されます ---------------------------------------------------------- Me![年月表示] = Format(DateAdd("m", -1, DateValue(Me![年月表示])), "yyyy""年""mm""月") Me![年月] = Format(Me![年月表示], "yyyymm") If DCount("*", "ta日記", "[年月] ='" & Me![年月] & "'") = 0 Then MsgBox "この年月のデータはありません..." Me![年月表示] = Format(DateAdd("m", 1, DateValue(Me![年月表示])), "yyyy""年""mm""月") Me![年月] = Format(Me![年月表示], "yyyymm") DoCmd.GoToControl "検索" Exit Sub Else Forms![fo日記一覧].RecordSource = "qu日記一覧月移動" End If ---------------------------------------------------------- DateAddは、指定した期間後の日付を返す関数です。 ここでは、”m”と−1に組み合わせで、1ヶ月前の日付を返します [年月表示]に”2006年01月”が表示されます 隠しコントロールの[年月]に”200601”が代入されます。 次に、データ「ta日記」にフィールド「年月」に”200601”のレコードがいくつあるか調べます。 DCount("*", "ta日記", "[年月] ='" & Me![年月] & "'") ゼロの場合は、まだその月のデータが無いので移動出来ません。 [年月表示]と[年月]を元に戻して、中止させます。 レコードがある場合には、一覧表のレコードソースを変えます。 「qu日記一覧月移動」は次のようになっています。 ![]() 隠しコントロールの[年月]を抽出条件にしています。 ”200601”だけの一覧表になります。 「翌月」のボタンは、−1が1に、1が−1になっているだけです。 「年月指定」のボタンは、指定画面が表示されて、同じような処理をしています、確認してみてください。 |
|