Hola a tod@s:
Acabo de tener un "orgasmo intelectual" cuando por fin he podido pasarle al Crystal Reports 6 el recordset de una consulta sin usar formulas.
Era algo que me tenia sacado de quicio los ultimos dos dias, como reflejan mis mensajes anteriores. Y supongo que comprendereis la gran satisfaccion que siento ahora porque seguro que tamb. habreis pasado por algo similar en algun momento.
Así que alla voy a compartirlo con vosotros:
Como sabreis, si lo habeis usado, el "Crystal Reports Designer" añade un form (Form1) al proyecto; el codigo del mismo es:
#*******************************
Option Explicit
Dim Report As New CrystalReport1
Private Sub Form_Load()
CRViewer1.ReportSource = Report
CRViewer1.ViewReport
End Sub
Private Sub Form_Resize()
CRViewer1.Top = 0
CRViewer1.Left = 0
CRViewer1.Height = ScaleHeight
CRViewer1.Width = ScaleWidth
End Sub
#*******************************
Y se queda tan ancho !!
Entoces llegamos nosotros y añadimos el siguiente codigo, que cada uno modificara segun su situacion:
#*******************************
Option Explicit
' Este ya estaba
Dim Report As New CrystalReport1
' Estas definiciones son nuevas
Dim ws As DAO.Workspace
Dim db As DAO.Database
Dim rs As DAO.Recordset
' Si no trabajais con querys esta no hace falta ;-)
Dim query As DAO.QueryDef
Private Sub Form_Load()
' Creamos el espacio de trabajo
Set ws = DBEngine.Workspaces(0)
' Abrimos la base de datos
Set db = ws.OpenDatabase(App.Path & "\Operaciones.mdb")
' Y seleccionamos un query. Daros cuenta que usamos
' el indice de la coleccion de querys en vez del nombre
' del query, como se hacia hasta ahora. (por lo menos yo)
Set query = db.QueryDefs(3)
' Y como es con parametros, definimos el contenido del
' parametro
query![FondoABuscar] = "Bankinter"
' Este query lo que hace es sacar todos lo registros cuyo
' campo Fondo sea igual a "Bankinter"
' Abrimos el recordset del query
Set rs = query.OpenRecordset
' y se lo asignamos al reporte
Report.Database.SetDataSource rs
CRViewer1.ReportSource = Report
' ... y ya esta !!
CRViewer1.ViewReport
End Sub
Private Sub Form_Resize()
CRViewer1.Top = 0
CRViewer1.Left = 0
CRViewer1.Height = ScaleHeight
CRViewer1.Width = ScaleWidth
End Sub
Private Sub Form_Unload(Cancel As Integer)
' Cerramos todo lo que hemos abierto antes.
rs.Close
query.Close
db.Close
ws.Close
Set rs = Nothing
Set query = Nothing
Set db = Nothing
Set ws = Nothing
End Sub
#*******************************
Antes no he dicho que trabajo con DAO y querys. ;-)
Supongo que no tendreis problema en ajustar el ejemplo para recordsets completos o consultas SQL.
En la carpeta Samples del Cr-6 teneis un ejemplo que funciona con ADO:
"Simple Sample Application Proyect"
Si teneis alguna problema, no dudeis en escribir a mi direccion personal
Espero que el ejemplo os sirva.
Bye !!
Un salu2
____________________________
Jose Julio Ruiz
josejrp@iname.com
--------------------------------
(desde Segovia - España)
ICQ => 8834523
--------------------------------
[omitidos los acentos]