randall2nd
Programmer
I am trying to connect to an excel file as a table. does anyone have a sample of creating the ODBC DSN 'on-the-fly'. If it is not for an excel file that is fien just need to know how to do this.
Follow along with the video below to see how to install our site as a web app on your home screen.
Note: This feature may not be available in some browsers.
<cfobject type="COM"
name="MyConn"
class="ADODB.Connection"
action="CREATE">
<CFSCRIPT>
DSNtemp = "DRIVER={Microsoft Access Driver (*.mdb)};";
DSNtemp = DSNtemp & "DBQ=d:\data\mydb.mdb";
MyConn.Open("#DSNtemp#", "", "", -1);
SQL = "SELECT * FROM MyTable";
MyRecordset = MyConn.Execute(SQL, 0, 8);
MyFields = MyRecordset.Fields;
/* Make a variable for recordcount */
RecordCount = 0;
while(NOT MyRecordset.EOF){
RecordCount = RecordCount + 1;
MyRecordset.MoveNext();
}
Columns = "";
</CFSCRIPT>
<!--- Get the Column Name from the MyFields collections --->
<CFLOOP COLLECTION="#MyFields#" ITEM="this">
<CFSET Columns = ListAppend(Columns, this.Name)>
</CFLOOP>
<!--- Populate a newly made query with columns --->
<CFSET MyRecords = QueryNew(Columns)>
<!--- Add 'RecordCount' rows to hold the data --->
<CFSET QueryAddRow(MyRecords, RecordCount)>
<!--- Go to the first row of the recordset --->
<CFSET MyRecordset.MoveFirst()>
<!--- And populate the recordset... --->
<CFLOOP FROM="1" TO="#RecordCount#" INDEX="i">
<CFLOOP COLLECTION="#MyFields#" ITEM="this">
<CFSET QuerySetCell(MyRecords, Trim(this.name), this.value, i)>
</CFLOOP>
<CFSET MyRecordset.MoveNext()>
</CFLOOP>
<!--- Ouput the data like this: --->
<CFOUTPUT QUERY="MyRecords">
<TR>
<CFLOOP LIST="#MyRecords.ColumnList#" INDEX="this">
<TD>#Evaluate(this)#</TD>
</CFLOOP>
</TR>
</CFOUTPUT>
</TABLE>
<!--- Close the ODBC connection (like you do in ASP)--->
<CFSET MyConn.Close()>