kazpgmの日記

『プログラム自動作成@自動生成』作成の日記

TOOL更新_ver0.2開発開始。DB内容からselectを作成。SUB画面を作成。

TOOL更新_ver0.2開発開始。DB内容からselectを作成。SUB画面を作成。
2011/05/14 15:00-15:10 ver0.2は「SUB画面」の自動作成◎自動生成をやらないようにした。(やはりロジックが難しいので。)よってここに書いた内容は全てボツとする。
・DB内容からselectを作成して値を設定する。SUB画面を作成し検索して値を設定するロジックを入れる。

■定義エクセルの設定方法を決めた。
・「コード一覧」シートにこんな風に登録する。エレメントの一つと考えることにした。

「コード一覧」シートアクティブ、非アクティブ時に動くVBA修正。このロジックにより「★ツール用コンスタント★」シートに自動的にコード一覧ができる。

Module2の
Public Sub コードID一覧定義更新(DUMMY)
<<追加後>>
284行目
    ' Ver 0.2 追加start
    Dim コード一覧表№, コードID, str_wk
    コード一覧表№ = ""
    コードID = ""
    ' Ver 0.2 追加end

<<修正前>>
302行目
    Do While (Dst2.Cells(constコード一覧表開始行 + i, constコード一覧表№列) <> "END") 'ENDになるまでループ
        If Dst2.Cells(constコード一覧表開始行 + i, constコード一覧表№列) <> "" And _
            Dst2.Cells(constコード一覧表開始行 + i, constコード一覧表コードID列) <> "" Then
            Dst1.Cells(y + cnt, x) = Dst2.Cells(constコード一覧表開始行 + i, constコード一覧表№列) & "." & _
                                    Dst2.Cells(constコード一覧表開始行 + i, constコード一覧表コードID列)
            cnt = cnt + 1
            kuhakuCnt = 0
        Else
            kuhakuCnt = kuhakuCnt + 1
            If kuhakuCnt > 300 Then
                'MsgBox ("「コード一覧表」の№行の最後はENDにしてください。")
                Exit Do
            End If
        End If
        i = i + 1
    Loop

