VB6.0用掲示板の過去のログ(No.2)−VBレスキュー(花ちゃん)
[記事リスト] [新規投稿] [新着記事] [ワード検索] [管理用]

投稿日: 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で取得し双方を比較しています。

どなたかアドバイスをよろしくお願いします。

_| ̄|○


- 関連一覧ツリー (★ をクリックするとツリー全体を一括表示します)

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)

- VBレスキュー(花ちゃん) - - Web Forum -