TOOL_テキストファイル情報収集_初回準備

  • ソース
Option Compare Database
Option Explicit

' 初回起動準備用
' このモジュールはTOOL作成時、フォーム・テーブル・クエリを作成します。
' 作成後はアクセスことはありません。

' 初回起動時準備
' ツールの設計上必要なパーツを作成します。
' 引数:なし
Public Sub 初回起動時準備()
    フォーム作成
    テーブル作成
    クエリ作成
    クエリ作成_削除
End Sub

' フォーム作成
' 引数:なし
' 戻り値:なし
Private Function フォーム作成()
    Dim mForm As Form
    
    Dim AdjustSize As Long
    AdjustSize = 567    ' 567twip = 1cm
    
    ' 1.フォームの動的生成
    Set mForm = CreateForm
    
    ' 2.フォームの設定
    ' フォームの種類
    mForm.DefaultView = 0
    ' フォームの縦横のサイズ
    '単位:twip
    mForm.Section(0).Height = 12 * AdjustSize
    mForm.Width = 8 * AdjustSize
    '標題
    mForm.Caption = "ファイル情報取得フォーム"
    'レコードセレクタ
    mForm.RecordSelectors = False
    ' 表示設定
    mForm.Visible = True
    mForm.OnLoad = "=FormFormat()"
    
    ' 3.パーツ付与
    Call パーツ設定(mForm, AdjustSize)
    
    ' 4.フォームのサイズを戻す
    DoCmd.Restore
    
    ' 5.フォームを開く
    DoCmd.OpenForm mForm.Name, acDesign
    ' 6.フォームのウィンドウ位置とサイズを修正
    DoCmd.MoveSize 0, 0, 9 * AdjustSize, 12 * AdjustSize
    
    ' 7.フォームを保存
    DoCmd.Save , "ファイル情報取得フォーム"
    
    ' 8.フォームを閉じる
    DoCmd.Close , , acSaveNo
    
End Function

' パーツ作成
' フォーム上に存在するすべてのパーツを作成・配置します
' 引数:あり
' iForm : Form    :配置するフォーム
' iAS   ;  Long    :配置位置の座標を設定する際に使用する単位変換値
' 戻り値:なし
Private Function パーツ設定(ByVal iForm As Form, ByVal iAS As Long)
    
    Dim LabelTitleObj As Control
    Dim LabelEssentialObj As Control
    Dim LabelFolderPathObj As Control
    Dim TextFolderPathObj As Control
    Dim OptionGroupFilePatternObj As Control
    Dim LabelFilePatternObj As Control
    Dim RadioFilePatternTxtObj As Control
    Dim LabelFilePatternTxtObj As Control
    Dim RadioFilePatternCsvObj As Control
    Dim LabelFilePatternCsvObj As Control
    
    Dim LabelOptionObj As Control
    Dim LabelOptionCountObj As Control
    Dim ChkboxHasHeaderLineObj As Control
    Dim LabelHasHeaderLineObj As Control
    Dim ChkboxHasUselessLineObj As Control
    Dim LabelHasUselessLineObj As Control
    
    Dim BtnListResetObj As Control
    Dim ChkboxIsListResetObj As Control
    Dim LabelIsListResetObj As Control
    
    Dim BtnGetFileInfosObj As Control
    
    ' 1.タイトルラベルの設定
    Set LabelTitleObj = CreateControl(iForm.Name, acLabel, , , , 0.25 * iAS, 0.5 * iAS)
    LabelTitleObj.Name = "フォームタイトル"
    LabelTitleObj.Width = 6 * iAS
    LabelTitleObj.Height = 1 * iAS
    LabelTitleObj.Caption = "指定フォルダ内のテキストファイル情報を取得・リスト化します"
    LabelTitleObj.FontSize = 10
    
    ' 2.初期化実行ボタン
    Set BtnListResetObj = CreateControl(iForm.Name, acCommandButton, , , , 2.5 * iAS, 1.7 * iAS)
    BtnListResetObj.Name = "初期化実行"
    BtnListResetObj.Width = 3 * iAS
