(I found the answer to my own question) Here's what I used in CR8, if you're good at sql, you will like this alot:
'this code sample illustrates how to pass two records from an ADO recordset, to a report
'that has two formula fields (in the Details section) and NO database connection.
Dim Report As New CrystalReport1
Dim ADOrs As ADODB.Recordset
Dim DBLocation As String
Private Sub Form_Load()
'Show the common dialog to select the sample database
CommonDialog1.ShowOpen
'binds the ADO recordset object to ADO recordset variables
Set ADOrs = CreateObject("adodb.recordset"
'sets cursor location for recordset
'the CursorLocation, CursorType and LockType in this sample are the recommeneded
'choices when working with the Crystal Reports active data driver.
ADOrs.CursorLocation = adUseClient
'open the recordset
ADOrs.Open "select * from customer", "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & CommonDialog1.FileName & ";Persist Security Info=False", adOpenDynamic, adLockBatchOptimistic
'add the ADO recordset to the report
Report.Database.AddADOCommand ADOrs.ActiveConnection, ADOrs.ActiveCommand
'these variables will be used in the Check method to validate the formula fields
Dim x As Boolean
Dim y As String
'Note: once the ADO recordset is added to the report it is referenced as a table object within
'the report
'pass the first field name from the added ADO recordset to the first formula field in the report
Report.FormulaFields(1).Text = Report.Database.Tables(1).Fields(1).Name
'match the field name from the ADO recordset for a column header
Report.Text1.SetText ADOrs.Fields(0).Name
'validate the formula field
Report.FormulaFields(1).Check x, y
'pass the second field name from the added ADO recordset to the second formula field in the report
Report.FormulaFields(2).Text = Report.Database.Tables(1).Fields(3).Name
'match the field name from the recordset for a column header
Report.Text2.SetText ADOrs.Fields(2).Name
'validate the formula field
Report.FormulaFields(2).Check x, y
Screen.MousePointer = vbHourglass
CRViewer1.ReportSource = Report
CRViewer1.ViewReport
Screen.MousePointer = vbDefault
End Sub