SoloCodigo
Bases de Datos => Crystal Reports => Mensaje iniciado por: llagy en Viernes 31 de Agosto de 2007, 22:08
-
Hola Amigo quierO abrir un reporte de hecho en crystal Report 10 con visual basic y me sale error en la conexion :
logon Fieled
details : ADO Error code 0x8004e4d
Source:Microsoft OLE DB Provider for SQL Server
Description:Error de inicio de sesion del usuario 'sa'
SQL state:4200
native Error: 18456
aqui vael codigo que estoy usando
Private Sub Form_Load()
Dim crParamDefs As CRAXDRT.ParameterFieldDefinitions
Dim crParamDef As CRAXDRT.ParameterFieldDefinition
On Error GoTo ErrHandler
'Abrir el reporte
Screen.MousePointer = vbHourglass
mflgContinuar = True
Set crReport = crApp.OpenReport(App.Path & "\Report1ee.rpt", 1)
crReport.Database.LogOnServer "p2ssql.dll", "VI-EXPLORACION1", "GeoVin", "sa", "261082"
crReport.DiscardSavedData
' Parametros del reporte
Set crParamDefs = crReport.ParameterFields
For Each crParamDef In crParamDefs
Select Case crParamDef.ParameterFieldName
Case "fechaIni"
crParamDef.AddCurrentValue (mstrParametro1)
Case "fechaFin"
crParamDef.AddCurrentValue (mlngParametro2)
End Select
Next
crvValorizacion.ReportSource = crReport
crvValorizacion.ViewReport
Screen.MousePointer = vbDefault
' Set crParamDefs = Nothing
' Set crParamDef = Nothing
Exit Sub
ErrHandler:
If Err.Number = -2147206461 Then
MsgBox "El archivo de reporte no se encuentra, restáurelo de los discos de instalación", _
vbCritical + vbOKOnly
Else
MsgBox Err.Description, vbCritical + vbOKOnly
End If
mflgContinuar = False
Screen.MousePointer = vbDefault
End Sub
adjunto el codigo , el reportey la imganeque se presenta el error
-
Por que no intentas cambiar la forma en que te conectas a tu base de datos al momento de llamar el reporte, intenta hacerlo mas por codigo y dejarle menos trabajo a crystal, en uno de tus temas anteriores te comente como, ya intentaste esa forma?
Busque en internet la forma en que haces el LogOn al server y al parecer no es muy comun, la mayoria tienen problema de esa forma. Deberias utilizar un ADOR.Recordset y asignarlo a Crystal con Database.SetDataSource, de esta forma solo te preocupas de que tu conexion del recordset funcione y el reporte solo recibiria los datos que le envies.
-
Por que no intentas cambiar la forma en que te conectas a tu base de datos al momento de llamar el reporte, intenta hacerlo mas por codigo y dejarle menos trabajo a crystal, en uno de tus temas anteriores te comente como, ya intentaste esa forma?
Busque en internet la forma en que haces el LogOn al server y al parecer no es muy comun, la mayoria tienen problema de esa forma. Deberias utilizar un ADOR.Recordset y asignarlo a Crystal con Database.SetDataSource, de esta forma solo te preocupas de que tu conexion del recordset funcione y el reporte solo recibiria los datos que le envies.
Lo que pasa es questoy trabajando con reporte general y otro y subReporte y ahora yta me sale normal peor cuandoqueioro actualizar el reporte ma sale el reporte anterior, lei en alguno foros desactivando Save data with Report y ahi si me sale el mism oerro de la figura. y tambien cuando quiero enviar parametros m sale el mismo Error.
Como tedigo trabajo con varias tablas que esta ncradas mediante recordset temporales y estas tablas son constantemente atualizadas segun los filtor que haga el usuario y ademas trabajo con una vista.
o ADOR se puede ahcer conexion a la base de datos directamente y no a una tabla
Saludos cordiales
Nota. ha si noes mucha molestia me podria dar tu correo parap oder escribirte y poder intercambiar ideas.
-
Amigo ya lo solucione y si lo ucurre el mismo problema aqui esta la solucion
aqui realizo la apertura del reporte prediseñado
Set crReport = crApp.OpenReport(App.Path & "\Reportes\rptValorizacion.rpt", 1)
una cargado en el objeto, inicio el conexion con el servidor
crReport.Application.LogOnServerEx "p2ssql.dll", "VI-EXPLORACION1", "GeoVin", "sa", "261082"
como yo utiloso varias tablas y vistas, con el bucle conecto a objeto con todas las tablas
For I = 1 To crReport.Database.Tables.Count
crReport.Database.Tables(I).SetLogOnInfo "VI-EXPLORACION1", "GeoVin", "sa", "261082"
Next I
y para tener datos actualizados mevoy a file(archivo) y desactivo el check en
Save Data With Report(guardar datos con el Reporte), esto hace que no realice ningun guardado de dartos en memoria y realice un rediscado con el sgte llamado a reporte.
Espero que los sirva y si tienen algun problema me escriben a mi correo llagy@hotmail.com.
Saludos cordiales.
-
Gracias llagy, es bueno conocer una nueva forma, me alegro que lo solucionaste.
Yo tambien trabajo con subreportes y con recordset desconectados, y uso un metodo diferente al tuyo, con la diferencia que tu tienes los reportes como archivos separados, yo los incluyo en el exe. Ya es tiempo de que empiece con archivos separados :P .
Gracias por la informacion.
viHack
bjac7@hotmail.com
-
Excelente aporte. Mil gracias. Tenía el mismo error y estuve horas tratando de resolverlo.
Por lo que estuve viendo, la lógica de Crystal es que el runtime en sí tiene una conexión y después cada una de las tablas que hay en el reporte tambien tienen su conexión independiente de la principal (sino bastaría con conectar "Report.Aplication.Set......").
Nuevamente, gracias!!!!