« GNUPro FR-V ELF版のビルド | トップページ | TracからMS-Projectに持ってきたデータのカレンダー表示 »

2008年11月 8日 (土)

TracからMS-Project中間報告

VBAちょっといじくってSQLiteのDBから持ってこれるか確認してみました。まずは結果の画面を見てください。

P_3

こんな感じになりました。基準計画を追加してあるのでGanttCalendarより少し情報が多めのチャートになっています。いろいろ試してみましたが、リソース等の計算が難しいため、自動平準化は行わず、リソースの割り当て超過を無視することでなんとか線が引けました。MS-Projectは期間と進捗率をを表示するだけに使うのがいいみたいです。

ということで、割り当て超過や終了見込を見積もるのには、なにか別のものを考える必要があります。あとはアウトラインの階層をつけることが残っています。

使ったVBAはこれです。

Sub Macro4()
    Dim cnDatabase As ADODB.Connection
    Dim rs As New ADODB.Recordset
    Dim row As Integer
    Dim strWork As String
    cnt = "Driver=SQLite3 ODBC Driver; Database=D:\TracLight\projects\trac\tracplugin\db\trac.db" '**** SQLite3.x

    Set cnDatabase = New ADODB.Connection
    cnDatabase.Open cnt

    Sql = "SELECT t.id, "
    Sql = Sql + " t.summary as '概要', "
    Sql = Sql + " t.owner as '担当', "
    Sql = Sql + " a.value as '開始(予)', "
    Sql = Sql + " c.value as '終了(予)', "
    Sql = Sql + " d.value as '進捗率', "
    Sql = Sql + " g.value as '開始(計画)', "
    Sql = Sql + " h.value as '終了(計画)', "
'    Sql = Sql + "t.type AS 'タイプ', "
'    Sql = Sql + "f.value as '終了', "
'    Sql = Sql + "t.milestone as 'マイルストーン', "
'    Sql = Sql + "t.version as 'バージョン', "
    Sql = Sql + " e.value as '状況' "
    Sql = Sql + " from ticket t "
    Sql = Sql + " LEFT JOIN ticket_custom a ON a.ticket = t.id AND a.name = 'due_assign' "
    Sql = Sql + " LEFT JOIN ticket_custom c ON c.ticket = t.id AND c.name = 'due_close' "
    Sql = Sql + " LEFT JOIN ticket_custom d ON d.ticket = t.id AND d.name = 'complete'"
    Sql = Sql + " LEFT JOIN ticket_custom e ON e.ticket = t.id AND e.name = 'condition' "
    Sql = Sql + " LEFT JOIN ticket_custom f ON f.ticket = t.id AND f.name = 'close' "
    Sql = Sql + " LEFT JOIN ticket_custom g ON g.ticket = t.id AND g.name = 'plan_start' "
    Sql = Sql + " LEFT JOIN ticket_custom h ON h.ticket = t.id AND h.name = 'plan_end' "
    rs.Open Sql, cnDatabase
   
    Do Until rs.EOF = True 'レコードがなくなるまでループを回って項目を埋める
        Dim count As Integer
        Dim val As Variant
        Application.ActiveProject.Tasks.Add Name:=rs.Fields(1).Value
        count = Application.ActiveProject.Tasks.count
        val = rs.Fields(6).Value
        If Not IsNull(val) Then
            Application.ActiveProject.Tasks(count).BaselineStart = val
        End If
        val = rs.Fields(7).Value
        If Not IsNull(val) Then
            Application.ActiveProject.Tasks(count).BaselineFinish = val
        End If
        val = rs.Fields(3).Value
        If Not IsNull(val) Then
            Application.ActiveProject.Tasks(count).Start = val
        End If
        val = rs.Fields(4).Value
        If Not IsNull(val) Then
            Application.ActiveProject.Tasks(count).Finish = val
        End If
       
        val = rs.Fields(2).Value
        If Not IsNull(val) Then
            Application.ActiveProject.Tasks(count).ResourceNames = val
        End If
        Application.ActiveProject.Tasks(count).Type = pjFixedDuration '期間固定とする
   
        Application.ActiveProject.Tasks(count).HyperlinkHREF = "http://localhost/trac/tracplugin/ticket/" & rs!ID
        Application.ActiveProject.Tasks(count).Hyperlink = "#" & rs!ID
   
        Application.ActiveProject.Tasks(count).Estimated = False '期間のを見積もりでなくする
        val = rs.Fields(5).Value
        If Not IsNull(val) Then
            Application.ActiveProject.Tasks(count).PercentComplete = val
        End If
   
        rs.MoveNext
        row = row + 1
    Loop
   
End Sub

まだやることはありますがとりあえず参考までアップしておきます。

|

« GNUPro FR-V ELF版のビルド | トップページ | TracからMS-Projectに持ってきたデータのカレンダー表示 »

Trac」カテゴリの記事

MS-Project」カテゴリの記事

VBS」カテゴリの記事

コメント

この記事へのコメントは終了しました。

トラックバック


この記事へのトラックバック一覧です: TracからMS-Project中間報告:

« GNUPro FR-V ELF版のビルド | トップページ | TracからMS-Projectに持ってきたデータのカレンダー表示 »