Foros del Web » Programación para mayores de 30 ;) » Programación General »

Problemas con Crystal Report 8 (RDC) y Access

Estas en el tema de Problemas con Crystal Report 8 (RDC) y Access en el foro de Programación General en Foros del Web. Necesito un ejemplo usando Crystal Report 8 (RDC) donde se haga conexión con base de datos Access protegida por password. ¡¡Es Urgente !! => => ...
  #1 (permalink)  
Antiguo 03/09/2004, 05:01
jcl
 
Fecha de Ingreso: enero-2002
Mensajes: 673
Antigüedad: 22 años, 10 meses
Puntos: 1
Problemas con Crystal Report 8 (RDC) y Access

Necesito un ejemplo usando Crystal Report 8 (RDC) donde se haga conexión con base de datos Access protegida por password.

¡¡Es Urgente !! => => =>

¡¡Auxilio Expertos Ayudaaaaaaaaaaaaaaaaaa!!
  #2 (permalink)  
Antiguo 03/09/2004, 11:22
Avatar de jrp01  
Fecha de Ingreso: mayo-2004
Ubicación: México
Mensajes: 2.702
Antigüedad: 20 años, 6 meses
Puntos: 0
'Ok primero tu BD de access la van a usar varios usuarios?
'si es asi te sugiero que cambies a algo mas grande SQL server, etc.....

la conexion:
Seleciona en proyecto->referencias: Microsoft ActiveX Data Objects XX.XX
luego en un modulo:

Public cn As New ADODB.Connection


en el load de la forma:
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\tubase.mdb" & ";Persist Security Info=False;Jet OLEDB:Database Password=tu_pass"

Si deseas validar usuarios eso otra cosa.

Para crystal en Proyecto (en mi caso tengo Crystal 8.5 developer) en referencias:

Crystal Report engine 8 Object Library (En micaso es 8 por mi version)
Crystal Report Viewer Control
Crystal Report 8.5 ActiveX Desingner Run time library
Crystal Report 8.5 ActiveX Designer Desingn and Run time library
Crystal Report Viewer control

En una forma colocas el CRViewer
Cuando mandes llamar imprimir por ej. un boton pon:
ReportViewerFrm.Show 'suponiendo que asi se llama la forma donde esta el control.

en el modulo (esto viene en la pagina de Crystal en los ejemplos):

Global crxApplication As New CRAXDRT.Application
' Declare report object
Global crxReport As CRAXDRT.Report
' Declare database objects
Global crxDatabase As CRAXDRT.Database
Global crxDatabaseTables As CRAXDRT.DatabaseTables
Global crxDatabaseTable As CRAXDRT.DatabaseTable
' Declare the section objects
Global crxSections As CRAXDRT.Sections
Global crxSection As CRAXDRT.Section
' Declare the subreport objects
Global crxSubreport As CRAXDRT.Report
Global crxSubreportObject As SubreportObject
' Declare a Font Object.
Global crxFont As IFontDisp
' Declare our Field Object.
Global crxFieldObject As CRAXDRT.FieldObject
Global crxTextObject As CRAXDRT.TextObject
Public rs As New ADODB.Recordset

En la forma con en control:
en el Load:
sentencia = "tu sentencia SQL"
Set rs = cn.Execute(sentencia)
Screen.MousePointer = vbHourglass
Set crxReport = crxApplication.OpenReport(App.Path "\tu_reporte.Rpt")
crxReport.DiscardSavedData
Set crxDatabase = crxReport.Database
Set crxDatabaseTables = crxDatabase.Tables
crxReport.Database.SetDataSource rs
CRViewer1.ReportSource = crxReport
CRViewer1.EnableExportButton = True
CRViewer1.DisplayGroupTree = False
CRViewer1.ViewReport
ReportViewerFrm.WindowState = vbMaximized
CRViewer1.Zoom 100
Screen.MousePointer = vbDefault

en el Resize de la forma:
With CRViewer1
.Top = 0
.Left = 0
.Width = Me.ScaleWidth
.Height = Me.ScaleHeight
End With

En el unload de la forma:
Set crxReport = Nothing
Set crxApplication = Nothing
Set crxDatabase = Nothing
Set crxDatabaseTable = Nothing
Set crxDatabaseTables = Nothing
Set crxSubreport = Nothing
Set crxSubreportObject = Nothing
Set CrSubreport = Nothing
Set CrSubreport1 = Nothing
Set CrSubreport2 = Nothing


Me imagino que ya sabes crear reportes. Te sugiero que lo hagas por archivos TTX asi no dependes de la BD y no por ODBC.



Última edición por jrp01; 03/09/2004 a las 11:23
  #3 (permalink)  
Antiguo 03/09/2004, 11:34
Avatar de jrp01  
Fecha de Ingreso: mayo-2004
Ubicación: México
Mensajes: 2.702
Antigüedad: 20 años, 6 meses
Puntos: 0
Aqui estan los ejemplo:

http://support.businessobjects.com/c...ps_rdc.pdf.asp
  #4 (permalink)  
Antiguo 03/09/2004, 13:20
jcl
 
Fecha de Ingreso: enero-2002
Mensajes: 673
Antigüedad: 22 años, 10 meses
Puntos: 1
OK. Gracias por tu ayuda.

Pero tengo dos preguntas que hacerte al respecto:

1.- El la línea donde escribes: "Global crxSubreportObject As SubreportObject", ese tipo de dato "SubreportObject" ... ¿dónde está definido? No entendí eso.

2.- Cuando dices "Te sugiero que lo hagas por archivos TTX", te confieso que no se que son archivos TTX ¿dónde crees que puedo leer algo al respecto?

===============
Un amigo me pasó el siguiente ejemplo y lo probé con la DB que se instala con el paquete y funciona bien (no le he puesto password). Lo importante aquí son dos cosas: Una, que se puede crear reportes en tiempo de ejecución o al vuelo (no lo sabía), y dos, es que si no se tiene licencia al día, entonces aparece un mensajito muy fastidioso que te lo recordará hasta que aparezca la licencia.

El Ejemplo:

Dim Application As New CRAXDRT.Application
Dim Report As New CRAXDRT.Report
Dim ADOConnection As ADODB.Connection
Dim ADOCommand As ADODB.Command
Dim CRWizard As New CRStandardWizard

Private Sub Form_Load()
Screen.MousePointer = vbHourglass
Set Application = CreateObject("CrystalRuntime.Application")

'Crea un nuevo informe vacio
Set Report = Application.NewReport

'Abre una nueva conexión de datos
Set ADOConnection = New ADODB.Connection
ADOConnection.Open "Provider=MSDASQL;Persist Security Info=False;Data Source=Xtreme Sample Database;Mode=Read"

'Crea una nueva instancia de un objeto Command de ADO
Set ADOCommand = New ADODB.Command
Set ADOCommand.ActiveConnection = ADOConnection
ADOCommand.CommandText = "Orders"
ADOCommand.CommandType = adCmdTable

'añade el origen de datos (la tabla Pedidos de XTREME) al informe
Report.Database.AddADOCommand ADOConnection, ADOCommand

'Añade el logo y el título del informe
Dim ReportTitle As CRAXDRT.TextObject

'Esta linea asume que Crystal Reports está instalado en la ubicación por defecto
'en la unidad C: - buscará el logo de Xtreme aquí

Report.Sections(1).AddPictureObject "C:\Archivos de Programa\Seagate Software\Crystal Reports\Samples\Databases\Xtreme.bmp", 1000, 75

Set ReportTitle = Report.Sections(1).AddTextObject("Detalles de pedidos de FedEx", 6000, 400)

'Da formato al título
With ReportTitle
.HorAlignment = crHorCenterAlign
.LeftLineStyle = crLSSingleLine
.RightLineStyle = crLSSingleLine
.TopLineStyle = crLSSingleLine
.BottomLineStyle = crLSSingleLine
.HasDropShadow = True
.Font.Size = 18
.Font.Bold = True
.TextColor = &H808000
.Height = 500
.Width = 4500
End With

'Añade campos en la sección Detalles
Report.Sections(3).AddFieldObject "{ado.Order ID}", 750, 5
Report.Sections(3).AddFieldObject "{ado.Order Date}", 3150, 5
Report.Sections(3).AddFieldObject "{ado.Order Amount}", 5500, 5
Report.Sections(3).AddFieldObject "{ado.Ship Via}", 8850, 5

'Da formato al monto del pedido para tener el símbolo monetario por página
Report.Sections(3).ReportObjects(3).UseOneSymbolPe rPage = True

'Crea y da formato al Total General del Monto del pedido en el Pie de Informe
Dim AmountTotal As CRAXDRT.FieldObject
'Creando una variable de objeto por separado evita profundizar en la jerarquía cuando se le aplica el formato
Set AmountTotal = Report.Sections(4).AddSummaryFieldObject _
(Report.Sections(3).ReportObjects(3).Field.Name, crSTSum, 6000, 750)
With AmountTotal
.Width = 1500
.Font.Bold = True
End With 'AmountTotal

