How to Export a SQL Query to Excel Using Xbasic
Description
Excel files can be generated with data from Xbasic SQL queries in Alpha Anywhere.
Discussion
SQL queries can be made against a database in Xbasic using a SQL::Connection object to create a SQL::ReultSet. A SQL::ResultSet can be transformed into several different formats - including custom formats using the next() method and assembling the data manually. To transform data into an Excel format, however, you don't need to do it manually. The toExcel() method will generate an Excel file that contains the records from the SQL query.
In the example below, a SQL query is made against the Northwind Access database to get all of the Customer records from the Customers table where the Country field is equal to "Spain". The result of the query is then saved in an Excel file called "Customers_Spain.xls". This example was written to be run in an .a5w page:
<%a5
dim cn as SQL::Connection
dim args as SQL::Arguments
' Build the SQL statement to execute
dim sql as c =<<%sql%
SELECT CustomerID, CompanyName, Address, City, Country
FROM Customers
WHERE Country = :COUNTRY
%sql%
' Set the argument "COUNTRY" to "Spain"
args.set("COUNTRY", "Spain")
' Open the connection
if (cn.open("::Name::Northwind_Access") = .f.) then
? "Could not open connection. Error was: " + cn.CallResult
end
end if
' Execute the query
if (cn.execute(sql, args) = .f.) then
? "Error executing SQL query. Error was: " + cn.CallResult
cn.close()
end
end if
' Define file name
dim filename as c = "C:\path\to\Customers.xls"
' Create the Excel File
if (cn.resultSet.toExcel(filename) = .f.) then
' Something went wrong and the Excel file was not created
? "An error occurred. Excel file was not created. Error was: " + cn.resultSet.CallResult
else
' Success!
? "Excel file was created"
end if
' Close the connection
cn.close()
%>For a more control over the Excel file's creation, the Office Namespace can be used to Generate Excel Spreadsheets.
See Also