<<修正後>>
308行目
    Do While (Dst2.Cells(constコード一覧表開始行 + i, constコード一覧表№列) <> "END") 'ENDになるまでループ        ' Ver 0.2 修正start
        ' Ver 0.2 修正start
        If (Dst2.Cells(constコード一覧表開始行 + i, constコード一覧表№列) <> "" And _
            Dst2.Cells(constコード一覧表開始行 + i, constコード一覧表コードID列) <> "") Or _
           (Dst2.Cells(constコード一覧表開始行 + i, constコード一覧表コードID列 + 6) <> "" And _
            Dst2.Cells(constコード一覧表開始行 + i, constコード一覧表コードID列 + 7) <> "") Then
            ' コード一覧表コードID列が入っている時は固定エレメントと考える。
            If Dst2.Cells(constコード一覧表開始行 + i, constコード一覧表コードID列) <> "" Then
                コード一覧表№ = Dst2.Cells(constコード一覧表開始行 + i, constコード一覧表№列)
                コードID = Dst2.Cells(constコード一覧表開始行 + i, constコード一覧表コードID列)
                
                If Dst2.Cells(constコード一覧表開始行 + i, constコード一覧表コードID列 + 6) = "SUB画面" And _
                   Dst2.Cells(constコード一覧表開始行 + i, constコード一覧表コードID列 + 7) <> "大分類" Then
                    MsgBox ("「コード一覧表」の" & (constコード一覧表開始行 + i) & "行目:「コード一覧表」のH列に「SUB画面」を設定したときはI列に「大分類」を設定してください。")
                End If
                ' I列(大分類/中分類/小分類)が入っている時はVer0.2:DBデータからデータを取得する場合と考える。
                If Dst2.Cells(constコード一覧表開始行 + i, constコード一覧表コードID列 + 6) <> "" Or _
                    Dst2.Cells(constコード一覧表開始行 + i, constコード一覧表コードID列 + 7) <> "" Then
                    If Dst2.Cells(constコード一覧表開始行 + i, constコード一覧表コードID列 + 2) = "" Then
                        Dst1.Cells(y + cnt, x) = コード一覧表№ & "." & _
                                            Dst2.Cells(constコード一覧表開始行 + i, constコード一覧表コードID列 + 6) & "." & _
                                            Dst2.Cells(constコード一覧表開始行 + i, constコード一覧表コードID列 + 7) & "." & _
                                            コードID
                    Else
                        MsgBox ("「コード一覧表」の" & (constコード一覧表開始行 + i) & "行目:「コード一覧表」のI列(大分類/中分類/小分類)を設定したときはD列(値)を設定しないでください。")
                    End If
                Else
                    Dst1.Cells(y + cnt, x) = コード一覧表№ & "." & _
                                        コードID
                End If
            ' I列(大分類/中分類/小分類)が入っている時はVer0.2:DBデータからデータを取得、エレメントIDがある。
            ElseIf Dst2.Cells(constコード一覧表開始行 + i, constコード一覧表コードID列 + 7) <> "" And コード一覧表№ <> "" Then
                str_wk = Dst2.Cells(constコード一覧表開始行 + i, constコード一覧表コードID列 + 7)
                If str_wk = "大分類" Or str_wk = "中分類" Or str_wk = "小分類" Then
                    Dst1.Cells(y + cnt, x) = コード一覧表№ & "." & _
                                            Dst2.Cells(constコード一覧表開始行 + i, constコード一覧表コードID列 + 6) & "." & _
                                            Dst2.Cells(constコード一覧表開始行 + i, constコード一覧表コードID列 + 7) & "." & _
                                            コードID
                Else
                    MsgBox ("「コード一覧表」の" & (constコード一覧表開始行 + i) & "行目:「コード一覧表」のI列(大分類/中分類/小分類)は。「大分類」「中分類」「小分類」のいずれかにしてください。")
                End If
            ' I列(大分類/中分類/小分類)が入っている時はVer0.2:DBデータからデータを取得、エレメントIDがない。
            ElseIf Dst2.Cells(constコード一覧表開始行 + i, constコード一覧表コードID列 + 7) <> "" And コード一覧表№ = "" Then
                MsgBox ("「コード一覧表」の" & (constコード一覧表開始行 + i) & "行目:「コード一覧表」のI列(大分類/中分類/小分類)のためのコードIDが指定されていないみたいです。")
            Else
                コード一覧表№ = ""
                コードID = ""
            End If
            cnt = cnt + 1
            kuhakuCnt = 0
        Else
            kuhakuCnt = kuhakuCnt + 1
            If kuhakuCnt > 300 Then
                'MsgBox ("「コード一覧表」の№行の最後はENDにしてください。")
                Exit Do
            End If
        End If
        i = i + 1
        ' Ver 0.2 修正end
    Loop        

・「★ツール用コンスタント★」シートに自動的にコード一覧ができる。入力チェック条件を追加した。値を入力するのは「半角英数字」固定にした。(バリエーションは作らないので、数字だけのときなどは、自動作成◎自動生成後に手作業で直すという考え)

・「大分類情報」テーブル。「大中小分類」の大分類の例

・「中分類情報」テーブル。「大中小分類」の中分類の例

・「小分類情報」テーブル。「大中小分類」の小分類の例

・「大中小とSUB画面情報」テーブル。実際にselect、SUB画面を使用する例


2011/03/24 18:00-22:00 今日までで定義エクセルの登録方法を決めたことになる。さらにver0.2とすることにした。簡単なことを簡単に登録して簡単に自動作成◎自動作成できたら最高なんだけど。、、、これでも1年以上考え抜いた結果なわけで。、、あしたからロジック自動作成◎自動作成だ。
今現在、開発途中が「ver0.1zd」、「kaz_PHP自動作成◎自動生成お助けTOOL_仕様書」と「ver0.2」の3つになってしまった。。。食べたいとこからかじっている感じの開発。ちょっと荒っぽいがこれもいい。
2011/05/14 15:00-15:10 ver0.2は「SUB画面」の自動作成◎自動生成をやらないようにした。(やはりロジックが難しいので。)よってここに書いた内容は全てボツとする。