'    BtnListResetObj.Height = 0.5 * iAS
    BtnListResetObj.Caption = "初期化実行"
    BtnListResetObj.FontSize = 10
    BtnListResetObj.OnClick = "=ResetTableRecord()"
    
    ' 3.必須項目のタイトルラベルの設定
    Set LabelEssentialObj = CreateControl(iForm.Name, acLabel, , , , 0.25 * iAS, 3 * iAS)
    LabelEssentialObj.Name = "必須入力タイトル"
    LabelEssentialObj.Width = 6 * iAS
    LabelEssentialObj.Height = 0.5 * iAS
    LabelEssentialObj.Caption = "【必須入力設定】"
    LabelEssentialObj.FontSize = 10
    LabelEssentialObj.FontBold = True
    LabelEssentialObj.ForeColor = RGB(0, 0, 255)
    
    ' 4.フォルダパス項目のラベル
    Set LabelFolderPathObj = CreateControl(iForm.Name, acLabel, , "フォルダパス項目", , 0.25 * iAS, 3.8 * iAS)
    LabelFolderPathObj.Name = "フォルダパスラベル"
    LabelFolderPathObj.Width = 6 * iAS
    LabelFolderPathObj.Height = 0.5 * iAS
    LabelFolderPathObj.Caption = "・フォルダパス"
    LabelFolderPathObj.FontSize = 10
    
    ' 5.フォルダパス項目
    Set TextFolderPathObj = CreateControl(iForm.Name, acTextBox, , , , 0.5 * iAS, 4.3 * iAS, , 0.5 * iAS)
    TextFolderPathObj.Name = "フォルダパス項目"
    TextFolderPathObj.Width = 6 * iAS
    TextFolderPathObj.Height = 0.5 * iAS
    TextFolderPathObj.FontSize = 10
    
    ' 6.検索ファイル
    Set OptionGroupFilePatternObj = CreateControl(iForm.Name, acOptionGroup, , , , 0.25 * iAS, 5 * iAS)
    OptionGroupFilePatternObj.Name = "検索ファイル"
    OptionGroupFilePatternObj.Width = 7 * iAS
    OptionGroupFilePatternObj.Height = 2 * iAS
    OptionGroupFilePatternObj.BorderStyle = 0
    OptionGroupFilePatternObj.SpecialEffect = 0
    
    ' 7.検索ファイルのラベル
    Set LabelFilePatternObj = CreateControl(iForm.Name, acLabel, , , , 0.25 * iAS, 5 * iAS)
    LabelFilePatternObj.Name = "検索ファイルラベル"
    LabelFilePatternObj.Width = 6 * iAS
    LabelFilePatternObj.Height = 0.5 * iAS
    LabelFilePatternObj.Caption = "・検索ファイル"
    
    ' 8.検索ファイル(TXT)
    Set RadioFilePatternTxtObj = CreateControl(iForm.Name, acOptionButton, , OptionGroupFilePatternObj.Name, , 0.5 * iAS, 5.5 * iAS)
    RadioFilePatternTxtObj.Name = "検索ファイル_TXT"
    RadioFilePatternTxtObj.OptionValue = 1
    
    ' 9.検索ファイル(TXT)のラベル
    Set LabelFilePatternTxtObj = CreateControl(iForm.Name, acLabel, , , , 1.2 * iAS, 5.5 * iAS)
    LabelFilePatternTxtObj.Name = "検索ファイル_TXTラベル"
    LabelFilePatternTxtObj.Width = 4 * iAS
    LabelFilePatternTxtObj.Height = 0.5 * iAS
    LabelFilePatternTxtObj.Caption = "*.txt"
    
    ' 10.検索ファイル(CSV)
    Set RadioFilePatternCsvObj = CreateControl(iForm.Name, acOptionButton, , OptionGroupFilePatternObj.Name, , 0.5 * iAS, 6 * iAS)
    RadioFilePatternCsvObj.Name = "検索ファイル_CSV"
    RadioFilePatternCsvObj.OptionValue = 2

    ' 11.検索ファイル(CSV)のラベル
    Set LabelFilePatternCsvObj = CreateControl(iForm.Name, acLabel, , , , 1.2 * iAS, 6 * iAS)
    LabelFilePatternCsvObj.Name = "検索ファイル_CSVラベル"
    LabelFilePatternCsvObj.Width = 4 * iAS
    LabelFilePatternCsvObj.Height = 0.5 * iAS
    LabelFilePatternCsvObj.Caption = "*.csv"
    
    ' 12.オプション項目のタイトルラベルの設定
    Set LabelOptionObj = CreateControl(iForm.Name, acLabel, , , , 0.25 * iAS, 7 * iAS)
    LabelOptionObj.Name = "オプションタイトル"
    LabelOptionObj.Width = 6 * iAS
    LabelOptionObj.Height = 0.7 * iAS
    LabelOptionObj.Caption = "【オプション設定】"
    LabelOptionObj.FontSize = 10
    LabelOptionObj.FontBold = True
    LabelOptionObj.ForeColor = RGB(0, 0, 255)
    
    ' 13.行数カウントオプションのラベル
    Set LabelOptionCountObj = CreateControl(iForm.Name, acLabel, , , , 0.25 * iAS, 7.7 * iAS)
    LabelOptionCountObj.Name = "行数カウントオプション"
    LabelOptionCountObj.Width = 6 * iAS
    LabelOptionCountObj.Height = 0.5 * iAS
    LabelOptionCountObj.Caption = "・行数カウントオプション"
    LabelOptionCountObj.FontSize = 10
    
    ' 14.ヘッダー行の有無
    Set ChkboxHasHeaderLineObj = CreateControl(iForm.Name, acCheckBox, , , , 0.5 * iAS, 8.2 * iAS)
    ChkboxHasHeaderLineObj.Name = "チェック_ヘッダー行有無"

    ' 15.ヘッダー行の有無のラベル
    Set LabelHasHeaderLineObj = CreateControl(iForm.Name, acLabel, , , , 1.2 * iAS, 8.2 * iAS)
    LabelHasHeaderLineObj.Name = "チェック_ヘッダー行有無ラベル"
    LabelHasHeaderLineObj.Width = 6 * iAS
    LabelHasHeaderLineObj.Height = 0.5 * iAS
    LabelHasHeaderLineObj.Caption = "ヘッダー行あり"
    LabelHasHeaderLineObj.FontSize = 10
    
    ' 16.実行ボタンの設定
    Set BtnGetFileInfosObj = CreateControl(iForm.Name, acCommandButton, , , "実行ボタン", 2.5 * iAS, 9.5 * iAS, 2 * iAS)
    BtnGetFileInfosObj.Caption = "実行"
    BtnGetFileInfosObj.OnClick = "=GetFileInfos()"
    BtnGetFileInfosObj.FontSize = 10
    BtnGetFileInfosObj.Width = 3 * iAS

End Function

' テーブル作成
' 引数:なし
' 戻り値:なし
Private Function テーブル作成()
    Dim ACC_CheckAFObj As ACC_CheckAccessFile
    Dim dbObj As DAO.Database
    Dim dbTblDef As DAO.TableDef
    Dim tableName As String
    
    ' 1.DB・チェッククラスの初期化
    Set ACC_CheckAFObj = New ACC_CheckAccessFile
    Set dbObj = CurrentDb
    
    ' 2.作成するテーブル名の設定
    tableName = "FileInfosList"
    
    ' 3.テーブルが既に存在する場合削除
    If ACC_CheckAFObj.HasSelectedTable(dbObj, tableName) <> False Then
        dbObj.TableDefs.Delete tableName
    End If
    
    ' 4.新規テーブルの定義を作成
    Set dbTblDef = dbObj.CreateTableDef(tableName)
    
    ' 5.定義したテーブルに項目を追加する
    dbTblDef.Fields.Append dbTblDef.CreateField("FolderPath", dbText)
    dbTblDef.Fields.Append dbTblDef.CreateField("FileName", dbText)
    dbTblDef.Fields.Append dbTblDef.CreateField("FileSize", dbLong)
    dbTblDef.Fields.Append dbTblDef.CreateField("RecordCout", dbLong)
    dbTblDef.Fields.Append dbTblDef.CreateField("CreateDate", dbDate)
    dbTblDef.Fields.Append dbTblDef.CreateField("LastUpdateDate", dbDate)
    dbTblDef.Fields.Append dbTblDef.CreateField("CheckDate", dbDate)
    
    ' 6.新規テーブルの作成
    dbObj.TableDefs.Append dbTblDef
    
    ' 7.項目の表示形式の設定
    dbTblDef.Fields("CreateDate").Properties.Append dbTblDef.Fields("CreateDate").CreateProperty("Format", dbText, "yyyy/MM/dd hh:nn:ss")
    dbTblDef.Fields("LastUpdateDate").Properties.Append dbTblDef.Fields("LastUpdateDate").CreateProperty("Format", dbText, "yyyy/MM/dd hh:nn:ss")
    dbTblDef.Fields("CheckDate").Properties.Append dbTblDef.Fields("CheckDate").CreateProperty("Format", dbText, "yyyy/MM/dd hh:nn:ss")
