学校日誌 – Linux Home Server http://www.now.mfnet.ne.jp/~ozachin/wordpress Long Road Linux Sat, 18 Jan 2020 07:10:54 +0000 ja hourly 1 https://wordpress.org/?v=5.9.3 学校日誌用出欠管理システム6 http://www.now.mfnet.ne.jp/~ozachin/wordpress/?p=317 http://www.now.mfnet.ne.jp/~ozachin/wordpress/?p=317#respond Sun, 12 Jan 2020 11:03:52 +0000 http://www.now.mfnet.ne.jp/~ozachin/wordpress/?p=317 read more]]> 訂正ボタンのコードを見ていきます。
その前に検索部分の確認をしておきます。
レコードの検索を行うには、つぎのように使い分けます。
テーブルセットタイプ : Seekメソッド
ダイナセットタイプ :Findメソッド
スナップショットタイプ : Findメソッド

Accessのヘルプ、リンクテーブルではSeekが使えないことが説明されています。

よくヘルプを確認しないと何度やっても失敗します。それはリンクテーブルの場合です。
今回はテーブルセットなので、基本のSeekメソッドを使った場合を示します。
しかし、環境の違いも考慮してFindメソッドもコメント行で示しておきます。使い分けしてください。

Private Sub cmd_UpDate_Click()
  '------ 訂正処理 -------------
  
   Dim db As DAO.Database
   Dim rs As DAO.Recordset
      
   Set db = CurrentDb()

'---Findメソッドを使う場合  
'Set rs = db.OpenRecordset("T_everyday", dbOpenDynaset)
'rs.FindFirst "Class_Id=" & "'" & Me.cmb1.Column(0) & "'" & " And " & "N_date=" & "'" & Me.T_date & "'"
 
'----Seek メソッドを使う場合
 Set rs = db.OpenRecordset("T_everyday", dbOpenTable)
 rs.Index = "PrimaryKey"
 rs.Seek "=", Me.cmb1.Column(0), Me.T_date
'-----------------------------   
  rs.Edit
     rs!N_ketu = T_ketu
     rs!N_tiko = T_tiko
     rs!N_sou = T_sou
     rs!N_tei = T_teisi
     rs!N_infu = T_inful
  rs.Update
    
  Requery
   
 rs.Close: Set rs = Nothing
 db.Close: Set db = Nothing

End Sub

 

最初に説明したようにVBAとして主要な部分は前回と併せてこれだけですが、日常業務を見直せば応用できる場面は少なくありません。

尚、管理者はすべての機能を利用できるように説明しましたが、役職上の業務を行っているだけで必ずしもPCの専門家ではありません。従って管理者用の画面もミスのないようにしなくてはなりません。
担任不在時に代わって入力する画面も、基本構成は担任用と同じです。ただクラスが連続で自由に選択できるようにしているだけです。

]]>
http://www.now.mfnet.ne.jp/~ozachin/wordpress/?feed=rss2&p=317 0
学校日誌用出欠管理システム5 http://www.now.mfnet.ne.jp/~ozachin/wordpress/?p=313 http://www.now.mfnet.ne.jp/~ozachin/wordpress/?p=313#respond Sun, 12 Jan 2020 04:00:11 +0000 http://www.now.mfnet.ne.jp/~ozachin/wordpress/?p=313 read more]]> VBAのコードを見ていきます。
担任の登録用です。主要な部分はAccess VBA連載1~3で示した基本的な内容と変わりません。
登録ボタンと訂正ボタンがありますが、最初は訂正ボタンが無効です。
各項目を入力し登録ボタンを押すと、ボタンの有効・無効が反転します。(訂正ボタンだけが有効となる。)
ただし、その場だけの入力ミスを訂正するもので、後からミスに気付いて訂正しようとしてもできない仕組みになっています。担当者が日誌を印刷してから訂正しても反映されないからです。これは先に説明した通りです。
訂正しようと再度担任がこのフォームを開くと、登録ボタンは有効ですが 二重登録になるので、「訂正がある場合は担当者に連絡してください」とのメッセージを出します。(訂正ボタンは有効にはなりません。)

Private Sub cmd_AddNew_Click()

    Dim db As DAO.Database
    Dim rs As DAO.Recordset
    Dim rc As Integer '登録済みデータを調べるため
    
' LoginNameが使えない場合は、コンボボックスからクラスを選択するようにしてください    
'    If IsNull(cmb1) Then
'        MsgBox "クラスを選択してくだい"
'        Exit Sub
'    End If
'
'以下、クラスが指定されている前提

    
    Set db = CurrentDb()
    Set rs = db.OpenRecordset("T_everyday")
    
'データが登録済みかを調べる
    rc = DCount("*", "T_everyday", "Class_Id='" & Me.cmb1.Column(0) & "'" & " And " & "N_date='" & Me.T_date & "'")
    If rc > 0 Then '登録済み
        MsgBox "訂正がある場合は担当者に連絡してください。"
        Exit Sub
    Else             '新規登録
        rs.AddNew
        rs!Class_Id = cmb1.Column(0)
        rs!N_date = T_date
        rs!N_ketu = T_ketu
        rs!N_tiko = T_tiko
        rs!N_sou = T_sou
        rs!N_tei = T_teisi
        rs!N_infu = T_inful
     
        rs.Update

       Me.cmd_AddNew.Enabled = False
       Me.cmd_UpDate.Enabled = True
       Requery
    
   End If

    rs.Close: Set rs = Nothing
    db.Close: Set db = Nothing
 
