03/09/2004, 13:20
|
| | 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. |