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
#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.
#3 Antonio Herrera
03/02/2006 - 21:04 | Informe spam
LeMaNú escribió:
Mostrar la cita
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.
#4 Antonio Herrera
03/02/2006 - 21:06 | Informe spam
Lubi escribió:
Mostrar la cita
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.
#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
Ads by Google
Search Busqueda sugerida