Problemas VB 2003 Vs Crystal Reports

03/02/2006 - 00:31 por Antonio Herrera | Informe spam
Estoy trabajando en un programa que reportea con Crystal Reports 9, y
tengo un problema que aún leyendo la ayuda del Business Objects no he
logrado resolver.

A mis reportes no puedo referenciarlos correctamente a la base de datos
y ni siquiera al correspondiente servidor que debiera, entonces conforme
tengo mis reportes guardados desde el diseño, con la cadena de conexión
de origen, es como trabajan, es decir, si los guardo con una conexión
desde el diseñador de reportes del Crystal, pues es la única conexión
que respeta, y la única con la que trabaja.

Y la verdad, tengo mucho tiempo con este error, ya no sé que hacer.

Gracias de antemano, por leer mi problema.

Antonio Herrera

Preguntas similare

Leer las respuestas

#1 Lubi
03/02/2006 - 09:22 | Informe spam
Hola Antonio

Yo tenia un problema muy parecido la unica solucion k le pudo yo dar
fue:

Cargar el informe .rpt en un objeto reportdocument,

despues ir recorriendo todas las tablas de este objeto reportdocument e
ir asignandole a cada una el servidor y la base de datos

Un saludo
Respuesta Responder a este mensaje
#2 LeMaNú
03/02/2006 - 12:24 | Informe spam
Hola!
Si usa MS VBdotNET esto te servirá:

1. Crea una variable de reporte y un recordset, así:
Private Report As New CrystalDecisions.CrystalReports.Engine.ReportDocument
Dim r As New ADODB.Recordset

2. Carga el reporte
Report.Load(CurDir() & "\crptMargenVentas.rpt")

3. Abre el recordset según tu conexión, en mi caso se llama CN:
strSQL = "SELECT * FROM TMP_DOCUMENTOSDETALLE "
r.Open(strSQL, CN, ADODB.CursorTypeEnum.adOpenDynamic,
ADODB.LockTypeEnum.adLockOptimistic)

4. Aplica el recordset como origen de datos del reporte:
Report.SetDataSource(r)

el resto ya lo sabes hacer:
Report.Refresh()
Me.Crv.ReportSource = Report
Me.Crv.Show()


Si tienes dudas o quieres un ejemplo completo, me escribes al email:
que con mucho gusto te envío un ejemplo completo, con
fórmulas y demás cosas.
Respuesta Responder a este mensaje
#3 Antonio Herrera
03/02/2006 - 21:04 | Informe spam
LeMaNú escribió:
Hola!
Si usa MS VBdotNET esto te servirá:

1. Crea una variable de reporte y un recordset, así:
Private Report As New CrystalDecisions.CrystalReports.Engine.ReportDocument
Dim r As New ADODB.Recordset

2. Carga el reporte
Report.Load(CurDir() & "\crptMargenVentas.rpt")

3. Abre el recordset según tu conexión, en mi caso se llama CN:
strSQL = "SELECT * FROM TMP_DOCUMENTOSDETALLE "
r.Open(strSQL, CN, ADODB.CursorTypeEnum.adOpenDynamic,
ADODB.LockTypeEnum.adLockOptimistic)

4. Aplica el recordset como origen de datos del reporte:
Report.SetDataSource(r)

el resto ya lo sabes hacer:
Report.Refresh()
Me.Crv.ReportSource = Report
Me.Crv.Show()


Si tienes dudas o quieres un ejemplo completo, me escribes al email:
que con mucho gusto te envío un ejemplo completo, con
fórmulas y demás cosas.





Gracias, pero sabes que problema tengo? que uso ADO.Net y me gustaria
permanecer con ello, entonces, pues no sé como aplicar este ejemplo
desde ADO, que me hiciste el favor de mandarme.
Respuesta Responder a este mensaje
#4 Antonio Herrera
03/02/2006 - 21:06 | Informe spam
Lubi escribió:
Hola Antonio

Yo tenia un problema muy parecido la unica solucion k le pudo yo dar
fue:

Cargar el informe .rpt en un objeto reportdocument,

despues ir recorriendo todas las tablas de este objeto reportdocument e
ir asignandole a cada una el servidor y la base de datos

Un saludo



Gracias, mira, ya lo hago, pero no aceptan la configuración que les
introduzco, simplemente, no me hacen caso, y pues según he visto, con el
SP4 y SP5 se arregla, pero no he logrado que funcione.
Respuesta Responder a este mensaje
#5 Lubi
06/02/2006 - 18:40 | Informe spam
Hola este es mas o menos mi codigo espero k te sirva, esta en vb.net


' CARGAR INFORME
rptInforme.Load(sInforme,
CrystalDecisions.Shared.OpenReportMethod.OpenReportByTempCopy)

' ESTABLECER SERVIDOR Y BASE DE DATOS PARA LAS TABLAS DEL
INFORME

For Each tbC As CrystalDecisions.CrystalReports.Engine.Table In
rptInforme.Database.Tables
Dim tliC As CrystalDecisions.Shared.TableLogOnInfo tbC.LogOnInfo
With tliC.ConnectionInfo
.ServerName = My.Settings.Servidor
.UserID = ""
.Password = ""
.DatabaseName = My.Settings.BaseDatos
End With

tbC.ApplyLogOnInfo(tliC)

If tbC.Name tbC.Location.Substring(tbC.Location.LastIndexOf(".") + 1,
tbC.Location.Length - tbC.Location.LastIndexOf(".") - 1) Then
tbC.Location = My.Settings.BaseDatos + ".dbo." +
tbC.Name

End If

Next tbC

'PARA LOS SUBINFORMES DEL INFORME
For Each obj As
CrystalDecisions.CrystalReports.Engine.ReportObject In
rptInforme.ReportDefinition.ReportObjects
If TypeOf (obj) Is SubreportObject Then

Dim subreportObject As SubreportObject
Dim subreport As New ReportDocument
subreportObject rptInforme.ReportDefinition.ReportObjects.Item(obj.Name)
' Abrir el subinforme como ReportDocument.
subreport subreportObject.OpenSubreport(subreportObject.SubreportName)

For Each tbC As
CrystalDecisions.CrystalReports.Engine.Table In
subreport.Database.Tables
Dim tliC As CrystalDecisions.Shared.TableLogOnInfo
= tbC.LogOnInfo
With tliC.ConnectionInfo
.ServerName = My.Settings.Servidor
.UserID = ""
.Password = ""
.DatabaseName = My.Settings.BaseDatos
End With

tbC.ApplyLogOnInfo(tliC)
tbC.Location = My.Settings.BaseDatos + ".dbo." +
tbC.Name

Next tbC

End If
Next




Un saludo
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida