Access学習メモ 0-12. 立派でなくてもいい

Access学習メモ 0-12. 立派でなくてもいい

記事
学び
職場で新たな担当業務の習得に追われている。
数年前に専用ポータルサイトが開設され、電子受付や証票発行、請求書送付を行ってきた分野。
おバカな私は、その画面になかなか慣れることができない。
前任者によると、当該電子システム導入以降、もともと20時間程度だった残業時間が倍増したとのこと。
ベテラン担当者でもそれだけの労力を要する手強い環境なのだろうか。

システムの受付窓口は24時間365日、開放中。
画面上のJob一覧には受付未済、受付中、現場対応待ち、現場対応中、現場完了待ち、現場完了済み、証票発行待ち、証票発行済み、請求書発行待ち、請求書発行済み・・・と、実に様々な段階が交錯する。
担当別、事業所別、進捗段階など分類し絞り込みができるだけでも状況整理の救いになるが、そうした機能は備わっていない。

先日の新システム運用案の説明会において、開発エンジニアによる釈明の中で「特殊な個別案件への対応はむずかしい」ことが判明している。
全国の拠点で地域ごとの「特殊な個別案件」が発生する理由はほかでもない。
顧客都合への配慮を優先したいがためだ。
真の「効率化」を目指すなら、少数派の事情はある程度、切り捨てながら進むしかない。そうしてこなかった企業体質に、ある程度のやさしさが垣間見えるように思うし今後もそうであってほしいと、従業員として願う。

そして、「特殊な個別案件への対応」がむずかしいとされる大規模システム運用にあたっては、やはり今後もAccessによる補佐が必要かも知れない。
とりわけ今、必要に迫られているのは管理システムを管理するための管理簿作りである。
システムの登録内容を抽出したExcelをAccessにインポートしテーブル化してみたのも、その作業の一環。

Excelデータのまま運用できれば越したことはないが、どうがんばっても読み取りづらいのだ。
Excel受付一覧.png

Access導入にあたり、各テーブルをどうリレーションさせるか検討する中で、ふと頭をよぎる言葉。
「この作業に果たして意味があるのだろうか?」
もともとExcelで整頓された情報をAccessのテーブル起こしのためにわざわざ分解し、それをまたわざわざ結び直す行為。
ビオ姉さんのバレンタインチョコ。

Accessを少しだけ使えるようになったから、便利に活用しなければと、
TheマスタTheトランザクションTheリレーショナルデータベース…と
Accessの枠組みにとらわれ過ぎていないか。
業務のためのAccessでなく、Accessのための業務となっては本末転倒だ。

職場では毎年、秋から年末に向け繁忙期を迎える。
「今後、人員補充はしない」という役員たちからのお達し。
現場も事務も、とにもかくにも時間が全然足りない。
「新人同士で余力のない中、互いを支え合うしかなく、いつ共倒れしてもおかしくないこの状況、もはや老老介護でしょ」20~30代同僚たち♂のボヤキ。

なにもこんなときまで、教科書通りの方法に倣わなくたっていい。
非常事態なのだから、無理なく身の丈に合った使い道を選び取っていいはず。

「マスタ情報(名簿の役割を持つテーブル)は正規化して一元管理」がデータベース学習の王道だとは思う。
ただ、リレーショナルデータベースの特性として、ひとたびデータが更新されれば、従前のレコード情報も瞬時に上書きされる側面がある。
便利な反面、過去の実績を追跡する際、「当時、どうだったか」を分かりにくくしてしまう。
自分専用の覚え書きとしてデータ履歴を参照することが主目的であれば、マスタテーブルの要素に関しても、いわばトランザクションテーブルの構成要員として、同じテーブル上に置くことはさほど間違いではないだろう。
なにより設計が圧倒的に簡単で済む。

インポート資料(Excel)
管理簿(インポート資料).png
イベントモジュール(Access)
VBA.png

Option Compare Database

Private Sub テーブル作成_Click()
    '「strFile」というデータ型:文字列(String)の変数を作る
    Dim strFile As String
    'Excelファイルのパスを取得(&は文字列を連結する役割を持つ。この場合はExcelファイル名)
    strFile = CurrentProject.Path & "\管理簿.xlsx"
    'ExcelとAccessでデータをやり取りするための命令句
        'acImportはインポート(取込)、acExportはエクスポート(出力)
        'acSpreadsheetTypeExcel12Xml, _・・・Excelの形式を知らせる
        'strFile・・・コード冒頭で宣言したデータ型:文字列(String)の箱へExcelパスを格納する
        ' True, ・・・Excel1行目を「フィールド名」とする場合はTrue, フィールド名を持たせず1行目からデータとして引用する場合はFalse(無名のフィールド名)
        '"○○○○○$"・・・シート名

     DoCmd.TransferSpreadsheet _
        acImport, _
        acSpreadsheetTypeExcel12Xml, _
        "T_Job管理簿", _
        strFile, _
        True, _
        "管理簿$"

    MsgBox "取込完了"

End Sub

インポート直後のテーブルはこんな感じだった。
作られたばかりのテーブル.png

各フィールドのデータ型は、調整が必要なようだ。
データ型を編集.png

テーブルを一本化する場合、Excelに近い作りとなる。
わざわざAccessに変換せずExcelデータを利用し続けるのも手段としてはアリだけれど、Accessの便利な点は、テーブルを土台に入力フォームを構築できるところにある。
Accessには、ボタンひとつでフォームの骨組みを形成できる標準機能が備わっている。
JOB管理簿をつくる.png

データシート形式はこんな感じ。Excelに近い感覚で利用したいケース向き。
完成イメージ.png

今回は「分割フォーム」を採用。Excelの段階で横並びとなっていたデータが画面に収まり、記入も閲覧もかなりラクに行える。
下半分の画面で、過去と現在を一覧化できる。
分割ふぉーむ.png

毎晩帰りが遅い私に対し、不平ひとつ言わない夫。
もうすぐ誕生日。その日ぐらいは早く帰宅して好物を作ってあげられたらいいなと思う母心。

お仕事がんばります٩(σ▿σ)و

サービス数40万件のスキルマーケット、あなたにぴったりのサービスを探す