PR

Accessによる採番システム その4 フォームの作成①

採番

前回、採番システムで要求する機能について検討をしてきましたので、今回からフォームの作成方法について見ていきましょう。

なお、フォームの基本的な作成方法については過去の記事が参考になると思いますので、併せてご確認ください。

スポンサーリンク

Kindle Unlimitedにサインアップして無料体験に登録する
Kindle Unlimitedに登録すると、人気のシリーズ、ベストセラー、名作などに好きなだけアクセスして、シームレスなデジタル読書体験を実現できます。
スポンサーリンク

文書分類設定画面までの設定方法

まずは、フォームを作成していきます。なお、今回作成するフォームの名前は「F_Main」としますので、作成後保存を忘れないようにお願いします。

図1に示すようにフォームデザインアイコンをクリックして新規に作成をします。続いて、図1の赤丸に示す箇所を右クリックし、フォームのヘッダー/フッターを追加します。

図1 フォームの作成からヘッダー/フッターの追加まで

続いて、フォームのタイトル表示にラベルを、さらに文書管理コードと年度を表示するためのテキストボックスを追加します。この際に、フォームのセクション幅も広げます。

図2 テキストボックスの追加

テキストボックスとして追加する際、文書管理コードは番号体系に即してリストから選択できるようにするため、後程コンボボックスに変更します。

また、年度テキストボックスに対しては、自動で当該年度を取得できるような処理を施しますが、本テキストボックスには数値以外の値が入ることはありませんので、禁制処理の目的も兼ねて「書式」プロパティには「数値」を設定します。

ここで、テキストボックスからコンボボックスへの変更方法は図3に示すとおりで、対象テキストボックスを右クリックし、「コントロールの種類の変更」→「コンボボックス」と選択することで切り替わります。

図3 テキストボックスからコンボボックスへの切り替え方法

変更したコンボボックスで、文書管理コードをリスト表示できるように設定をしていきます。基本的な設定内容は過去の記事(上述)で紹介していますので、そちらを参考にしていただければと思いますが、今回の設定内容は図4に示すとおりです。

図4 コンボボックスの設定

まずは、t_文書管理コードのプロパティシートを開き、列数は「2」、列幅は「2cm;3.8cm」、値集合ソースは「T_項目マスタ」、値集合タイプは「テーブル/クエリ」、入力チェックは「はい」にします。

[ad]

入力画面の設定

次に、文書管理に係る値を入力するためのテキストボックスを配置します。今回作成するシステムでは、フォームを介してテーブルに直接値を入力するのではなく、テキストボックスに各値を入力し、これらをチェックした後にテーブルに値をインポートする方法を採ります。

このため、値を入力するためのテキストボックスを図5に示すように配置します。

図5 入力テキストボックスの配置

図のように各ラベル、テキストボックスを追加し、テキストボックスは左から「t_連番」、「t_文書題目」、「t_作成者」、「t_作成日」と名付けました。
また、立体表示プロパティを「埋め込み」としました。

テーブルとのリンク

続いて、文書管理コードと年度の情報から必要情報をフォームに表示するための準備をしていきます。まず、フォームを選択するために図6に示す赤丸箇所をクリックします。そしてフォームのプロパティシート上、レコードソースにSQL文を設定するためのクエリビルダーを開きます。

図6 SQLコードビルダーを開くまで

クエリビルダーでは必要テーブルを選定する必要がありますので、ここでは、「T_管理」テーブルを追加します。

図7 テーブルの追加

クエリビルダーが開くと、ここからは一般的な選択クエリの設定方法と同様になります。

図8 クエリビルダーでの設定

【フィールド】項目には、「文書管理コード」、「年度」、「連番」、「文書題目」、「作成者」及び「作成日」フィールドを追加します。そして、レコードはフォーム上の文書管理コードと年度から抽出できるように、「文書管理コード」フィールドの抽出条件に「Forms!F_Main.t_文書管理コード」を、「年度」フィールドの抽出条件に「Forms!F_Main.t_年度」を追加します。

クエリビルダーでの設定が終了した後、閉じるアイコンをクリックし図9に示すように処理を完了させます。

図9 クエリビルダーでの設定完了手続き

帳票画面の設定

フォームの詳細セクションでは、単票表式と帳票表式を選択することができます。単票表式の場合は、画面に1レコードの値を羅列する方法で、帳票式は多数のレコードを表形式で表示するものです。

今回の場合、文書管理に係るデータを帳票で確認できるようにした方が視認性が良くなりますので、このための設定として既定のビュープロパティに「帳票フォーム」を設定します。

図10 帳票フォームの設定

さて、ここまででレコードは帳票形式で表示されるようになりましたので、先にクエリビルダーで設定したフィールドを踏まえてテキストボックスを配置していきます。

図11 詳細セクションへのテキストボックスの配置

図11に示すように、詳細セクションに各テキストボックスを追加します。テキストボックスは左から「連番」、「文書題目」、「作成者」、「作成日」と名付け、コントロールソースプロパティもテキストボックスの名前と一緒にします。
※コントロールソースは先に設定したSQL文中フィールドの参照先に一致しています。

これで、フォームを起動すると、コントロールソースに合わせた値を表示するようになります。ただし、文書管理コードと年度の値に基づいたレコード抽出が必要になりますので、これらの設定を行います。

年度の取得方法

フォーム上に設定した「t_年度」テキストボックスに対し、フォームを起動した際に当該年度を取得するための処理を実装します。

図12 フォーム起動時の処理設定

フォームを読み込んだ際に処理をするように、フォームの読み込み時プロパティにイベントプロシージャを設定します。

そして、VBA画面では次のソースコードを追記します。

Private Sub Form_Load()
'ここからコードを追記
If Month(Date) = 1 Or Month(Date) = 2 Or Month(Date) = 3 Then
  Me.t_年度 = Year(Date) - 1
Else
  Me.t_年度 = Year(Date)
End If

End Sub

上記ソースコードは、Date関数により当日の年月日を取得し、Month関数から月の値を取得します。ここで、1月、2月、3月の場合は年度処理をする際に当該年から1年さかのぼる必要があるため、その処理を実装しています。

一方で、4月から12月は当日の年を取得することで事足ります。

以上から、本ソースコードでは当日の月情報から年度の値を「t_年度」に付与するようにしています。

また、「t_年度」テキストボックスを任意に数値を入力することができるようにしていますが、ブランクあるいはNullも許容されてしまいます。この場合、採番する際に齟齬が生じますので、ユーザーには数値を入力してもらうようにアラートを出すようにします。

Private Sub t_年度_AfterUpdate()

If Me.t_年度 = "" Or IsNull(Me.t_年度) Then
  MsgBox "年度を西暦で入力してください。"
  Exit Sub
End If

End Sub
スポンサーリンク

文書番号取得後の処理

フォーム上の文書番号を取得した後、対象となるレコードを表示するために、更新処理が必要となります。

したがって、「t_文書管理コード」の更新後処理プロパティにイベントプロシージャを設定し、ソースコードを追記します。ここでも先と同様にブランクあるいはNullに対するメッセージを表示するようにします。

Private Sub t_文書管理コード_AfterUpdate()

If Me.t_文書管理コード = "" Or IsNull(Me.t_文書管理コード) Then
  MsgBox "文書管理コードを選択してください。" 
  Exit Sub
End If

Me.Requery

End Sub

その他の処理として、自身のフォームをリクエリー(Requery)するというものを記載しています。

これにより、文書管理コードを設定した都度、リクエリーにより画面が更新されます。この処理はt_年度にも同様に実装します。

ここで、「T_管理」テーブルに次のサンプルデータを登録して、これまでの処理がスムーズにいくかを確認してみましょう。

サンプルデータ

サンプルデータとして「T_管理」テーブルにレコードを登録します。

ID 文書管理コード 年度 連番 文書題目 作成者 作成年月日
1 DES 2020 1 TEST1 山田太郎 2020/7/30
2 PLN 2020 1 TEST1 山田太郎 2020/7/30
3 DES 2020 2 TEST2 坂本花子 2020/8/1

サンプルデータを登録した後、「F_Main」フォームを開き、年度に「2020」が入力されていることを確認します。続いて、文書管理コードに「DES」を選択すると画面が更新されて、図13に示す抽出結果が示されると思います。

図13 レコードの出力結果

ここまでで、文書管理コードと年度により文書番号が抽出されて出力されるように設定することができました。

まとめ

今回は採番システムの内、フォーム上のデータ出力を主に設定してきました。次回は、データ登録の方法について紹介していきます。

フォームの作成については過去の記事を参考として示しましたが、説明が不十分なこともあるかと思いますので、専門書も用意して確認をしてしていただけると幸いです。

スポンサーリンク

Kindle Unlimitedにサインアップして無料体験に登録する
Kindle Unlimitedに登録すると、人気のシリーズ、ベストセラー、名作などに好きなだけアクセスして、シームレスなデジタル読書体験を実現できます。

コメント

タイトルとURLをコピーしました