最初に、肝心な区域別担当者の入力処理について説明します。
担当者の担当区域(T_kubun)とその区域について今期の登録状況(T_tenken)を比較し 新規登録か訂正かを判断する。
2つのクエリを用意する。
Q_1で各担当者の今期の登録内容が確認できる。
1 2 3 |
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で各担当者の担当区域数が確認できる。
1 2 3 |
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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 |
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 |