End Sub

 

]]>
http://www.now.mfnet.ne.jp/~ozachin/wordpress/?feed=rss2&p=313 0
学校日誌用出欠管理システム4 http://www.now.mfnet.ne.jp/~ozachin/wordpress/?p=310 http://www.now.mfnet.ne.jp/~ozachin/wordpress/?p=310#respond Sat, 11 Jan 2020 01:22:51 +0000 http://www.now.mfnet.ne.jp/~ozachin/wordpress/?p=310 read more]]> ネットワーク上で多くの人が利用するので、バックエンドはSQLServerなどがあれば安心ですが、それぞれの学校の事情もあるでしょうからAccess単体での運用でもしかたありません。
その場合でも単独のファイルではなく、バックエンドを分離しておいた方が安全です。バックアップはとっておきましょう。
ただ、データを蓄積して再利用するとしても出席統計ぐらいかもしれません。日々の印刷が終われば正式書類としては検印をうけた日誌がバインダーに綴じられるわけですからそう神経質にならなくてもいいでしょう。

テーブル設計を見ます。
1.教員テーブル UserName
2.クラステーブル T_class
3.日々のデータテーブル T_everyday

この3つが基本です。特別なことはありませんが、同一クラス・同一日をキーに二重登録をチェックします。
補足として、記事欄も入力できるようにしておくと便利かもしれません。しかし、記事欄はその日によって多いことも少ないこともあるので、固定的に扱うのは難しいです。
小生が担当者なら手書きは嫌なので入力したいと思いますが、運用を強制するのは好ましくありません。
将来的な拡張機能として用意しておく程度にします。
4.記事用テーブル T_kiji
日付と管理したい記事項目の分だけテキストフィールドがあればよいでしょう。

入力系は、新規登録と訂正だけなのでほとんど説明することはありません。
未入力のチェック画面を紹介します。
管理者画面から未入力チェックを選択すると図のようなフォームが開き学年別の未入力クラスが表示されます。

学年別のサブフォームを埋め込んであります。
データソースはT_classテーブルと当日登録クラスとの差分クエリです。
学年別に見やすくしただけです。

]]>
http://www.now.mfnet.ne.jp/~ozachin/wordpress/?feed=rss2&p=310 0
学校日誌用出欠管理システム3 http://www.now.mfnet.ne.jp/~ozachin/wordpress/?p=306 http://www.now.mfnet.ne.jp/~ozachin/wordpress/?p=306#respond Fri, 10 Jan 2020 11:01:38 +0000 http://www.now.mfnet.ne.jp/~ozachin/wordpress/?p=306 read more]]> 前回見たようにシステムはごくシンプルです。数値をテーブルに登録し、その日の分を印刷するだけです。
要はAccessの利用場面を知ってもらいたいだけです。
というわけで、印刷結果を先に見てもらいます。

用紙側に見出し行や縦罫線があり、結果として表形式の報告書になる。

在籍・出席・欠席・遅刻・早退・出停・インフル の順です。(用紙側に印刷してある。)
罫線が入っています。この場合、用紙側に縦罫線が印刷されていて、結果としてクラス別の形式表報告書が出来上がる仕組みになっています。

クラス数に大きな変動がなければ縦横罫線枠の用紙を用意すれば問題ありませんが、年度で枠が足りなくなると困るので、敢えて縦罫線だけの用紙を用意して運用をした場合の例です。
A4用紙であれば他の記事欄も含め40クラスくらいは可能だと思われます。(実際の運用場面では最大32クラスであった。)
これだけのクラスになると、転記して集計するのも大変です。男女別だったらさらに大変です。
できればやりたくない仕事です。黒板(ホワイトボード)に記入する代わりに、PCに入力してもらうだけでどれだけの省力化になるか計り知れません。

連載の最初にDAOによるデータ操作を説明しました。
何をいまさらと思ったかもしれませんが、単純なデータ登録操作でも応用場面はたくさんあります。

今回のシステムを応用した別の場面での活用も連載する予定です。

]]>
http://www.now.mfnet.ne.jp/~ozachin/wordpress/?feed=rss2&p=306 0
学校日誌用出欠管理システム2 http://www.now.mfnet.ne.jp/~ozachin/wordpress/?p=297 http://www.now.mfnet.ne.jp/~ozachin/wordpress/?p=297#respond Thu, 09 Jan 2020 04:48:39 +0000 http://www.now.mfnet.ne.jp/~ozachin/wordpress/?p=297 read more]]> 最初に担任業務用の画面を確認します。 各学校のネットワーク環境は分かりかねますので、ログインnameから担任クラスを判定する部分のコードは割愛します。対応できない場合は、リストから選択できるようにするなど工夫してください。

