Here is the code in VB that will bind the recordset field during run time. Create CRC designer called crUnboundReport with two unbound fields UnboundField1(number type) and UnboundString1 string type. Create two text boxes Text1 and Text2 that will hold the fieldnames in the unbound report.
Dim rs As New ADODB.Recordset
Dim crReport1 As New crUnboundReport
Dim cnn1 As New ADODB.Connection
Dim strCnn As String
dim temp as string
sSQL = "Select Field1, Field2 From Table1"
strCnn = "Driver={SQL server};Server=lra_sql;Database=Project" 'write your own connection string
cnn1.Open strCnn
rs.Open sSQL, cnn1
crReport1.Database.AddADOCommand cnn1, rs.ActiveCommand
temp = "{ado." & rs.Fields(0).Name & "}"
crReport1.Text1.SetText (rs.Fields(0).Name)
crReport1.UnboundField1.SetUnboundFieldSource temp
temp = "{ado." & rs.Fields(1).Name & "}"
crReport1.Text2.SetText (rs.Fields(1).Name)
crReport1.UnboundString1.SetUnboundFieldSource "{ado.VisitName}"
crReport1.UnboundField2.SetUnboundFieldSource temp
crReport1.DiscardSavedData
'bind your own CRViewer
frmPreview.CRViewer1.ReportSource = crReport1
frmPreview.CRViewer1.ViewReport
frmPreview.Show