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.
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