Me comenta Juan José que tiene problemas con la cuenta de mail, asi que si lke escribes y no te responde, no pienses que es tan informal como el Guille, osease yo... 8-)
Pulsa este link, si quieres ver la entrega anterior
Preliminares: (osea el texto que me manda con los ejemplos)
Te mando un par de ejemplos que pueden ser utiles. Uno de ellos viene en la ayuda de CR pero es interesante por que no se encuentra muy a la vista y en el emplea variables numericas en formulas y por ningun sitio de la ayuda te dice como declararlas y aqui ves como se hace, tambien se pueden usar otro tipo de variables, yo he empleado las de cadena que se declaran con stringvar.
El otro ejemplo es un report que he hecho en el trabajo, y que aunque las tablas no estan para poder ver como queda, sirve para ver el empleo de las formulas para calcular sumas de campos y para ver junto con el codigo de ejemplo del archivo CR como se diseña un informe y se colocan los campos en las distintas secciones que hay y como se colocan formulas vacias que luego se rellenan desde VB.
Creo que lo mejor es mandar el ejemplo que me imagino que aclarará mas las dudas que con lo mal que yo me explico escribiendo. Aunque el ideal habria sido poder limpiar un poco el informe o usar las tablas que trae de ejemplo el CR para que en la vista preliminar se pudiera ver algo, pero es que estoy fastidiado de tiempo.
Los ejemplos:
******** COSILLAS INTERESANTES DEL CRISTAL REPORT ******************** - Espero que con estos fragmentos de codigo te hagas una idea de como usar el CR Public Sub proImprimir() ' Procedimiento para llamar al Crystal Dim PathString As String Dim stIntervalo As String Dim viForm As Integer PathString = App.Path 'Recoje la ruta de la aplicacion ' Llamamos al procedimiento que me obtiene la SQL ******************** proConsulta ' Aqui montas la SQL que le quieras mandar al CR, con las ' condiciones que tengas en ejecucion, rango de fechas, etc ' aqui es donde mandas ' CrystalReport.SQLQuery = stSQL ' ******************************************************************** stIntervalo = "Desde: " & FechaIni & " Hasta: " & FechaFin ' Por ejemplo en el informe quieres sacar ademas del titulo, el rango ' de fechas pero hasta el momento de la ejecucion no lo sabes el que ' vas a mostrar, y en fechaini y fechafin recoges las fechas CMDIMenu.CrystalReport.WindowState = crptMaximized CMDIMenu.CrystalReport.Destination = crptToWindow ' Se rellenan formulas con variables de tipo cadena donde pones lo que ' quieres que salga en la formula. ' Esto es util para cuando quieres mandar cosas que solo sabes en ejecucion CMDIMenu.CrystalReport.Formulas(0) = "FORM1= """ & Variable1 & """" CMDIMenu.CrystalReport.Formulas(1) = "FORM2= """ & Variable2 & """" CMDIMenu.CrystalReport.Formulas(2) = "FORM3= """ & Variable3 & """" CMDIMenu.CrystalReport.Formulas(3) = "FECHAS= """ & stIntervalo & """" CMDIMenu.CrystalReport.Formulas(4) = "PresentarTotalN= """ & stTotalN & """" CMDIMenu.CrystalReport.Formulas(5) = "PresentarTotalP= """ & stTotalP & """" CMDIMenu.CrystalReport.Formulas(6) = "PresentarTotalU= """ & stTotalU & """" CMDIMenu.CrystalReport.Formulas(7) = "PresentarTotalPR= """ & stTotalPR & """" CMDIMenu.CrystalReport.WindowTitle = "Listado de Estadísticas de Actividad por Servicio" CMDIMenu.CrystalReport.ReportFileName = PathString & "\rpt\ces730r1.rpt" ' Le dices la ruta donde encontrará el informe, yo fijo que todos los ' informes colgaran de una carpeta llamada rpt CMDIMenu.CrystalReport.Action = 1 ' Lanza el informe viForm = 8 ' Esta es una variable que recoje el numero de formulas ' que estoy rellenando en ejecucion, se crea una matriz ' que hay que limpiar siempre Vacia_formulas CrystalReport, viForm Me.MousePointer = 0 End Sub Public Sub Vacia_formulas(listado As Crystal.CrystalReport _ , iNumero As Integer) Dim tiForm As Integer For tiForm = 0 To iNumero listado.Formulas(tiForm) = "" Next tiForm For tiForm = 0 To 10 listado.SortFields(tiForm) = "" Next tiForm End Sub ' ******************************************************************* ' ******************************************************************* ' ******************************************************************* - En la ventana donde tengas insertado el objeto CR preferiblemente en la MDI si la tienes debes poner la conexion para el CR 'CrystalReport.Connect = "DSN=" & stNombreDsn donde stNombreDsn es el nombre del DSN que tienes que tener en el ODBC Con esto le dices a que base de datos se conecta. Si en el transcurso del programa debes "enganchar" el CR a otra BD debes cambiar la propiedad connect y poner el nuevo DSN no olvidando volverlo a poner como lo tenias si quieres de nuevo tener ligado el CR a la BD anterior. Es decir si en alguna parte del programa tienes que crear una tabla temporal y que el CR lea sobre esta tabla temporal hecha por ejemplo en ACCESS en lugar de leer sobre el SQL Server por ejemplo le cambias el DSM al ACCESS pero luego hay que volver a conectar con SQL Server (ej.).El reporte de ejemplo: (ces730r1.zip 3.21 KB)