%@ LANGUAGE = "VBScript" %> <% Option Explicit Response.Buffer = true Response.ContentType = "image/gif" ' ContentTypeを"image/gif"モードに設定 Dim CSQLEng ' CaoSQLEngine Dim CSQLCtrl ' CaoSQLController Dim CSQLHis ' CaoSQLHistory Dim ItemNames ' アイテム名一覧 Dim strCtrlName ' 渡されるパラメータ コントローラ名 Dim strDate ' 渡されるパラメータ 日付 Dim DBRs ' ADODBレコードセットオブジェクト Dim strSQL ' SQL文 Dim startDate,endDate,tmpDate ' 抽出条件 Dim i strCtrlName = Request("CtrlName") ' 渡されてきたパラメータコントローラ名を取得 strDate = Request("Date") ' 渡されてきたパラメータ日付を取得 ' CaoSQLEngine作成 Set CSQLEng = CreateObject("CaoSQL.CaoSQLEngine") ' CaoSQLHistory取得 Set CSQLHis = CSQLEng.CaoSQLHistory ' CaoSQLController取得 Set CSQLCtrl = CSQLEng.Controller(strCtrlName) ItemNames = CSQLCtrl.ItemNames ' アイテム名一覧取得 ' 日付チェック strDate = Request("Date") If (InStr(strDate ,"-1") <> 0) Or (strDate ="") Then strDate = FormatDateTime(Now(),vbShortDate) End If If (strDate <>"") And (IsDate(strDate)=False) Then Response.Write("日付の指定が異常です") Response.End End If ' 抽出条件の日付を取得 startDate = strDate & " 00:00:00" ' 指定日 (Defaultで0時0分0秒になってるはずだが,追加する) tmpDate = DateAdd("d",1,strDate) ' 指定日の次の日を求める endDate = DateAdd("s",-1,tmpDate) ' 次の日から-1秒する Dim oChartSpace,oConst Dim chrt,Seri,categories,values ' Officeコンポーネントの作成 Set oChartSpace = Server.CreateObject("OWC10.ChartSpace") ' OfficeXP Webコンポーネント オブジェクト生成 Set oConst = oChartSpace.Constants ' VBScriptで名前付き定数を使用する為の宣言 ' Chartオブジェクトを使ってグラフを書く Set chrt = oChartSpace.Charts.Add ' グラフチャートを追加 chrt.Type = oConst.chChartTypeLine ' チャートのグラフタイプを折れ線グラフに設定 chrt.HasLegend = True ' 凡例の表示 chrt.HasTitle = True ' グラフタイトル表示設定 chrt.Title.Font.Bold = True ' 太字に設定 chrt.Title.Caption = strCtrlName & "のItem値" chrt.Axes(oConst.chAxisPositionLeft).Scaling.Maximum = 32767 ' チャートの上限値設定(縦軸) chrt.Axes(oConst.chAxisPositionLeft).Scaling.Minimum = 0 ' チャートの下限値設定(縦軸) chrt.Axes(oConst.chAxisPositionCategory).TickLabelSpacing = 10 ' チャートの項目軸間隔設定(横軸) chrt.Axes(oConst.chAxisPositionCategory).TickMarkSpacing = 25 ' チャートの項目補助間隔設定(縦) chrt.PlotArea.FlipHorizontal ' 指定されたグラフのすべてのデータ系列を左右に反転 chrt.Axes(oConst.chAxisPositionValue).Position = oConst.chAxisPositionLeft ' 横軸の項目設定 chrt.Axes(oConst.chAxisPositionCategory).HasTitle = True chrt.Axes(oConst.chAxisPositionCategory).Title.Caption = "時間" chrt.Axes(oConst.chAxisPositionCategory).Title.Font.Size = 10 ' 縦軸の項目設定 chrt.Axes(oConst.chAxisPositionValue).HasTitle = True chrt.Axes(oConst.chAxisPositionValue).Title.Caption = "値" chrt.Axes(oConst.chAxisPositionValue).Title.Font.Size = 10 ' アイテム分 ループ for i = LBound(ItemNames) to Ubound(ItemNames) ' SQL文発行 strSQL = "SELECT * FROM caosql_history WHERE" & _ " item_time BETWEEN #" & startDate & "# AND #" & endDate & "#" & _ " AND controller_name='" & strCtrlName & "' AND item_name='" & ItemNames(i) & "'" & _ " ORDER BY item_time, item_time_ms DESC" Set DBRs = CSQLHis.Execute(strSQL) ' DBデータをリテラル化 categories = "" values = "" Do While Not DBRs.EOF categories = categories & FormatDateTime(DBRs("item_time"),vbShortTime) & Chr(9) values = values & DBRs("item_value") & Chr(9) DBRs.MoveNext Loop If (values <> "") Then ' 文字列の終端の余分なタブ文字を削除 categories = Left(categories, Len(categories) - 1) values = Left(values, Len(values) - 1) End if Set Seri= chrt.SeriesCollection.Add ' チャートにグラフ系列を追加 Seri.SetData oConst.chDimCategories, oConst.chDataLiteral, categories ' カテゴリにcategoriesを指定 Seri.SetData oConst.chDimValues, oConst.chDataLiteral , values ' データにvaluesを指定 Seri.Caption = ItemNames(i) ' データのキャプション設定 Seri.Line.Weight = 2 ' グラフライン太さ設定 Set Seri = nothing DBRs.Close next Response.BinaryWrite oChartSpace.GetPicture ("gif", 850, 400) Set chrt = nothing Response.End %>