「TOOL_テキストファイル情報収集_ファイル情報取得クラス」の編集履歴(バックアップ)一覧に戻る

TOOL_テキストファイル情報収集_ファイル情報取得クラス - (2013/05/14 (火) 23:52:29) のソース

**TOOL_テキストファイル情報収集_ファイル情報取得クラス
-ソース
 Option Compare Database
 Option Explicit
 
 ' GFI_FileInfoObject
 ' ファイル情報取得
 
 Private FVO As GFI_FormValueObject
 
 Private FileName As String
 Private FileSize As Long
 Private RecordCount As Long
 Private CreateDate As Date
 Private LastUpdateDate As Date
 Private CheckDate As Date
 
 Private Sub class_initialize()
     ' なにもしません
 End Sub
 
 ' InitFormInfo
 ' フォームの入力情報を取得する
 ' 引数:あり
 ' iFIO  :GFI_FormValueObject   :フォーム情報クラス
 ' 戻り値:なし
 Public Sub InitFormInfo(ByVal iFIO As GFI_FormValueObject)
     Set FVO = iFIO
 End Sub
 
 ' GetFileInfo
 ' 対象ファイルのファイル情報を取得する
 ' 引数:あり
 ' iFileName : 対象のファイル名
 ' 戻り値:なし
 Public Sub GetFileInfo(ByVal iFileName As String)
     ' 1.ファイル名設定
     FileName = iFileName
     
     ' 2.ファイルサイズ設定
     FileSize = FileLen(FVO.GetFolderPath & "\" & FileName)
     
     ' 3.行数カウント
     RecordCount = CountFileLine(FVO.GetFolderPath & "\" & FileName, _
                                 FVO.GetHasHeaderLine, _
                                 FVO.GetHasUselessLine)
     
     ' 4.作成日
     CreateDate = GetFileCreateDate(FVO.GetFolderPath & "\" & FileName)
     
     ' 5.最終更新日
     LastUpdateDate = GetFileLastUpdateDate(FVO.GetFolderPath & "\" & FileName)
     
     ' 6.調査日
     CheckDate = Now
 End Sub
 
 ' CountDataFileLine
 ' 指定ファイルの行数をカウントする
 ' フラグにより、ファイルの構成に対応したカウントが可能
 ' ※純粋なレコード数0の場合はフラグ情報を考慮しない
 ' 引数:あり
 ' iFilePath : カウントする指定ファイル(フルパス)
 ' hasHeaderLine : ヘッダー行の有無(「TRUE:ヘッダー行あり」の場合1減らす)
 ' hasLastBlankLine  : カウント不要な最終行の有無(「TRUE:カウント不要行あり」の場合1減らす)
 ' 戻り値:String:ファイルの行数
 Public Function CountFileLine(ByVal iFilePath As String, ByVal hasHeaderLine As Boolean, ByVal hasLastBlankLine As Boolean) As Long
     Dim fsObj As Object
     Dim fsObjTS As Object
     Dim LineNumber As Long
     
     Set fsObj = CreateObject("Scripting.FileSystemObject")
     ' ファイルの末尾から読み込み専用モードで開きます
     Set fsObjTS = fsObj.OpenTextFile(iFilePath, 1, False, -1)
     ' 末尾まで一行ずつ読み飛ばして、読み飛ばした数を行数とする
     LineNumber = 0
     Do While Not fsObjTS.AtEndOfStream
         fsObjTS.SkipLine
         LineNumber = LineNumber + 1
     Loop
     
     ' ファイルを閉じる
     fsObjTS.Close
     
     ' 使用済みオブジェクトの除去
     Set fsObj = Nothing
     
     If LineNumber > 0 Then
         If hasHeaderLine Then
             LineNumber = LineNumber - 1
         End If
         If hasLastBlankLine Then
             LineNumber = LineNumber - 1
         End If
     End If
 
     CountFileLine = LineNumber
 End Function
 
 ' GetFileCreateDate
 ' テキストファイルの作成日を取得する
 ' 引数:あり
 ' iFilePath : カウントする指定ファイル(フルパス)
 ' 戻り値:Date:テキストファイルの作成日
 Public Function GetFileCreateDate(ByVal iFilePath As String) As Date
     Dim fsObj As Object
     Dim tCreateDate As Date
     
     ' 初期化
     Set fsObj = CreateObject("Scripting.FileSystemObject")
     
     ' ファイル作成日の取得
     tCreateDate = fsObj.GetFile(iFilePath).DateCreated
     
     ' 使用済みオブジェクトの除去
     Set fsObj = Nothing
     
     GetFileCreateDate = tCreateDate
 End Function
 
 ' GetFileLastUpdateDate
 ' テキストファイルの最終更新日を取得する
 ' 引数:あり
 ' iFilePath : カウントする指定ファイル(フルパス)
 ' 戻り値:Date:テキストファイルの最終更新日
 Public Function GetFileLastUpdateDate(ByVal iFilePath As String) As Date
     Dim fsObj As Object
     Dim tLastUpdateDate As Date
     
     ' 初期化
     Set fsObj = CreateObject("Scripting.FileSystemObject")
     
     ' ファイル作成日の取得
     tLastUpdateDate = fsObj.GetFile(iFilePath).DateLastModified
     
     ' 使用済みオブジェクトの除去
     Set fsObj = Nothing
     
     GetFileLastUpdateDate = tLastUpdateDate
 End Function
 
 ' CreateInfoRecord
 ' 取得済みのファイル情報をテーブルに格納する
 ' 引数:なし
 ' 戻り値:なし
 Public Function CreateInfoRecord()
     Dim myDb As DAO.Database
     Dim strSQL As String
     Dim tableName As String
     
     Set myDb = CurrentDb
     tableName = "FileInfosList"
     strSQL = "Insert Into " & tableName & _
                 " VALUES(" & _
                 "'" & FVO.GetFolderPath & "', " & _
                 "'" & FileName & "', " & _
                 FileSize & ", " & _
                 RecordCount & ", " & _
                 "#" & Format(CreateDate, "yyyy/MM/dd hh:nn:ss") & "#, " & _
                 "#" & Format(LastUpdateDate, "yyyy/MM/dd hh:nn:ss") & "#, " & _
                 "#" & Format(CheckDate, "yyyy/MM/dd hh:nn:ss") & "#)"
     
     myDb.Execute strSQL
     
 End Function


2013/05/13 更新 
2013/05/14 更新 


[[TOOL_テキストファイル情報収集]]

[[トップ]]