安全点検 – Linux Home Server http://www.now.mfnet.ne.jp/~ozachin/wordpress Long Road Linux Sat, 08 Feb 2020 03:53:17 +0000 ja hourly 1 https://wordpress.org/?v=5.9.3 学校安全点検システム6(最終回) http://www.now.mfnet.ne.jp/~ozachin/wordpress/?p=470 http://www.now.mfnet.ne.jp/~ozachin/wordpress/?p=470#respond Sat, 08 Feb 2020 03:53:06 +0000 http://www.now.mfnet.ne.jp/~ozachin/wordpress/?p=470 read more]]> 管理機能について、最終的に報告書を印刷(作成)しますが、この時点では対応措置について入力が済んでいると想定して、印刷(プレビュー)の際に、各担当者が措置内容を確認できるように画面上にそのためのボタンを表示させるようにします。
方法としては、テーブルT_eの内容を3に書き換えます。(更新クエリ) (補足:fr1のオプション値1:入力受付、2:入力締切、3つ目のオプションボタンは不可視にしてあります。)

最後に、運用面ですが起動時にフォームF_1を表示するようにすること。リボンを非表示にすること。ナビゲーションを非表示にすること。 accdeファイルに変換しておく。

など、担当者が不要な操作をできないようにすればトラブルを回避できます。

]]>
http://www.now.mfnet.ne.jp/~ozachin/wordpress/?feed=rss2&p=470 0
学校安全点検システム5 http://www.now.mfnet.ne.jp/~ozachin/wordpress/?p=443 http://www.now.mfnet.ne.jp/~ozachin/wordpress/?p=443#respond Sat, 08 Feb 2020 03:46:44 +0000 http://www.now.mfnet.ne.jp/~ozachin/wordpress/?p=443 read more]]> 管理画面からフォームを開くと、処理すべき内容が1件ずつ表示されます。レコード移動のボタンを配置します。
前回説明した通り、レコード移動のタイミングで保存されますがエンドユーザーにはそれは理解できません。
したがって、保存ボタンを敢えて加えてあります。

レコードソースとなるクエリQ_Fは以下の通りです。

SELECT T_kubun.校舎区分, T_kubun.担当区域, T_kubun.担当者, T_tenken.T_fubi, T_tenken.T_date, T_tenken.T_soti
FROM T_kubun INNER JOIN T_tenken ON T_kubun.id = T_tenken.S_id
WHERE (((T_tenken.T_fubi)<>"不備なし") AND ((T_tenken.T_date)=[forms]![F_1]![td]));

処理件数は
rcc = DCount(“*”, “Q_F”) で取得。TextBoxに表示
現在の処理件数は
Me.CurrentRecordで取得。TextBoxに表示

以下、各ボタンの処理内容を列記します。
エラー処理等は割愛します。

Private Sub 先頭_Click()

    Me.次へ.Enabled = True
    Me.前へ.Enabled = False
    DoCmd.GoToRecord , , acFirst

End Sub

Private Sub 前へ_Click()

If Me.CurrentRecord > 1 Then
    Me.前へ.Enabled = True
    Me.次へ.Enabled = True
    DoCmd.RunCommand acCmdSaveRecord
End If

    DoCmd.GoToRecord , , acPrevious

If Me.CurrentRecord = 1 Then
    Me.前へ.Enabled = False
    Me.次へ.Enabled = True
    DoCmd.RunCommand acCmdSaveRecord
End If
    
End Sub

Private Sub 保存_Click()

    DoCmd.RunCommand acCmdSaveRecord

End Sub

Private Sub 次へ_Click()
   Me.前へ.Enabled = True

If Me.CurrentRecord < rcc Then
   Me.次へ.Enabled = True
End If

   DoCmd.GoToRecord , , acNext

If Me.CurrentRecord = Me.rc Then
    Me.保存.SetFocus
    Me.次へ.Enabled = False
    DoCmd.RunCommand acCmdSaveRecord
End If

End Sub

Private Sub 最終_Click()

    Me.前へ.Enabled = True
    Me.次へ.Enabled = False
    
    DoCmd.GoToRecord , , acLast

End Sub
]]>
http://www.now.mfnet.ne.jp/~ozachin/wordpress/?feed=rss2&p=443 0
学校安全点検システム4 http://www.now.mfnet.ne.jp/~ozachin/wordpress/?p=441 http://www.now.mfnet.ne.jp/~ozachin/wordpress/?p=441#respond Sat, 08 Feb 2020 01:26:59 +0000 http://www.now.mfnet.ne.jp/~ozachin/wordpress/?p=441 read more]]> 管理機能の画面例を見ます。対応措置入力の画面です。
不備報告のあった区域について、対応を入力します。
報告のあった件数、および現在の処理件数が表示されています。

ところで、 Accessの基本機能では、レコードセレクタがあり件数が表示されますが、一般のエンドユーザーには理解できません。鉛筆マークの意味も分かるはずがありません。
ましてやレコードの保存タイミングなど分かるはずがありません。
多くの書籍がAccessの基本機能を理解していることを前提にいろいろ説明していますが、それは無理です。
初めて触れるユーザーには分からないでしょう。
従って、上のような画面設計とし、レコードが移動した時点で保存されるのですが、それは初心者には分かりません。
おそらくレコードが移動した時点で、「入力した内容が消えてしまった」と思うに違いありません。
そうしたことに配慮しないといけません。
初心者にも(誰でも)分かるように、保存ボタンを加えました。
これで、入力した内容がしっかり保存できたと安心してもらうためです。
前にもふれた通り、職場の職務上の管理者といえどもPCの専門家ではありません。
システム運用にはそれなりの配慮が必要なのです。
コードは次回としますが、特別な難しい内容はありません。

]]>
http://www.now.mfnet.ne.jp/~ozachin/wordpress/?feed=rss2&p=441 0
学校安全点検システム3 http://www.now.mfnet.ne.jp/~ozachin/wordpress/?p=335 http://www.now.mfnet.ne.jp/~ozachin/wordpress/?p=335#respond Thu, 16 Jan 2020 01:01:45 +0000 http://www.now.mfnet.ne.jp/~ozachin/wordpress/?p=335 read more]]> 最初に、肝心な区域別担当者の入力処理について説明します。
担当者の担当区域(T_kubun)とその区域について今期の登録状況(T_tenken)を比較し 新規登録か訂正かを判断する。

2つのクエリを用意する。

Q_1で各担当者の今期の登録内容が確認できる。

SELECT UserName.Login_name, UserName.K_name, T_kubun.校舎区分, T_kubun.担当区域, T_kubun.担当者, T_kubun.id, T_tenken.T_fubi, T_tenken.T_date
FROM (T_kubun INNER JOIN UserName ON T_kubun.T_username = UserName.Login_name) INNER JOIN T_tenken ON T_kubun.id = T_tenken.S_id
WHERE (((UserName.Login_name)=[forms]![F_1]![com1]) AND ((T_tenken.T_date)=[forms]![F_1]![td]));

Q_2で各担当者の担当区域数が確認できる。

SELECT UserName.Login_name, UserName.K_name, T_kubun.校舎区分, T_kubun.担当区域, T_kubun.担当者, T_kubun.id
FROM T_kubun INNER JOIN UserName ON T_kubun.T_username = UserName.Login_name
WHERE (((UserName.Login_name)=[forms]![F_1]![com1]));

Q_1は、
user_name(コンボボックス)と
実施時期(テキストボックス)を
パラメータとしたクエリです。
Q_2は
user_name(コンボボックス) を
パラメータとしたクエリです。

担当者がコンボボックスから自分名前を選択した時の大まかな流れは
if 新規登録なら
  全区域「不備なし」で登録する
else 訂正か終了するか
  if 訂正なら データを呼び出す
  else 終了する
  End If
End If

Private Sub com1_AfterUpdate()
On Error GoTo er
Dim rc, rc1 As Integer 'record count
Dim ret As Integer

rc = 0
rc1 = 0
rc = DCount("*", "Q_1")     '今期の登録の有無
rc1 = DCount("*", "Q_2")    '担当区域数

