kazpgmの日記

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

TOOL更新_Ver0.1の『バグ情報など』に14(1)(2)(3).を追加した。3月9日からの続き。

TOOL更新_Ver0.1の『バグ情報など』に14(1)(2)(3).を追加した。3月9日からの続き。

1.201103092038のTOOL修正内容.txt 3月9日からの続き。
b.から修正した。2011/03/29にver0.1(201103092038)がvectorに載りました。 補足:「a.」は3月9日のブログ参照


b.『バグ情報など』(http://kazpgm.ddo.jp/bugInfo.html)の14.(1)をツールに反映しました。
 14.(1)1番目が自TBL(CS)でない場合(例:TBL(CA)のとき)、自動作成◎自動生成されたSQLが
 「FROM left join m_category ca on (cs.category = ca.category) m_subcategory cs 」になってしまいSQLエラーになる。
 「FROM m_subcategory cs left join m_category ca on (cs.category = ca.category) 」になるように修正する。

  ■201103092038_からの作成例\kaz_PHP自動作成◎自動生成お助けTOOL\
   『kaz_PHP自動作成◎自動生成お助けTOOL』のVBA『module1』 修正
  ■kaz_PHP自動作成◎自動生成お助けTOOL\
   『kaz_PHP自動作成◎自動生成お助けTOOL』のVBA『module1』 修正

  1582行目
  <<修正前>>
    If is現TblItem(j) = False Then
        TBL略名 = LCase(Trim(Cells(j, contTBL略名列)))
        TBL名 = joinTbl名文字列取得(TBL略名, LCase(Trim(Cells(cont当テーブル略名行, cont当テーブル略名列))))
    Else
        TBL略名 = LCase(Trim(Cells(cont当テーブル略名行, cont当テーブル略名列)))
        TBL名 = LCase(Cells(cont当テーブルID行, cont当テーブルID列)) & " " & TBL略名
    End If
    If InStr(TBL名たち, TBL名) = 0 Then ' テーブル名たちの中にまだテーブル名が無いときのみ追加する。
        TBL名たち = TBL名たち & TBL名
    End If

  <<修正後>>
    If is現TblItem(j) = False Then
        TBL略名 = LCase(Trim(Cells(j, contTBL略名列)))
        TBL名 = joinTbl名文字列取得(TBL略名, LCase(Trim(Cells(cont当テーブル略名行, cont当テーブル略名列))))
    Else
        TBL略名 = LCase(Trim(Cells(cont当テーブル略名行, cont当テーブル略名列)))
        TBL名 = LCase(Cells(cont当テーブルID行, cont当テーブルID列)) & " " & TBL略名
    End If
    If InStr(TBL名たち, TBL名) = 0 Then ' テーブル名たちの中にまだテーブル名が無いときのみ追加する。
        If is現TblItem(j) = False Then
            TBL名たち = TBL名たち & TBL名
        Else
            TBL名たち = TBL名 & TBL名たち
        End If
    End If

  2153行
  <<修正前>>
    If is現TblItem(j) = False Then
        TBL略名 = LCase(Trim(Cells(j, contTBL略名列)))
        TBL名 = joinTbl名文字列取得(TBL略名, LCase(Trim(Cells(cont当テーブル略名行, cont当テーブル略名列))))
    Else
        TBL略名 = LCase(Trim(Cells(cont当テーブル略名行, cont当テーブル略名列)))
        TBL名 = LCase(Cells(cont当テーブルID行, cont当テーブルID列)) & " " & TBL略名
    End If
    If InStr(TBL名たち, TBL名) = 0 Then ' テーブル名たちの中にまだテーブル名が無いときのみ追加する。
        TBL名たち = TBL名たち & TBL名
    End If

  <<修正後>>
    If is現TblItem(j) = False Then
        TBL略名 = LCase(Trim(Cells(j, contTBL略名列)))
        TBL名 = joinTbl名文字列取得(TBL略名, LCase(Trim(Cells(cont当テーブル略名行, cont当テーブル略名列))))
    Else
        TBL略名 = LCase(Trim(Cells(cont当テーブル略名行, cont当テーブル略名列)))
        TBL名 = LCase(Cells(cont当テーブルID行, cont当テーブルID列)) & " " & TBL略名
    End If
    If InStr(TBL名たち, TBL名) = 0 Then ' テーブル名たちの中にまだテーブル名が無いときのみ追加する。
        If is現TblItem(j) = False Then
            TBL名たち = TBL名たち & TBL名
        Else
            TBL名たち = TBL名 & TBL名たち
        End If
    End If

  2624行目
  <<修正前>>
    If is現TblItem(j) = False Then
        TBL略名 = LCase(Trim(Cells(j, contTBL略名列)))
        TBL名 = joinTbl名文字列取得(TBL略名, LCase(Trim(Cells(cont当テーブル略名行, cont当テーブル略名列))))
    Else
        TBL略名 = LCase(Trim(Cells(cont当テーブル略名行, cont当テーブル略名列)))
        TBL名 = LCase(Cells(cont当テーブルID行, cont当テーブルID列)) & " " & TBL略名
    End If
    If InStr(TBL名たち, TBL名) = 0 Then ' テーブル名たちの中にまだテーブル名が無いときのみ追加する。
        TBL名たち = TBL名たち & TBL名
    End If

  <<修正後>>
    If is現TblItem(j) = False Then
        TBL略名 = LCase(Trim(Cells(j, contTBL略名列)))
        TBL名 = joinTbl名文字列取得(TBL略名, LCase(Trim(Cells(cont当テーブル略名行, cont当テーブル略名列))))
    Else
        TBL略名 = LCase(Trim(Cells(cont当テーブル略名行, cont当テーブル略名列)))
        TBL名 = LCase(Cells(cont当テーブルID行, cont当テーブルID列)) & " " & TBL略名
    End If
    If InStr(TBL名たち, TBL名) = 0 Then ' テーブル名たちの中にまだテーブル名が無いときのみ追加する。
        If is現TblItem(j) = False Then
            TBL名たち = TBL名たち & TBL名
        Else
            TBL名たち = TBL名 & TBL名たち
        End If
   End If


c.『バグ情報など』(http://kazpgm.ddo.jp/bugInfo.html)の14.(2)をツールに反映しました。
  14.(2)「FROM m_subcategory cs left join m_category ca on (cs.category = ca.category) 」のJOINキーの関係で
  自動作成◎自動生成されたSQLのWhere文
  「WHERE category = $category AND subcategory = $subcategory」のcategoryが
  m_categoryのものかm_subcategoryのものかはっきりしないというSQLエラーがでる。
  「WHERE cs.category = $category AND cs.subcategory = $subcategory」になる様に修正する。

  ■201103092038_からの作成例\kaz_PHP自動作成◎自動生成お助けTOOL\
   『kaz_PHP自動作成◎自動生成お助けTOOL』のVBA『module1』 修正
  ■kaz_PHP自動作成◎自動生成お助けTOOL\
   『kaz_PHP自動作成◎自動生成お助けTOOL』のVBA『module1』 修正

  540行目
  <<修正前>>
    wherePkeyString = wherePkeyString & " AND " & idxPk列順配列(i) & _
        " = $" & idxPk列順配列(i) & Chr(13) & Chr(10)
  <<修正後>>
    wherePkeyString = wherePkeyString & " AND " & TBL略名 & "." & idxPk列順配列(i) & _
        " = $" & idxPk列順配列(i) & Chr(13) & Chr(10)

  1734行目
  <<修正前>>
    wherePkeyString = wherePkeyString & " AND " & idxPk列順配列(i) & _
        " = $" & idxPk列順配列(i) & Chr(13) & Chr(10)
  <<修正後>>
    wherePkeyString = wherePkeyString & " AND " & TBL略名 & "." & idxPk列順配列(i) & _
        " = $" & idxPk列順配列(i) & Chr(13) & Chr(10)


d.『バグ情報など』(http://kazpgm.ddo.jp/bugInfo.html)の14.(3)をツールに反映しました。
 14.(3)小分類用に自動作成◎自動生成されたSQLのWhere文
  「FROM m_extracategory ce left join m_category ca on (ce.category = ca.category)
  left join m_subcategory cs on (ce.category = cs.category, ce.subcategory = cs.subcategory) 」
  の間違いでSQLエラーがでる。
  「FROM m_extracategory ce left join m_category ca on (ce.category = ca.category)
  left join m_subcategory cs on (ce.category = cs.category and ce.subcategory = cs.subcategory) 」
  になる様に修正する。

  ■201103092038_からの作成例\kaz_PHP自動作成◎自動生成お助けTOOL\
   『kaz_PHP自動作成◎自動生成お助けTOOL』のVBA『module1』 修正
  ■kaz_PHP自動作成◎自動生成お助けTOOL\
   『kaz_PHP自動作成◎自動生成お助けTOOL』のVBA『module1』 修正

  4924行目
  <<修正前>>
    Do While 結果シート.Cells(j, cont項目名ID列) <> ""
        If 結果シート.Cells(j, contPK列) <> "" Then
            wkStr = wkStr & mainTBL略名 & "." & Trim(LCase(結果シート.Cells(j, cont項目名ID列))) & " = " & _
                        TBL略名 & "." & Trim(LCase(結果シート.Cells(j, cont項目名ID列))) & ", "
        End If
        j = j + 1
    Loop
    If wkStr <> "" Then
        wkStr = Left(wkStr, Len(wkStr) - Len(", "))
    End If

  <<修正後>>
    Do While 結果シート.Cells(j, cont項目名ID列) <> ""
        If 結果シート.Cells(j, contPK列) <> "" Then
            wkStr = wkStr & mainTBL略名 & "." & Trim(LCase(結果シート.Cells(j, cont項目名ID列))) & " = " & _
                        TBL略名 & "." & Trim(LCase(結果シート.Cells(j, cont項目名ID列))) & " and "
        End If
        j = j + 1
    Loop
    If wkStr <> "" Then
        wkStr = Left(wkStr, Len(wkStr) - Len(" and "))
    End If

2011/03/15 21:00-01:00 2011/03/16 18:00-23:00 ほかのTBLを参照して値を表示するロジック関連を修正したことになる。この、「ほかのTBLを参照」しての自動作成◎自動生成はなかなかな難しい。とっても奥深いので。ダメがでたら手作業で直してもらいたい。。。そう、キーになる項目名が同じであることを前提にロジックを作っている。と言っておこう。ダメが起こるのは大体これのせい。

2011/03/24 22:00-23:00 Vectorに登録依頼しましたver0.1(201103092038)です5日ぐらいしたら見れます。
2011/03/29 0:30 ver0.1(201103092038)がvectorに載りました。