Report.RecordSelectionFormula = "{ado.Ship Via} = 'FedEx'"

Screen.MousePointer = vbDefault

If MsgBox("A base report has been created. Do you wish to customize it with the Report Creation Wizard?", vbYesNo, App.Title) = vbYes Then
Set CRWizard.CrystalReport = Report
CRWizard.DisplayReportWizard
MsgBox "The modified report will now be displayed in Report Viewer"
End If 'MsgBox("A base report has been created...

CRViewer1.ReportSource = Report
CRViewer1.ViewReport

End Sub

Private Sub Form_Resize()
CRViewer1.Top = 0
CRViewer1.Left = 0
CRViewer1.Height = ScaleHeight
CRViewer1.Width = ScaleWidth

End Sub

Private Sub Form_Unload(Cancel As Integer)
If MsgBox("Do you want to save this report as Sample.RPT?", vbYesNo, "Save Report") = vbYes Then
Report.SaveAs App.Path & "\Sample.RPT", cr80FileFormat
End If 'MsgBox("Do you want to save...
End Sub


=============

Gracias por los ejemplos y le meteré el ojo a ver que aprendo.

Saludos y no te olvides lo de la definición de "SubreportObject" y lo de archivos TTX.
  #5 (permalink)  
Antiguo 03/09/2004, 13:25
jcl
 
Fecha de Ingreso: enero-2002
Mensajes: 673
Antigüedad: 22 años, 10 meses
Puntos: 1
Te lo escribo aparte ... ¿Qué son archivos TTX?

Saludos.
  #6 (permalink)  
Antiguo 03/09/2004, 14:51
Avatar de jrp01  
Fecha de Ingreso: mayo-2004
Ubicación: México
Mensajes: 2.702
Antigüedad: 20 años, 6 meses
Puntos: 0
MMM lo del tipo de objeto quitalo es para subreportes si no los utilizas quitalo y si los utilizas va a faltar codigo si es asi me dices y te pongo el resto de codigo lo de TTX son archivos definidos por tabulaciones por asi decirlo al hacer el reporte usas estos para crearlos este archivo de texto contiene los campos y el tipo de aqui los jalas para tu reporte de esta manera no usas la BD. solo este archivo pero tal y como los pongas(el orden) asi debe de ir tu sentencia.

  #7 (permalink)  
Antiguo 03/09/2004, 14:55
Avatar de jrp01  
Fecha de Ingreso: mayo-2004
Ubicación: México
Mensajes: 2.702
Antigüedad: 20 años, 6 meses
Puntos: 0
http://support.businessobjects.com/...pps_rdc.pdf.asp

Aqui hay un ejemplo de como crear los TTX(desde VB) para no tener que escribirlos(luego uno se equivoca) puedes sacar uno por cada tabla que tengas ya despues copiar y pegar para hacer uno para tu consulta SQL.


  #8 (permalink)  
Antiguo 03/09/2004, 15:43
jcl
 
Fecha de Ingreso: enero-2002
Mensajes: 673
Antigüedad: 22 años, 10 meses
Puntos: 1
Bueno, gracias de todos modos, pero buscando por los títulos de los ejemplos no pude saber cual de ellos maneja esos TTX a que hace referencia. Si me dices cual es el ejemplo te lo agradezco.

Saludos.
  #9 (permalink)  
Antiguo 06/09/2004, 08:52
Avatar de jrp01  
Fecha de Ingreso: mayo-2004
Ubicación: México
Mensajes: 2.702
Antigüedad: 20 años, 6 meses
Puntos: 0
Busca este ejemplo:

cr8_vb_api_activedata


  #10 (permalink)  
Antiguo 06/09/2004, 09:29
jcl
 
Fecha de Ingreso: enero-2002
Mensajes: 673
Antigüedad: 22 años, 10 meses
Puntos: 1
Al menos en http://support.businessobjects.com/...pps_rdc.pdf.asp no se encuentra ese ejemplo ... quizás en otra parte.
  #11 (permalink)  
Antiguo 06/09/2004, 10:02
Avatar de jrp01  
Fecha de Ingreso: mayo-2004
Ubicación: México
Mensajes: 2.702
Antigüedad: 20 años, 6 meses
Puntos: 0
Aqui esta:

http://support.businessobjects.com/c...vedata.exe.asp
  #12 (permalink)  
Antiguo 06/09/2004, 11:05
jcl
 
Fecha de Ingreso: enero-2002
Mensajes: 673
Antigüedad: 22 años, 10 meses
Puntos: 1
Bueno, ya lo tengo. Lo revisaré con la seguridad de que aprenderé muchas cosas. Espero no haberte creado muchas molestias, dándote las gracias por esta tremenda ayuda, me despido y hasta la próxima.

Saludos.
  #13 (permalink)  
Antiguo 06/09/2004, 11:48
Avatar de jrp01  
Fecha de Ingreso: mayo-2004
Ubicación: México
Mensajes: 2.702
Antigüedad: 20 años, 6 meses
Puntos: 0
Sonrisa

Ok y no es ninguna molestia asi yo tambien aprendi, preguntando y leyendo
Saludos
  #14 (permalink)  
Antiguo 21/09/2004, 12:10
 
Fecha de Ingreso: septiembre-2004
Mensajes: 1
Antigüedad: 20 años, 2 meses
Puntos: 0
Sabes como crear los archivos TTX

Hola recien me estoy iniciando con Crystal 8.5, ya e trabajado en otras versiones, lo que no se es crear archivos TTX, no sabes donde hay codigo sobre estos, te agradeceria mucho.
Orlando
  #15 (permalink)  
Antiguo 26/03/2007, 08:54
 
Fecha de Ingreso: julio-2006
Mensajes: 4
Antigüedad: 18 años, 3 meses
Puntos: 0
Re: Problemas con Crystal Report 8 (RDC) y Access

'Añade campos en la sección Detalles
Report.Sections(3).AddFieldObject "{ado.Order ID}", 750, 5
Report.Sections(3).AddFieldObject "{ado.Order Date}", 3150, 5
Report.Sections(3).AddFieldObject "{ado.Order Amount}", 5500, 5
Report.Sections(3).AddFieldObject "{ado.Ship Via}", 8850, 5

=============

Y alguna idea de poder asingar dinámicamente el valor Left de cada campo en el momento de su creacion ?. Aquí asignas 750,3150,550 y 8850. Yo estaba usando el valor Width de cada campo antes de crear el siguiente, pero me deja muchos espacios.

Alguna idea ?

Gracias 1
  #16 (permalink)  
Antiguo 07/02/2009, 21:28
 
Fecha de Ingreso: febrero-2009
Mensajes: 1
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Problemas con Crystal Report 8 (RDC) y Access

Cita:
Iniciado por jcl Ver Mensaje
Necesito un ejemplo usando Crystal Report 8 (RDC) donde se haga conexión con base de datos Access protegida por password.

¡¡Es Urgente !! => => =>

¡¡Auxilio Expertos Ayudaaaaaaaaaaaaaaaaaa!!
Mira amigo, yo tenía ese problema y lo solucioné de la siguiente manera, ojo que también funciona para un Control Data.
Veo mucho blablabla... y nada efectivo.

Dim cPass, Clave As String

Clave = "abracadabra"
cPass = ";PWD=" & Clave
CrystalReport1.Connect = ";PWD=" & Clave
CrystalReport1.Action = 1

Espero te funcione. Esto va depender de la versión del Motor Jet (esto es para el access 97 - Jet 3.51 , para otras versiones tienes que ponerlo el Provider )

LRD
  #17 (permalink)  
Antiguo 10/02/2009, 08:06
 
Fecha de Ingreso: febrero-2009
Mensajes: 1
Antigüedad: 15 años, 9 meses
Puntos: 0
De acuerdo Respuesta: Problemas con Crystal Report 8 (RDC) y Access

Cita:
Iniciado por Helio_77 Ver Mensaje
Mira amigo, yo tenía ese problema y lo solucioné de la siguiente manera, ojo que también funciona para un Control Data.
Veo mucho blablabla... y nada efectivo.

Dim cPass, Clave As String

Clave = "abracadabra"
cPass = ";PWD=" & Clave
CrystalReport1.Connect = ";PWD=" & Clave
CrystalReport1.Action = 1

Espero te funcione. Esto va depender de la versión del Motor Jet (esto es para el access 97 - Jet 3.51 , para otras versiones tienes que ponerlo el Provider )

LRD


Hola Helio_77
Tu Respuesta es Correcta por q lo probe
Loq Te pido un favor
Quiero Ver un Reporte q esta en cr 8 con sql 2000 desde otra maquina pero me manda el error clasico de "no sepuede abrir el Servidor SQL" A que se debe o como debo de enlazar para ver el reporte
Te Agradezco de antemano