If rc = 0 Then

        '-------新規登録--------------
        Me.Requery
        
        Me.不備報告.Visible = True
        Me.担当区域.Visible = True
        Me.校舎区分.Visible = True
        Me.T_fb.Visible = True
        Me.lb1.Visible = True
        Me.line2.Visible = Tru
        Me.lb1.Visible = True
        Me.cmd_Close.Visible = True
        
        Me.T_rc = rc1 & "区域担当"
        
        Dim db As DAO.Database
        Dim rs1 As DAO.Recordset
        Dim rs2 As DAO.Recordset
          
        
        Set db = CurrentDb()
        Set rs1 = db.OpenRecordset("T_kubun")
        Set rs2 = db.OpenRecordset("T_tenken")
           
           rs1.MoveFirst
                Do Until rs1.EOF
                
                If rs1!T_username = Me.com1.Column(1) Then
                rs2.AddNew
                    rs2!T_date = Me.td
                    rs2!T_fubi = "不備なし"
                    rs2!S_id = rs1!id
                    rs2.Update
                Else
                
                End If
                
                rs1.MoveNext
                Loop
                
                Me.Requery
        
        
        rs1.Close: Set rs1 = Nothing
        rs2.Close: Set rs2 = Nothing
        
        db.Close: Set db = Nothing
        
        '---------登録処理ここまで-------
        
        Exit Sub

Else
        '-----訂正するか、終了するか
                ret = MsgBox("OKで続行(訂正する),キャンセルで終了", vbOKCancel, "登録済みです")
        '------ OKなら訂正する
            If ret = 1 Then
                Me.Requery
                Me.不備報告.Visible = True
                Me.担当区域.Visible = True
                Me.校舎区分.Visible = True
                Me.T_fb.Visible = True
                Me.lb1.Visible = True
                Me.line2.Visible = True
                Me.lb1.Visible = True
                Me.cmd_Close.Visible = True
                Me.T_rc = rc1 & "区域担当"
                
                Exit Sub
            
            '------- cancelなら終了
            
            ElseIf ret = 2 Then
            
                DoCmd.Close acForm, "F_1"
                Exit Sub
            
            End If

End If

End Sub

]]>
http://www.now.mfnet.ne.jp/~ozachin/wordpress/?feed=rss2&p=335 0
学校安全点検システム2 http://www.now.mfnet.ne.jp/~ozachin/wordpress/?p=328 http://www.now.mfnet.ne.jp/~ozachin/wordpress/?p=328#respond Mon, 13 Jan 2020 04:04:30 +0000 http://www.now.mfnet.ne.jp/~ozachin/wordpress/?p=328 read more]]> テーブル構成を示します。主要なのは、上の3つです。
下の2つは管理機能で参照するためのテーブルです。
UserName 教員テーブル
T_kubun 点検区域の割当
T_tenken 報告内容を登録
T_e 管理者が専用画面から設定する。
T_j 管理者が専用画面から設定する。
概要は前回示した通りです。

各画面を確認してみます。出欠管理システムと同様に、各学校のネットワーク環境は分かりかねますので、PCのログインネームから直ちに自分の担当区域が表示される場合の説明は割愛します。
まず、起動直後の画面です。リストから自分の名前を選択します。

小生が関係した学校では、システム作成時、点検区域担当者は60名以上になります。
リストの最初に出てくる人はよいですが、スクロールするのも大変です。
ログイン名判定ができれば即時、担当区域を表示できますが、リストが多いと大変ですから
英語表記(通常ログイン名に使用している)を入力する方法もあります。
各学校の実情に合わせてもらえばよいでしょう。

担当区域が表示されます。
サンプルでは4つの区域を担当しています。
1画面に2つまで表示されます。
スクロールして確認します。 規定値として「不備なし」が入力されています。
全区域「不備なし」でよければ、終了ボタンをクリックして完了です。

情報処理室の横のボタンをクリックすると、次の画面になります。(ポップアップ)
報告事項を入力し、閉じるボタンをクリックして元の画面に戻ります。

