PARAMETERS tcReportname, tcSQLServer, tcDBName, tcUserID, tcPswd
LOCAL oCR AS CRAXDRT.APPLICATION
LOCAL oRpt AS CRAXDRT.REPORT
LOCAL oDB AS CRAXDRT.DATABASE
LOCAL ocDBT AS CRAXDRT.DatabaseTables
LOCAL oDBT AS CRAXDRT.DatabaseTable
LOCAL oConn AS ADODB.CONNECTION
LOCAL oRS AS ADODB.Recordset
DO CASE
CASE PCOUNT() = 0
* Handle the ADO
tcSQLServer = 'SQLSERVER'
tcDBName = 'Reporting_Data'
tcUserID = 'report'
tcPswd = 'report'
tcReportname= 'conditional_approvals_oledb.rpt'
ENDCASE
cFileName = tcReportname
cConnString = "User ID=" + ALLTRIM(tcUserID) + ";"
cConnString = cConnString + "Password=" + ALLTRIM(tcPswd) + ";"
cConnString = cConnString + "Initital Catalog=" + ALLTRIM(tcDBName) + ";"
cConnString = cConnString + "Data Source=" + ALLTRIM(tcSQLServer)
oConn = CREATEOBJECT("ADODB.Connection")
oConn.Provider = "SQLOLEDB.1"
oConn.ConnectionString = cConnString
oConn.OPEN()
oRS = CREATEOBJECT("ADODB.RecordSet")
oCR = CREATEOBJECT("CrystalRuntime.Application.9")
oRpt = oCR.OpenReport(cFileName)
* Create the Database object
oDB = oRpt.DATABASE()
* Get a references to the DatabaseTables collection
ocDBT = oDB.TABLES()
FOR EACH loTable IN oRpt.DATABASE.TABLES
WITH loTable
lcLocation = .Location
*** connect to SQL Server using OLEDB (ConnectionProperties)
loConnProps = loTable.ConnectionProperties
*** delete all existing connection properties
loConnProps.DeleteAll()
*** add new connection properties
loConnProps.ADD("Provider","SQLOLEDB")
loConnProps.ADD("Data Source",tcSQLServer)
loConnProps.ADD("Initial Catalog",tcDBName)
loConnProps.ADD("User ID",tcUserID)
** check for dbl quote - change to chr(34)
** tcPswd = ScrubDblQuote(tcPswd)
loConnProps.ADD("Password", tcPswd)
IF "Proc(" $ lcLocation
lcLocation = STRTRAN(lcLocation,"Proc(","")
lcLocation = STRTRAN(lcLocation,")","")
ENDIF
.Location = tcDBName + ".dbo." + lcLocation
ENDWITH
NEXT loTable
* Get a reference to the DatabaseTable object for table 1
oDBT = ocDBT.ITEM(1)
IF oRpt.HasSavedData
oRpt.DiscardSavedData()
ENDIF
* Set the export options
loExportOptions = oRpt.ExportOptions
loExportOptions.DestinationType = 1 && crEDTDiskFile
loExportOptions.FormatType = 31
loExportOptions.DiskFileName = "C:\Export.PDF"
** oRpt.DiscardSavedData()
oRpt.ReadRecords
oRpt.EXPORT(.F.)
Original