Saludos
Luis
  #18 (permalink)  
Antiguo 23/08/2010, 16:20
 
Fecha de Ingreso: septiembre-2009
Mensajes: 1
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: Problemas con Crystal Report 8 (RDC) y Access

como hago en esta seccion

sentencia = "tu sentencia SQL"
Set rs = cn.Execute(sentencia)

Para pasarle la llamada a un sp con parametros que devuelve un cursor, y que este cursos sería el recorset a pasar al reporte.

Todo esto surgue porque quiero migrar los reportes echos con store procedure embebidos de oracle en el reporte crystal 8.5 a reportes con archivos TTX.

Tengo solo ese problemita para resolver el problema. si coloco el selecte en la variable sentencia funciona genial pero quedaría quemado en el codigo y me parece una mamarrachada.

Espero su ayuda ... Muchas Gracias!!!!


Cita:
Iniciado por jrp01 Ver Mensaje
'Ok primero tu BD de access la van a usar varios usuarios?
'si es asi te sugiero que cambies a algo mas grande SQL server, etc.....

la conexion:
Seleciona en proyecto->referencias: Microsoft ActiveX Data Objects XX.XX
luego en un modulo:

Public cn As New ADODB.Connection


en el load de la forma:
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\tubase.mdb" & ";Persist Security Info=False;Jet OLEDB:Database Password=tu_pass"

Si deseas validar usuarios eso otra cosa.

Para crystal en Proyecto (en mi caso tengo Crystal 8.5 developer) en referencias:

Crystal Report engine 8 Object Library (En micaso es 8 por mi version)
Crystal Report Viewer Control
Crystal Report 8.5 ActiveX Desingner Run time library
Crystal Report 8.5 ActiveX Designer Desingn and Run time library
Crystal Report Viewer control

En una forma colocas el CRViewer
Cuando mandes llamar imprimir por ej. un boton pon:
ReportViewerFrm.Show 'suponiendo que asi se llama la forma donde esta el control.

en el modulo (esto viene en la pagina de Crystal en los ejemplos):

Global crxApplication As New CRAXDRT.Application
' Declare report object
Global crxReport As CRAXDRT.Report
' Declare database objects
Global crxDatabase As CRAXDRT.Database
Global crxDatabaseTables As CRAXDRT.DatabaseTables
Global crxDatabaseTable As CRAXDRT.DatabaseTable
' Declare the section objects
Global crxSections As CRAXDRT.Sections
Global crxSection As CRAXDRT.Section
' Declare the subreport objects
Global crxSubreport As CRAXDRT.Report
Global crxSubreportObject As SubreportObject
' Declare a Font Object.
Global crxFont As IFontDisp
' Declare our Field Object.
Global crxFieldObject As CRAXDRT.FieldObject
Global crxTextObject As CRAXDRT.TextObject
Public rs As New ADODB.Recordset

En la forma con en control:
en el Load:
sentencia = "tu sentencia SQL"
Set rs = cn.Execute(sentencia)
Screen.MousePointer = vbHourglass
Set crxReport = crxApplication.OpenReport(App.Path "\tu_reporte.Rpt")
crxReport.DiscardSavedData
Set crxDatabase = crxReport.Database
Set crxDatabaseTables = crxDatabase.Tables
crxReport.Database.SetDataSource rs
CRViewer1.ReportSource = crxReport
CRViewer1.EnableExportButton = True
CRViewer1.DisplayGroupTree = False
CRViewer1.ViewReport
ReportViewerFrm.WindowState = vbMaximized
CRViewer1.Zoom 100
Screen.MousePointer = vbDefault

en el Resize de la forma:
With CRViewer1
.Top = 0
.Left = 0
.Width = Me.ScaleWidth
.Height = Me.ScaleHeight
End With

En el unload de la forma:
Set crxReport = Nothing
Set crxApplication = Nothing
Set crxDatabase = Nothing
Set crxDatabaseTable = Nothing
Set crxDatabaseTables = Nothing
Set crxSubreport = Nothing
Set crxSubreportObject = Nothing
Set CrSubreport = Nothing
Set CrSubreport1 = Nothing
Set CrSubreport2 = Nothing


Me imagino que ya sabes crear reportes. Te sugiero que lo hagas por archivos TTX asi no dependes de la BD y no por ODBC.


Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 15:40.