管理画面を見てみます。別のメニューを起動する必要はありません。 特別なキー操作だけ伝えておきます。
上記の起動後の画面が表示されている状態で 
「Ctrlキー + F2キー」で
次の管理画面が開くようにしてあります。

上の2つのボタンについてだけ説明します。
実施年月等はあらかじめ決めてリストに登録する方法もありますが、多くの人が関係すのでミスは避けたいと思います。
この内容と施設の管理idをキーに入力済み・未入力のチェックを行うので設定間違いは許されません。
ユーザーが触れない方がよいでしょう。
管理者の設定が入力フォームに反映されます。実施期日等が好ましいですが、その都度管理者の好きな言葉でも何でも構いません。
即時反映されたように見えますが、それはその場だけです。
フォームを閉じれば元に戻ってしまいます。
この設定により実際にはT_jテーブルの値が変更されます。
この値を参照して最終的に入力画面に表示されます。

同様に入力許可設定は、入力画面のコンボボックス(教員選択)の使用可・不可を設定します。
リアルタイムに反映したように見えますが、前記と同様です。
裏でテーブルT_eの値を書き替えています。
締め切りの方法は予め年月日を設定してシステム日時と比較する方法もあるでしょうが、管理者が状況を見て設定できるように、オプション値を比較する方法を採用しています。

]]>
http://www.now.mfnet.ne.jp/~ozachin/wordpress/?feed=rss2&p=328 0
学校安全点検システム1 http://www.now.mfnet.ne.jp/~ozachin/wordpress/?p=326 http://www.now.mfnet.ne.jp/~ozachin/wordpress/?p=326#respond Mon, 13 Jan 2020 01:31:21 +0000 http://www.now.mfnet.ne.jp/~ozachin/wordpress/?p=326 read more]]> 学校日誌用出欠管理システムの応用編として、
「安全点検システム」
を作成しました。

各学期1回以上実施しなければならないmustな業務です。
学校によってはこれ以上の頻度で実施している場合もあるでしょう。各区域別に担当者からの報告伝票を管理責任者がまとめ、必要な措置等を報告書にとして作成するわけですが、作業の流れは出欠管理と全く同じです。
「担当からの報告」→「転記」→「集計」

教員一人に1台のPCの環境を利用して省力化を図りましょう。 ここでも、煩雑な作業が増えると嫌がられます。
極力簡単な方法で楽になったと思ってもらうことが大切です。
安全点検は日頃から心がけなくてはなりませんので、定期的な点検の際にことさら多くの「不備」が発見されるわけではありません。従って、これまでの方法でも日付、担当者名、担当区域を記入し、「不備なし」に〇印をつけて終わりのパターンがほとんどです。
取りまとめする担当者が楽になるのは理解できますが、区域別の担当者としてこれより楽になるのでしょうか。 驚くほど簡単になりますので安心してください。

結論から言うと、
1.日付(実施月や実施日)・・・記入(入力)の必要ありません。
2.担当者名・・・記入(入力)の必要ありません。
3.担当区域名・・・複数あると大変ですが、記入(入力)の必要ありません。
4-1.担当区域すべて「不備なし」であれば、システムを起動して担当区域が表示されたら確認して終了ボタンを押して完了です。

これだけで、「不備なし」と報告されます。
起動の為のダブルクリック1回、終了ボタンのクリック1回、これだけです。

4-2.「不備あり」の区域は内容を入力して、終了ボタンを押して終了します。
ほとんどは4-1のパターンなので、これで嫌がる人はいないでしょう。
ただし、出欠管理システムと同様PCのログイン名が参照できることが前提です。できない場合は、教員名をリストから選択する操作が1つ加わりますが問題視されることはないと思います。

管理者用の機能を簡単に見ておくと
1.未入力のチェック
2.「不備」のあった区域の、対応措置等を入力。
 (区域担当者は後から参照できます。)
3.最終報告書の作成 などです。

次回以降、テーブル設計、画面構成やVBAのコードを確認していきます。

]]>
http://www.now.mfnet.ne.jp/~ozachin/wordpress/?feed=rss2&p=326 0