Forget CFGRAPH in this case... SBennett is right. You have 2 solutions :
- the first one, buy a third-party product like KavaChart, PopChart Server or CFX_graphicsserver.
- The second one is to use Excel to create the graph and export it to gif or jpg...
Here's an example :
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Untitled</title>
</head>
<body>
<cfquery name="qM1" datasource="MydB">
SELECT MyValues1
FROM T1
</cfquery>
<cfquery name="qM2" datasource="MydB">
SELECT MyValues2
FROM T2
</cfquery>
<!--- Try to connect to the Excel application object --->
<CFTRY>
<!--- If it exists, connect to it --->
<CFOBJECT
ACTION="CONNECT"
CLASS="Excel.Application"
NAME="objExcel"
TYPE="COM">
<CFCATCH>
<!--- The object doesn't exist, so create it --->
<CFOBJECT
ACTION="CREATE"
CLASS="Excel.Application"
NAME="objExcel"
TYPE="COM">
</CFCATCH>
</CFTRY>
<CFSCRIPT>
// Open Excel in the background
objExcel.Visible = false;
// Disable client alerts such as: 'Save this workbook?'
objExcel.DisplayAlerts = false;
// Define the workbooks object
objWorkBook = objExcel.Workbooks;
// Add a new workbook
objOpenedBook = objWorkBook.Add();
// Get the WorkSheets' collection
objWorkSheets = objExcel.WorkSheets;
// Add a new worksheet (this will contain our data)
objWorkSheet = objWorkSheets.Add();
// We cannot use the Cells(1,1) syntax, so we have to create a range
// for EVERY value we want to insert -- yep, this really sucks.
for(Loop1=1; Loop1 LTE #qM1.RecordCount#; Loop1 = Loop1 + 1){
objRange = objExcel.Range("A#Loop1#:A
objRange.value = #qM1.MyValues1[Loop1]#;};
for(Loop2=1; Loop2 LTE #qM2.RecordCount#; Loop2 = Loop2 + 1){
objRange = objExcel.Range("B#Loop2#:B
objRange.value = #qM2.MyValues2[Loop2]#;};
// Get all the values we just inserted
objFullRange = objExcel.Range("A1:B#qM2.R
// Select the range of values we inserted
objActiveRange = objFullRange.Select();
// Return the charts collection
objCharts = objExcel.Charts;
// Add a new chart (this will be applied to our active selection)
objExcelChart = objCharts.Add();
// Set the chart type (see end-of-page for all chart types)
objExcelChart.Type = 4;
objExcelChart.export("#Get
// Close the document
objWorkBook.Close();
// Quit Excel
objExcel.Quit();
// Release the object
objExcel = "Nothing";
</CFSCRIPT>
<IMG src="MyChart.jpg">
</body>
</html>
Hope it will help,
Cyril
Main Topics
Browse All Topics





by: SBennettPosted on 2002-03-04 at 16:43:28ID: 6840262
From what I understand, It is not posible to have two lines on a <cfgraph type="line">.By using <cfgraphdata>, you can make a line that gets it's data from multiple sources, but I don't think thats what you had in mind.
I'll let you know if I can find any alternatives,
Scott