¿Cambiar la base de datos de origen de un report?

Mi aplicación puede disponer de diferentes bases de datos, las cuales deben ser usadas por un mismo report (Crystal Report 8). ¿Cómo puedo cambiar en tiempo de ejecución la BBDD de la que sacará los datos el report?. Estas BBDD están en el HD del ordenador y accedo a ellas por DAO.
¿Tienes algún ejemplo o idea de lo tengo que hacer?. Debo hacerlo desde Visual C++, pero creo que podré adaptar cualquier código de VB.

1 Respuesta

Respuesta
1
Bueno pues como sabrs cada uno tiene su forma de trabajo y eso no significa que lo hga peor o mejor, cada uno hace o suo como más cómodo le sea y si te sientes cómodo p que cambiar, ¿no crees?
Tu forma de trabajo esta bieny sobre lo de CRno t procpes e n poosdis se le coge el truco.
Bueno, de nada sido un placer poer ayudarte hasta tra.
Hola.
Gracias por tu respuesta y por el código, me ha dado alguna idea.
Mi forma de trabajar a la hora de crear los reports es la siguiente:
1º) Creo una consulta (generalmente) que me da los datos que debe ser pasados al informe.
2º) Creo el report en base a esa consulta (por que las relaciones me han dado problemas al crearlas/manejarlas desde CR).
3º) Paso los filtros al informe, cuando procedo a llamarlo desde VisualC++.
Mi problema es que tengo varias BB.DD. (con la misma estructura de tablas, campos y relaciones) y quiero usar el mismo report (además las tablas pueden crearse a voluntad). Buscando por Internet he encontrado una referencia al siguiente código (para VB) para establecer el origen de datos de un report:
CR1.DataFiles(0) = "C:\bbdd.mdb"
No he podido probarlo aún. No se que te parece esta forma de trabajo, mi experiencia con CR es de unos días y ando un poco verde (cosas que me parecen lógicas igual son una burrada ...).
Un Saludo y gracias por tu RÁPIDA respuesta, el Lunes te evaluaré (por si quieres comentarme algo más).
Lo dicho, un cordial saludo.
A ver yo utilizo esto a ver si te sirve:
Private Sub Command2_Click()
' Antes de nada en la bd creo una tabla solo la estructura de la tabla de la que hago los reportes
'conta_imprimir=tabla creada
'conta=tabla principal
'Borra todos los valores almacenados en la tabla utilizada para imprimir
Dim Borrar As Database
Set Borrar = OpenDatabase("v:\Conta\Conta.mdb")
Borrar.Execute "delete * from conta_imprimir"
Borrar.Close
'Inserta los valores de la consulta que queremos en la tabla para imprimir
Dim insertar As Database
Set insertar = OpenDatabase("v:\Conta\Conta.mdb")
'puedes poner cualquier consulta con condiciones
'aqui haces la consulta
Data8.RecordSource = "Select * from conta where codigo='" & Text1.Text & "'" & "and Fecha_apun=#" & DBCombo4.Text & "#"
Data8.Refresh
With Data8.Recordset
.MoveFirst
Do
' aqui insertas los datos de la consulta anterior dentro de la tabla creada insertar.Execute "insert into conta_imprimir(Codigo,Titulo,Fecha_apun,Documento,Linea,Con,Comentario,D,Importe,Debe,Haber,Saldo)" & _
"values ('" & .Fields("Codigo") & "','" & .Fields("Titulo") & "','" & .Fields("Fecha_apun") & "','" & _
.Fields("Documento") & "','" & .Fields("Linea") & "','" & .Fields("Con") & "','" & _
.Fields("Comentario") & "','" & .Fields("D") & "','" & .Fields("Importe") & "','" & _
.Fields("Debe") & "','" & .Fields("Haber") & "','" & .Fields("Saldo") & "')"
.MoveNext
Loop Until .EOF
End With
Insertar.Close
'Manda a imprimir la tabla para imprimir
Data8.RecordSource = "select * from conta_imprimir"
Data8.Refresh
If Data8.Recordset.AbsolutePosition = -1 Then
MsgBox "NO HAY DATOS"
Else
imprimir
End If
End Sub
Private Sub imprimir()
CrystalReport1.Destination = 0 'para mandar a impresora
CrystalReport1.ReportFileName = "v:\Conta\conta_imprimir.rpt" 'ubicacion del informe
CrystalReport1.DiscardSavedData = True 'para que se actualizen los datos
CrystalReport1.WindowState = crptMaximized 'maximiza la ventana
CrystalReport1.Action = 2 'accion de imprimir
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas