
マスターデータが大量の場合、一覧として全データを読み込むのに時間が掛かります。
そこでデータが更新されていなければ、データの読み込みはパスするようにします。
■社員マスターが更新された場合、環境設定に更新日時を登録します。
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
Dim tdate As Date
Dim rs As Recordset
If bChgflag = True Then
tdate = Now
'環境設定テーブルを開き、社員マスター更新日にセットする
Set rs = tDbHanbai.OpenRecordset("T_設定", dbOpenDynaset)
If rs.EOF Then
'新規追加
rs.AddNew
Else
'修正
rs.Edit
End If
rs("社員マスター更新日") = tdate
rs.Update
Set rs = Nothing
End If
End Sub
■一覧の社員マスターの表示日時と、環境設定の更新日時が同じならば時間節約の為、表示しないようにします。
'データベースから社員マスターのデータをシートに表示
Private Sub ExSyainToSheet()
Dim rs As Recordset
Dim lrow As Long
Dim tdate As Date
Dim bflag As Boolean
bflag = False
'前回開いた日時を取得
tdate = Sheets("社員マスター").Range("IV50")
'社員マスター更新日と一覧の日付を比較
Set rs = tDbHanbai.OpenRecordset("T_設定", dbOpenDynaset)
If Not rs.EOF Then
'更新されていない
If rs("社員マスター更新日") = tdate Then
bflag = True
Else
'目立たないセルに現在の日時を記入
Sheets("社員マスター").Range("IV50") = rs("社員マスター更新日")
End If
End If
Set rs = Nothing
'前回開いたのと、社員マスターの更新日が同じならば時間節約の為、抜ける
If bflag Then
Exit Sub
End If
'表示エリアのデータをクリア
Sheets("社員マスター").Range("B6:F65536").ClearContents
'自社情報テーブルを開き、テキストボックスに表示する
Set rs = tDbHanbai.OpenRecordset("M_社員マスター", dbOpenDynaset)
lrow = 6
Do While Not rs.EOF
'データを読みセルに表示
Sheets("社員マスター").Cells(lrow, 2) = rs("社員ID")
Sheets("社員マスター").Cells(lrow, 3) = rs("氏名")
Sheets("社員マスター").Cells(lrow, 4) = rs("フリガナ")
Sheets("社員マスター").Cells(lrow, 5) = rs("所属")
Sheets("社員マスター").Cells(lrow, 6) = rs("メール")
'次のレコード
rs.MoveNext
lrow = lrow + 1
Loop
Set rs = Nothing
End Sub