投稿日 | : 2007/04/14(Sat) 09:05 |
投稿者 | : やまちゃん |
Eメール | : |
URL | : |
タイトル | : ファイルの最終更新日の変化を取得? |
はじめまして。
初めて投稿します。初心者です。
VB6,Xpです。
現在作成中のシステムで、Accessにレコードを追加して、その更新内容をグリッドコントロール
に反映させようとしています。
が…、
少々複雑な計算後のレコード追加なので、グリッドコントロールの更新が先に処理されてしまい
、表示が正しく更新されていません。
計算などで、標準モジュールを使っているのでDoEventsは使えない(?)と思い、下記のように
フォームにタイマーを1つ貼り付けファイルの最終更新日を取得してこれが変化するまでは
待機させる、という作戦でもうまく行きませんでした(LAST_UPDATEがうまく取得できません)。
Public CURRENT_FILE As String
Public LAST_UPDATE As Single
Private Sub Timer_Update_Timer()
Dim Fso As New FileSystemObject
Dim FsoFile As File
If Len(CURRENT_FILE) > 1 Then
Set FsoFile = Fso.GetFile(CURRENT_FILE)
LAST_UPDATE = FsoFile.DateLastModified
Set FsoFile = Nothing
End If
End Sub
Private Sub Command_Update_Click()
Dim mySQL As String
Dim myDB As String
Dim sngLastUpdate As Single
(略)
'=== 現在の最終更新日を取得 ===
'Timerの所と同じ処理をする関数です。
sngLastUpdate = fLastUpdateYMD(App.Path & "\dat\" & myDB)
LAST_UPDATE = 0
CURRENT_FILE = App.Path & myDB
Timer_Update.Interval = 500
「ここでAccessファイルを更新します。長いので省略します。」
'=== 更新が終了するまで待機 ===
Do While LAST_UPDATE <= 1
DoEvents
Loop
Do While sngLastUpdate - LAST_UPDATE = 0
DoEvents
Loop
CURRENT_FILE = ""
'=== グリッドコントロール更新 ===
'グリッドコントロールを更新する処理を呼んでます。
Call sGrid_SiireZaiko_Input(SUB_CAPTION)
End Sub
sngLastUpdateでAccessファイルを更新する前の最新更新日を取得し、ファイル更新後に
再びLAST_UPDATEで取得し双方を比較しています。
どなたかアドバイスをよろしくお願いします。
_| ̄|○