End Function

' クエリ作成
' 引数:なし
' 戻り値:なし
Private Function クエリ作成()
    Dim ACC_CheckAFObj As ACC_CheckAccessFile
    Dim dbObj As DAO.Database
    Dim dbQueryDef As DAO.QueryDef
    Dim tableName As String
    Dim queryName As String
    Dim strSQL As String
    
    ' 1.DB・チェッククラスの初期化
    Set ACC_CheckAFObj = New ACC_CheckAccessFile
    Set dbObj = CurrentDb
    
    ' 2.作成するクエリ名の設定
    queryName = "ファイル情報リスト_JP"
    
    ' 3.作成クエリの処理先テーブル名を設定
    tableName = "FileInfosList"
    
    ' 4.クエリが既に存在する場合削除
    If ACC_CheckAFObj.HasSelectedQuery(dbObj, queryName) <> False Then
        dbObj.QueryDefs.Delete queryName
    End If
    
    ' 5.SQL文の作成
    strSQL = "SELECT " & _
                "FolderPath AS フォルダ, " & _
                "FileName AS ファイル名, " & _
                "FileSize AS ファイルサイズ, " & _
                "RecordCout AS 行数, " & _
                "CreateDate AS 作成日, " & _
                "LastUpdateDate AS 更新日, " & _
                "CheckDate AS 確認日 " & _
                "FROM " & tableName & ";"
                
    ' 6.新規クエリの定義作成
    Set dbQueryDef = dbObj.CreateQueryDef(queryName, strSQL)
    
    ' 7.不要オブジェクトの解放
    Set dbQueryDef = Nothing
    Set dbObj = Nothing
    
End Function

Private Function クエリ作成_削除()
    Dim ACC_CheckAFObj As ACC_CheckAccessFile
    Dim dbObj As DAO.Database
    Dim dbQueryDef As DAO.QueryDef
    Dim tableName As String
    Dim queryName As String
    Dim strSQL As String
    
    ' 1.DB・チェッククラスの初期化
    Set ACC_CheckAFObj = New ACC_CheckAccessFile
    Set dbObj = CurrentDb
    
    ' 2.作成するクエリ名の設定
    queryName = "ファイル情報リスト_初期化"
    
    ' 3.作成クエリの処理先テーブル名を設定
    tableName = "FileInfosList"
    
    ' 4.クエリが既に存在する場合削除
    If ACC_CheckAFObj.HasSelectedQuery(dbObj, queryName) <> False Then
        dbObj.QueryDefs.Delete queryName
    End If
    
    ' 5.SQL文の作成
    strSQL = "Delete * From " & tableName
                
    ' 6.新規クエリの定義作成
    Set dbQueryDef = dbObj.CreateQueryDef(queryName, strSQL)
    
    ' 7.不要オブジェクトの解放
    Set dbQueryDef = Nothing
    Set dbObj = Nothing
    
End Function


2013/05/14 修正
2013/05/15 全面改訂





最終更新:2013年05月16日 01:38