Data Report sin Base de Datos

Si alguien pudiera echarme una mano...
Mi problema: Necesito imprimir resultados de un programa en un informe. Mi programa no maneja base de datos. El DataReport ya lo tengo agregado con una rptLabel pero al ejecutarlo desde el programa esta no aparece, solo aparece un mensaje: Error en origen de datos...

1 Respuesta

Respuesta
2
Para lo que quieres realizar debes crear una BASE DE DATOS FALSA por llamarlo de alguna manera creando objetos recordset, un pequeño ejemplo:
Function CreaBD(List01 As ListBox, List02 As ListBox) As ADODB.Recordset
'(Se supone que estoy trabajando con Controles ListBox)
'Esta d¿funcion recibe como parametros a los listbox de mi formulario por eso se coloca List01 as ListBox
'La funcion es del tipo ADODB.Recordset
On Error GoTo ERRORF
Dim Columna As Long ' Declaro una variable para el for como el tipico i
Dim RFalso As ADODB.Recordset
Set RFalso = New ADODB.Recordset
With RFalso
.Fields.Append "Campo1", adVarChar, 250 ' Aca estamos creando los campos de nuestra tabla
.Fields.Append "Campo2", adVarChar, 250
End With
RFalso.Open
With RFalso
For Columna = 0 To List01.ListCount - 1
.AddNew ' Aca le entragamos los datos que se encuentran listados en los listbox
.Fields(0).Value = List01.List(Columna)
.Fields(1).Value = List02.List(Columna)
Next
End With
Set CreaBD = RFalso
Exit Function
ERRORF:
End Function
Private Sub Command1_Click() ' En el evento click de uno de los botones colocamos el codigo para realizar el llamado al datareport y demases cosas
On Error Resume Next
Dim BRFalso As ADODB.Recordset ' Creamos un nuevo objeto recordset
Dim NumSeccion As String ' Para las Secciones del datareport
Set BRFalso = CreaBD(ListBox1, ListBox2) ' Le damos a la funcion anterior los datos necesarios (los cuales se encuentran en los ListBox del formulario) y entregamos el resultado a BRFalso abriendo el objeto.
If Not BRFalso Is Nothing Then ' Averiguamos si contiene algo
NumSeccion = "Sección1" ' Entregamos la secciona a trabajar
With DataReport1
' Se supone que en cada una de las secciones del datareport ya tenemos las etiquetas definidas y cada una con su nombre
' entonces comensamos a entregarle los datos contenidos en nuestra base falsa
.Sections(NSeccion).Controls.Item("Rut").DataField = "Campo1" ' Aca entregamos los datos del Campo1 a la etiqueta "Rut"
' Aca entregamos los datos del Campo2 a la etiqueta "Nombre"
.Sections(NSeccion).Controls.Item("Nombre").DataField = "Campo2"
' A las etiquetas anteriores les puse Rut y Nombre a modo de ejemplo.
' La seccion anterior siempre debe contener datos que provengan de algun recordset
' ya sea por el metodo convencional o por este metodo.
' En las otras secciones (segun como sean los casos) pueden ir datos dados sin recordset.
' Por ejemplo en la seccion4:
NumSeccion = "Sección4"
' Se supone que tenemos creadas dos etiquetas en esta seccion una llamado fecha y otra llamado hora a las
' cuales le entregamos la fecha y hora del sistema.
.Sections("NumSeccion").Controls.Item("fecha").Caption = CStr(Date)
.Sections("NumSeccion").Controls.Item("hora").Caption = CStr(Time)
' Tambien podemos trabajar de esta manera en la seccion3, por ejemplo:
' Creamos en esa secion una etiqueta llamada comentario que dira lo siguiente:
.Sections("Sección3").Controls.Item("comentario").Caption = "DataReport sin base de datos!!!"
Set .DataSource = BRFalso ' Ahora le entregamos el recordset al DataSource del DataReport
.Show ' Y lo llamamos.
If BRFalso.State = adStateOpen Then BRFalso.Close ' Preguntamos si el recordset se encuentra abierto si es asi lo cerramos.
Set BRFalso = Nothing ' Liberamos el recurso.
End With
End If
End If
End Sub
Bueno eso seria.
ok gracias... voy a estudiarlo. Cualquier cosa si me quedo varado te molesto otra vez pues es un programa para mi tesis y me tienen correteado.
Por ahora te digo que lo del recordset no lo tengo muy claro pero lo estudiaré. Pronto me comunicaré contigo... thanks
Gracias.
Solo una cosa, te falto puntuar y cerrar la pregunta.
Y espero que mi respuesta te fuera de utilidad.
Bye.
Claro, tu respuesta fue de gran utilidad... Gracias... pero así como voy progresando van surgiendo nuevos problemas... ahora necesito saber como presentar una imagen de un PictureBox en un DataReport... si me pudieses ayudar estaría agradecido.
Solo agradecimientos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas