randall2nd
Programmer
Below is some code I got from tlhawkins on Jun 26, 2001. I need it to connect to an Excel file.
this is what I changed
DSNtemp = "DRIVER={Microsoft Excel Driver (*.xls)};";
DSNtemp = DSNtemp & "DBQ=d:\data\mydb.xls";
only it will not connect
[Microsoft][ODBC Excel Driver] External table is not in the expected format.
is the error i get.
What am i doing wrong?
What would my SELECT statement look like?
Is there a better way to get at the info in an Excel file?
Randall2nd
this is what I changed
DSNtemp = "DRIVER={Microsoft Excel Driver (*.xls)};";
DSNtemp = DSNtemp & "DBQ=d:\data\mydb.xls";
only it will not connect
[Microsoft][ODBC Excel Driver] External table is not in the expected format.
is the error i get.
What am i doing wrong?
What would my SELECT statement look like?
Is there a better way to get at the info in an Excel file?
Code:
<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()>
<!---
I believe IQOF188 is the author of this code.
This is coded to work for an Access database but I believe it will work for excell as well. Just change the database driver.
--->