RE:CrystalReport mediante codigo
Si usas el objecto CrystalReport viewer creo que no.
si usas el RDC (informes embebidos en el proyecto VB) estoy seguro de que sí.
Yo lo probé en su día y si que funcionaba. Era bastatante trabajoso, pero sí que se puede.
Si puedes, te recomiendo te reemplateses el añadir los controles dinamicamente, pero lógicmanete si preguntas esto... es porque no te queda otro remedio.
Acabo de recordar que tengo un proyecto por ahí con esto...
Paque veas como menroyo... te lo envio a tu correo...
y dejo algo de código aquí para los que vengan...
Private Sub Form_Load2()
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 ProgramaSeagate SoftwareCrystal ReportsSamplesDatabasesXtreme.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).UseOneSymbolPerPage = 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
'pd. el correo indicado aquí lo leo 1 vez al año mas o menso.(bueno.. lo borro si leer).