在籍数はなくても構いません。担任は変更できません。在籍に異動があった場合は担当者が管理機能で変更します。
日付欄の規定値はシステム日付、クリックすると横にカンレンダーコントロールが現れます。
数値を入力して登録ボタンを押すと、その場だけでは訂正ボタンが有効となります。
一度フォームを閉じると、前回説明の通り再登録(訂正)はできません。その旨メッセージが出ます。
副担任用も見ておきます。クラスが選択できる以外は各担任用と同じです。

ログインname判定ができる場合は、教員テーブルと関連付けて担任専用フォームを使用した方がよいでしょう。
無理な場合は全員クラス選択(この例の担任業務代行画面)で対応してください。
ただし、初期設定ではこの画面は1クラスしか登録できません。(1回登録するとクラス選択用コンボボックスは無効になります。)
連続で入力できると、「私のクラスも入力しいおいて・・」などいう不届き者があらわれかねません。
再起動の不便さを知っていれば敢えて他人に頼むことはないでしょう。

管理者用は、連続で複数クラス登録や訂正できないと困りますので、それにも対応します。

インフルエンザは集計上は出席停止扱いとなります。別に登録して管理するのは、罹患者の数を把握し、対応を検討したり関係機関への報告等の資料として使うためです。
必要かどうかは各学校の状況で判断してください。正式な書類は別に回付されるはずですから。

管理者用の画面を見てみます。全機能を利用できるようにしてあります。
最初に説明した通り、3年生(中学や高校)が卒業する時期になると記入パターンが通常と違ってきます。
この例では、3年生が卒業試験終了後の「自由登校期間」、卒業式後の「卒業期」で扱いが異なるので印刷前に指定するようにします。規定値は「通常期」です。

]]>
http://www.now.mfnet.ne.jp/~ozachin/wordpress/?feed=rss2&p=297 0
学校日誌用出欠管理システム1 http://www.now.mfnet.ne.jp/~ozachin/wordpress/?p=295 http://www.now.mfnet.ne.jp/~ozachin/wordpress/?p=295#respond Thu, 09 Jan 2020 04:21:38 +0000 http://www.now.mfnet.ne.jp/~ozachin/wordpress/?p=295 read more]]> 先の連載でAccessは罫線が苦手であるという話をしました。発想を変えて罫線のある用紙にデータだけを印字させる方法で活用してみようと思います。最近のプリンターは性能が高いので位置がずれることはほとんどありません。

学校現場で毎日のように手作業で行っている業務がたくさんあります。IT化を進めるべきです。その一つして、学校日誌に学級別の出欠状況を記入する欄がありますが、学級数が多いとそれなりに大変です。小生が関係した学校では最大33クラスという時がありました。

教員一人1台のPC環境が整った現在、その資産を最大限利用しましょう。 まず、作業の流れを説明します。

1.帰りのホームルーム終了後、各担任はPCから出欠情報を入力します。確定情報だと自信があればいつでも構いませんが、最終帰りのホームルーム後ということにします。

2.日誌担当者は全学級入力が済んだことを確認後、日誌用紙をプリンターにセットし印刷します。学年別や学校全体の集計値も印刷されます。

3.日誌の他の項目は手書きで完成させます。(事前に書ける部分は書いても構いませんが、用紙をセットするとき向きを間違えると悲惨です。)

システムとしてはシンプルです。しかし、運用上の問題をクリアしておかないとかえって担当者が苦労する結果となります。

1.面倒なことが増えると教員は嫌がります。あきらかに、黒板(ホワイトボード)に記入するより楽になったと思えるようなシステムであることが大事です。
そこで、まずシステムを起動すると自分のクラスが自動的に表示されることです。クラス選択だけでも面倒だと思われます。「○○先生、今日もお仕事お疲れ様です」なとどメッセージが出るようにしておくと喜ぶかもしれません。
これはPCのログイン情報をもとに担任クラスを判断させるので、一人1台の環境でないとなかなか大変です。
入力は、欠席・遅刻・早退・インフルエンザ等の出席停止のみとする。
初期値は全て0とし、何もなければ登録ボタンを押すだけでよい。 これくらいしておけば嫌がる人はいないと思います。

2.担当者は未入力のチェックができることがまず必要です。未入力のクラスには声をかけます。時間がない場合は、自分で入力できるようにしておきます。担任不在の場合は副担任が入力できるようにもしておきます。

3.校外教室の場合、前日の状況を入力しなくてはなりません。初期値はシステム日付ですがカレンダー機能で変えられるようにしておきます。

4.全員出席扱いということもあります。担当者にはその機能を利用できるようにしておきます。卒業時期は複雑です。各学校で想定される記入パターンを洗い出しておく必要があります。担当者はそのパターンに対応できる機能が必要になります。
一例として、3年生は在籍数のみ表示して集計対象としない、などです。

5.担任(副担任)はその日の入力は1回のみに限定します。訂正がある場合は担当者に連絡して訂正してもらいます。そうしないと担当者は未入力チェック後はいつでも印刷できるので、印刷後に担任が訂正しても反映されません。  

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