Usar crystal report 7 en aplicación implementada en visual basic 6 y base de datos access

Soy una pasante universitaria sin tutor
Hola... Mira yo hice un sistemita en visual basic 6.0, la base de datos en access 97 y quiero y m exigen utilizar crystal report 7 para generar reportes.
Pero mi problema es que no sé como hacer para programar un formulario el cual está compuesto por 2 textbox en los cuales el textbox1 el usuario en tiempo de ejecución tiene que introducir fecha desde (Desde donde quiere que c gnere el report" y el textbox2 fecha hasta "fecha hasta que quiere que se genere el report.
Cuando el usuario ponga esas fechas quiero que crystal seleccione los registros que posean est parámetro y entonces el report salga solo lo que especifiq el usuario.
ejm: fecha desde: 24/04/03 hasta: 27/04/03 y entonces quiero que crystal haga la selección, ¿Y cuándo yo entre a la vista preliminar pueda ver que funciono que toma mis exisgencias y luego lo imprimo como hago? Ojala entiendas lo que necesito...

13 respuestas

Respuesta
1
Primero debes crear tu reporte en crystal, segundo si vas a ausar un
unforme que selecciones entre dos fechas es conveneiente que las muestres en el informe es aquí en donde usaras estos parámetros
Cry_DesMaq.ParameterFields(0) = "Fecha_Inicial;" & Cal_FecDes.Value & ";true" AQUI HE PASADO UN PARAMETRO
Cry_DesMaq.ParameterFields(1) = "Fecha_Final;" & Cal_FecFin.Value & ";true" AQUI HE PASADO UN SEGUNDO PARAMETRO
Tu reporte debe ser generado con los mismos campos que seleccionas en el query de crystal de lo contrario te daa un erro por no encontrar algunos campos
En tu formulario de visual debes incluir un objeto (ocx) de crystal que lo denes tener activado en componesntes del proyecto (crystal report control) este objeto lo tom, as y lo pones en tu formularios y lo activas dentro del botón que procesara la información que ingresa el usuario, con la tecla derecha del muse sobre este objeto podrás decir si lo vees por pantalla, si deseas configurar la impreso
tra, si desea imprimirlo sin visiualizarlo, si deseas que la ventana se ejecute en maximizado y otras propiedades más.
Cry_DesMaq.SQLQuery = "SELECT * FROM Adm_InformeContable Where Adm_InformeContable.Año =" & Año _
& " AND Adm_InformeContable.Periodo = " & Com_Periodo.ListIndex + 1 _
& " AND Adm_InformeContable.Grupo <> 'A'" _
& " AND Adm_InformeContable.DifMaq NOT BETWEEN -100 AND 100" _
& " AND (Adm_InformeContable.Fec_Aud BETWEEN {ts '" & Format(Cal_FecDes.Value, "yyyy-mm-dd") & " 00:00:00.000'} AND {ts '" & Format(Cal_FecFin.Value, "yyyy-mm-dd") & " 00:00:00.000'} Or " _
& " Adm_InformeContable.Fec_Conteo BETWEEN {ts '" & Format(Cal_FecDes.Value, "yyyy-mm-dd") & " 00:00:00.000'} AND {ts '" & Format(Cal_FecFin.Value, "yyyy-mm-dd") & " 00:00:00.000'}) order by Ruta,DifMaq,Maquina Asc" ESTAS ES AUN CONSULTA SQL QUE LE EMVIO DESDE VISUAL
Cry_DesMaq.Action = 1 EJECUTO MI INFORME.
Objetocrystal. Action 1
Este es el comando que ejecuta tu reporte
Espero te sirva
Si es así agradece aumentando mi puntuación
Un amigo
Respuesta
1
Tienes que usar la propiedad sqlquery de crystalreport o la selectionformula, te pongo el sqlquery
privae sub command_click()
Dim fecha_desde as date
dim fecha_hasta as date
dim sqlx as string
fecha_desde=Text1.text
fecha_hasta=Text2.text
sqlx="select * from tabla where " _
" date_desde >=" & fecha_desde " _
" and date_hasta <=" & fecha_hasta
cr.destination=crpwindow
cr.reportfilename="report.rpt"
cr.sqlquery=sqlx <<<<<-----' le pasamos la select
cr.action=1
Respuesta
1
No te preocupes...
Mira yo ahorita no tengo instalado el Crystal Report... y tengo prestado el cd... no recuerdo bien... (Si no con gusto te ponía el ejemplo en código)pero el código lo debes de poner en el evento Load del Crystal Report... es decir que cuando cargue... en base a los parámetros que tu le estas enviando... o que esta tomando del Formulariox.text1.text se genere el SQL... y de ahí tomes por medio de esa consulta los datos a desplegar en el Informe...
Gracias... lo intentaré cualquier cosilla t escribo saludos t mando tus estrellas gracias
Disculpa el fastido, pero yo tengo un formulario lógico donde está el text1 y text2 correspondientes a fecha desde y fecha hasta y tengo un commonbutton el cual se llama imprimir y mi idea es que cuando haga click en el m salga la vista previa del report.y no se si esta codificación que m enviaste la coloco en ese commonbutton disculpa el fastidio ... yo nunca he trabajado con crystal como ya t habrás dado cuenta... luego t mando tus estrellitas.
Bien... lo que tienes que hacer es pasar los Parámetros de esas fechas... y elaborar una Consulta SQL... Select * from por Where Fecha < Fecha AND fecha2 > Fecha2 order by asc
Y listo... esa consulta la estableces como origen de datos para el Crystal Report y listo.
Respuesta
1
Yo no tengo mucha experiencia con crystal reports, pero para buscar datos en una base, ya sea con límites de fechas yo usaría SQL y de última después armaría el reporte del crystal reports.
Para conectarte a una base de datos suponiendo que está en "c:\" y que se llama "mibase.mdb" y que la tabla que contiene los datos se llama "tabla1", y que los campos son "fecha" y "texto" tenés que hacer así:
set TBL as RecordSet
set DBB as DataBase
DBB.OpenDatabase("C:\mibase.mdb")
TBL.Open "SELECT * FROM tabla1 WHERE fecha>'" & text1.text & "AND fecha<'" & text2.text
Do while NOT TBL.EOF
Acá poné el comando para generar el reporte;
para obtener los datos ponés así: TBL! Texto o bien TBL! Fecha
Si esto no llega a aclara todas tus dudas, podes entrar en www.elguruprogramador.com.ar y buscar la sección de visual basic y después buscar un articulo que tiene como titulo "sql en visual basic" o algo muy similar a eso, no recuerdo bien. Hasta cuando yo visité el sitio era el de abajo de todo.
Espero haberte podido ayudar. Atentamente. Manuel Fernández.
Respuesta
1
Entiendo tu consulta.
Si utilizas el control crystal report activex designer tienes que pasar en la propiedad RecordSelectionFormula el filtro que va a utilizar el crystal report para seleccionar los registros que utilizara en el visor.
Tratare de buscarte un archivo que te demuestre esto.
En la ayuda de crystal report activex designer hay un ejemplo.
Gracias y no t olvides de mi tengo una semana en el banco donde estoy haciendo la pasantía sin hacer nada ya que eso es lo único que m falta para terminar el sistema y mis pasantias pero no tengo tutor si m consigues el ejm t lo agradezco gracias obrigado
Respuesta
1
Ok si entiendo a lo que te refieres y me seria complicado darte un código bastante extenso y que te fuera complicado que lo comprendas mejor que te parece si nos vemos en algún chat (Por ejemplo el MSN messenger) y lo vamos haciendo juntos para que comprendas prácticamente lo que te vaya diciendo . Pon hora y día yo estaré disponible.
Respuesta
1
Como no sé si has usado nunca el CrystalReports, vamos a pasar todos los pasos para llamar a un report desde VB :
- Primero insertar el control en el formulario :P
- Destino de la impresión (Window o Printer ) CrystalReport1. Destination = crptToWindow
- Nombre del Informe :
CrystalReport1.ReportFileName = "Path donde está el informe"
CrystalReport1.SelectionFormula = "{Fecha} =DateValue('" & TxtFechaInicial.Value _
& "') AND DateValue({Fecha})<=Date('" &
TxtdataFinal.Value & "')"
- Estado como aparecerá la ventana del informe ( maximizada, minimizada ...)
CrystalReport1.WindowState = 2
- Llama al informe con todas las opciones anteriores
CrystalReport1.Action = 1
La consulta no está del todo terminada claro, debes adecuarla a tus necesidades ( según los campos ue quieras mostrar, de que tabla, etc).
Espero que esto conteste a tu pregunta. SI no es así, no dudes en volver a preguntar.
Magne
Respuesta
1
Hace tiempo que no hago informes con Crystal, ya que creo haberlos hecho con la versión 4 o 5 de Visual Basic, pero creo recordar que se hacían las consultas en SQL y luego se enlazaban con el informe que querías. Si es así, lo que tienes que hacer es una consulta de selección, en donde coloques como argumento los campos de texto. Por ejemplo:
"SELECT * FROM Datos WHERE Fecha BETWEEN " & text1.text & " AND " & text2.text
Donde Datos es el nombre de la tabla de donde extraerás los datos y Fecha es el campo que almacena las fechas.
Bien, pero desde visual debes capturar los datos (text1 y text2) y cuando los tengas, enviarlos a la consulta, para esto yo te recomendaría que hicieras la consulta en tiempo de ejecución.
Para hacer una consulta en tiempo de ejecución debes crear un QueryDefs y al QueryDefs que creas asignarle el string SQL, asignarle un nombre y luego enlazarlo con el reporte (del Crystal Report) que quieres.
Puede que para hacer esto necesites incluir las referencias de DAO (La base de datos que estas utilizando).
Respuesta
1
Aquí tienes un ejemplo de lo que necesitas seleccionar el report, y pasar una condición para la búsqueda. Si se produce un error te lo controla. Espero que te valga.
With Principal.Report1
If Option1(0) Then
.ReportFileName = App.Path & "\Report\remesa_det.rpt"
Else
.ReportFileName = App.Path & "\Report\remesa.rpt"
End If
.SelectionFormula = "{Remesa_det.idremesa}= " & CDbl(Te_campo(0))
verror = .PrintReport
If verror <> 0 Then
MsgBox "Ha ocurrido un error " & verror, vbCritical
End If
.SelectionFormula = ""
End If
Else
.ReportFileName = App.Path & "\Report\LIs_Remesas.rpt"
vtemp = vtemp & " {Remesa.fecha} >= date(" & Right(Ent_Desde.Value, 4) & "," & Mid(Ent_Desde.Value, 4, 2) & "," & Left(Ent_Desde.Value, 2) & ")"
vtemp = vtemp & " and {Remesa.fecha} <=date(" & Right(Ent_hasta.Value, 4) & "," & Mid(Ent_hasta.Value, 4, 2) & "," & Left(Ent_hasta.Value, 2) & ")"
.SelectionFormula = vtemp
verror = .PrintReport
If verror <> 0 Then
MsgBox "Ha ocurrido un error " & verror, vbCritical
End If
.SelectionFormula = ""
End If
End With
Respuesta
1
Te muestro un extracto de mi propio programa como ejemplo:
With oReciboData.CrystalReport
.ReportFileName = cSociosGlobal.DirRpt & "Recibo.rpt"
.SelectionFormula = "{recibos.RECIBO} in " & _
oIRData.ReciboDesde & " to " & oIRData.ReciboHasta
'.SortFields(0) = "+{recibos.RECIBO}"'el orden de los recibos no es significativo para ordenar
.SortFields(0) = "+{recibos.SOCIO}"
.SortFields(1) = "+{recibos.FECHA}"
.Destination = Crystal.DestinationConstants.crptToWindow
End With
Espero que te sirva
(El resto viene en el manual :-)
Suerte!
Jagar
Respuesta
1
CrystalReport1.Connect = "DSN=" & servicio & ";UID=" & usuario & ";PWD=" & contrasena & ";DSQ=EGAP"
CrystalReport1.ReportFileName = App.Path & "\tb2.rpt"
CrystalReport1.SQLQuery = "select * from transferencias where fecha between '01/01/01' and '01/01/02"
CrystalReport1.WindowState = crptMaximized
CrystalReport1.Destination = crptToPrinter
CrystalReport1.WindowTitle = "TRANSFERENCIAS BANCARIAS"
CrystalReport1.Action = 1
Respuesta
1
Puedes pasarle una selección al informe de crystal con
Selectionformula, sino sabes la sintaxis te envío un ejemplo.
Suerte
Respuesta
1
Una consulta antes que nada, si ya sabes usar el crystal report para hacer ese filtro que dices tienes que pasarle el selection por código, puedes escribirme a [email protected] y te envío un ejemplo de lo que quieres ese tipo de selecciones lo hacemos siempre.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas