Crystal Report - SQLQueryString setdatasource

 
Vista:

SQLQueryString setdatasource

Publicado por LadyCadaver (8 intervenciones) el 21/02/2005 17:23:19
Hola,
Estoy haciendo un reporte desde VB6 con Crystal Reports. Por lo que he visto es necesario crear un RPT con las tablas implicadas en el reporte. Luego desde VB se abre este RPT, pero he visto que hay dos formas de pasar una query a VB (puesto que tengo que filtrar por una serie de campos). Una es abrir una conexion ADO y pasarle el Resultset (Report.Database.SetDataSource) y otra es pasandole la query Report.SQLQueryString. Qué diferencia hay entre los métodos? Cual tarda menos en ejecutarse?
Otra pregunta que tengo es si cambio la base de datos contra la que se ejecutan los reportes, tengo que cambiar todos y cada uno de los RPTs para cambiar la conexion?? Se puede hacer por código dejando en los RPTs la antigua conexion??

Muchas gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:SQLQueryString setdatasource

Publicado por Gerardo (571 intervenciones) el 22/02/2005 02:34:02
Ke tal lady.
A tu primera pregunta, en realidad no he utilizado las instrucciones ke mensionas, en cambio he utilizado la siguiente para realizar un filtro:
La instrucción para enviar un filtro a CR es la siguiente:

CR1.SelectionFormula = "{TuTabla.TuCampo1}=" & VAR1 & " and {TuTabla.TuCampo2} =" & VAR2

X lo menos lo he hecho en la versión 6 y 8 de CR, igual y no sea la versión ke estás utilizando.
Ahora bien, se ke puedes a través de un recordset enviar la información a tu reporte, esto es, creas la plantilla en tu reporte y envias tus datos del recordset al reporte, creo ke es una forma más rápida ya ke envias sólo los datos ke rekieres, esto no lo he intentado :-), pero seria otra opción.

A tu segunda pregunta, no tienes ke crear nuevamente los reportes, solo tienes ke cambiar (y esto hasta donde se lo tienes ke hacer, amen de ke le envies la cadena de conexión desde código) la conexión en CR y es fácil database - log on / off server ... y desde el explorador de datos cambias a tu nueva conexión. Claro está, la conservación de la estructura de la DB es importante.

Saludos.

PD. el cambio de DB ke explico es x ejemplo si deseas cambiar de una DB en ACCESS a una DB en SQL Server. Si el tipo de DB es la misma, solo cambia la cadena de conexión a través de código.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:SQLQueryString setdatasource

Publicado por LadyCadaver (8 intervenciones) el 22/02/2005 10:08:57
Muchas gracias por tu repuesta Gerardo.
La versión que uso de Crystal es la 10. Había visto eso que me comentas de las fórmulas para filtrar los datos, pero me parece más sencillo hacerlo por SQL directamente, filtrando en el select.

Sobre lo de las bases de datos me refería a que teniendo una misma base de datos pasar de un entorno de desarrollo a uno de producción, es decir, cambiar sólo nombre de máquina y base de datos. Me da la sensación que tengo que cambiar el rpt pues ahí es donde se hace una conexión con la base de datos, aunque luego yo genere el reporte abriendo una conexión ADO y le mande el recordset al reporte. Es decir que tengo dos conexiones... una la del rpt y otra en el código VB.

No se si me he explicado... de todos modos gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:SQLQueryString setdatasource

Publicado por Carlos Morales (2 intervenciones) el 22/02/2005 16:15:34
Hola Lady, no se si te me equivoque, lo que queres decir es tenes dos tablas A y B(como origen) ambas tienen el mismo contendio pero informcion distinta, queres sacar la informacion de una y de otra en partes distintas SalidaA y salidaB, entonces queres saber si se puede de lo que ya tenes cambiar el origen?..
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:SQLQueryString setdatasource

Publicado por LadyCadaver (8 intervenciones) el 22/02/2005 17:43:06
No exactamente es eso... yo tengo dos bases de datos en dos máquinas diferentes. Las pruebas las ejecuto en un maquina de desarrollo cuyo nombre de máquina es diferente al de producción (donde luego se ejecutaría todo). Lo que pasa es que cuando pase todo de desarrollo a producción tendría que cambiar en los RPTs la conexión, lo cual es un engorro porque tendría que entrar en cada fichero, abrirlo, cambiarlo y guardarlo... y preguntaba si había alguna forma de cambiar eso desde código Visual Basic.

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:SQLQueryString setdatasource

Publicado por Hitbit (4 intervenciones) el 22/02/2005 18:00:19
Puedes pasar la localización de la base de datos por código en tiempo de ejecución.
Estos datos son para CR9, espero que en la versión 10 sea igual.

Te anoto el código:

' Definir Report
Private crApp As New CRAXDRT.Application
Private crReport As New CRAXDRT.Report

'Abrir reporte
Set crReport = crApp.OpenReport("reporte1.rpt", 1)

******* ESTA ES LA PARTE QUE TE INTERESA ***
'Pasarle la localizacion de la DB
crReport.Database.Tables.Item(1).Location = "c:\miBD\basedatos.mdb"

'Pasarle la consulta mediante SQL
crReport.SQLQueryString = SQLString

'Cargar y visualizar
crViewer.ReportSource = crReport
crViewer.ViewReport
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:SQLQueryString setdatasource

Publicado por LadyCadaver (8 intervenciones) el 25/02/2005 09:07:12
Al final he optado por hacer la conexion con ADO.connection y crear el reporte sin necesidad de RPT o de los diseñadores de VB. Con esto consigo que si cambio de base de datos, no tengo que entrar en los templates para cambiarlo.
Gracias a todos por vuestros comentarios.

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

excelente tu idea

Publicado por clemente marcos (1 intervención) el 13/03/2008 20:50:45
Yo tenia las mismas dudas.. pero gracias a tus indicaciones ya quedo 1000 gracias.. jiji att cmg
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar