micayael,
este es código completo, revísalo y lo que no vayas entendiendo me escribes. Utilizamos este post para todas las dudas.
Código:
Option Explicit
Dim cnn1 As ADODB.Connection
Dim rstEmployees As ADODB.Recordset
Private Sub Command1_Click()
If rstEmployees.State = adStateOpen Then
'Cerramos antes de volver a abrir
rstEmployees.Close
End If
'Configuramos la query
rstEmployees.Source = "SELECT campo1, campo2 FROM tabla"
rstEmployees.Open
'***********************************************************************
'DATAREPORT 1
'***********************************************************************
'Damos nombre a las columnas que en realidad son labels
DataReport1.Sections("sec4").Controls("Etiqueta2").Caption = "nombre_columna1"
DataReport1.Sections("sec4").Controls("Etiqueta3").Caption = "nombre_columna2"
'Le damos una referencia en los textbox de la sección detalle(que en este caso se llama sec1)
'a los campos de la SELECT definida anteriormente, en el momento que asignemos el recordset
'al datareport, éste(el datareport) sabrá de que campos coger la información
DataReport1.Sections("sec1").Controls("Texto0").DataField = "campo1"
DataReport1.Sections("sec1").Controls("Texto1").DataField = "campo2"
Set DataReport1.DataSource = rstEmployees
DataReport1.Show
'***********************************************************************
'No cerramos el recordset porque se irán los datos del report
End Sub
Private Sub Form_Load()
Dim strCnn As String
' Abre una conexión.
strCnn = "Provider=sqloledb;" & _
"Data Source=srv;Initial Catalog=pubs;User Id=sa;Password=; "
Set cnn1 = New ADODB.Connection
cnn1.Open strCnn
' Configura el recordset
Set rstEmployees = New ADODB.Recordset
rstEmployees.ActiveConnection = cnn1
rstEmployees.CursorType = adOpenKeyset
rstEmployees.LockType = adLockOptimistic
End Sub
Private Sub Form_Unload(Cancel As Integer)
'Cierra y libera memoria
rstEmployees.Close
Set rstEmployees = Nothing
cnn1.Close
Set cnn1 = Nothing
End Sub