Problema con crystal reports
Hola expertos, tengo una duda:
Tengo un informe en crystal vinculado a la tabla CLIENTS de mi BD.
Desde VB ejecuto lo siguiente:
CR1.ReportFileName = App.Path & "informesclients.rpt"
CR1.SQLQuery = "SELECT * FROM CLIENT WHERE NOM_CLI = '" & Trim(Text1(1).Text) & "'"
CR1.Action = 1
donde CR1 es el control de CrystalReports
Lo que me pasa es que intento filtrar la impresión para que solo salga un cliente i me salen todos los clientes.
Alguna sugerencia?
Tengo un informe en crystal vinculado a la tabla CLIENTS de mi BD.
Desde VB ejecuto lo siguiente:
CR1.ReportFileName = App.Path & "informesclients.rpt"
CR1.SQLQuery = "SELECT * FROM CLIENT WHERE NOM_CLI = '" & Trim(Text1(1).Text) & "'"
CR1.Action = 1
donde CR1 es el control de CrystalReports
Lo que me pasa es que intento filtrar la impresión para que solo salga un cliente i me salen todos los clientes.
Alguna sugerencia?
El problema es que si tu consulta te arroja más de un resultado, te aparecerán todos los resultados arrojados. Debes hacer que la consulta te entregue sólo 1 resultado.
Saludos!
Saludos!
La consulta solo genera un resultado ya que el campo NOM_CLI es sin duplicados.
Saludos Bartolom
Saludos Bartolom
Me parecde raro, yo he hecho varias de esas consultas con resultado único y nunca he tenido problemas, me podrías enviar el ejemplo a mi correo para revisarlo?
[email protected]
Saludos!
Bartolom
Chile
[email protected]
Saludos!
Bartolom
Chile
Si, ahora te lo envio. En el correo te contaré como ejecutar la aplicación.
Muchas gracias
esther
Muchas gracias
esther
Por cierto, y si solo quiero imprimir los clientes de una ciudad? El resultado es un filtrado, vaya que no salen todos los clientes pero si sale mas de un cliente, entonces pienso que tu afirmación anterior es incorrecta.
Saludos Bartolom
Saludos Bartolom
Mira, ese tipo de consultas lo hago de la siguiente manera. Primero, utilizo el control CRViewer (está en Proyecto, Componentes), que es mucho mejor que el Crystal Reports Control. Luego, creo un formulario exclusivo para el reporte, supongamos que se llama formReporte, en el cual va a ir el objeto CrViewer. Luego, para llamarlo, lo hago desde un botón ubicado en otro formulario cualquiera, con el siguiente evento:
Private Sub Botón_Click()'Este botón debe ir
'en otro form
Dim frmRep As New formReporte
frmRep.Show vbModal
Set frmRep = Nothing
End Sub
Luego en el formulario donde va el control CrViewer debes colocar lo siguiente:
Option Explicit
Private crApp As New CRAXDRT.Application
Private crReport As New CRAXDRT.Report
Private Sub Form_Load()
'Abrir el reporte
Screen.MousePointer = vbHourglass
Set crReport = crApp.OpenReport(App.Path & "informesclients.rpt", 1)
'crReport.SQLQueryString = "SELECT * FROM CLIENT WHERE NOM_CLI = '" & Trim(Text1(1).Text) & "'"
CRViewer.ReportSource = crReport
CRViewer.DisplayGroupTree = False
CRViewer.ViewReport
Screen.MousePointer = vbDefault
End Sub
Private Sub Form_Resize()
CRViewer.Top = 0
CRViewer.Left = 0
CRViewer.Height = ScaleHeight
CRViewer.Width = ScaleWidth
End Sub
Private Sub Form_Unload(Cancel As Integer)
Set crReport = Nothing
Set crApp = Nothing
End Sub
También debes agregar la referencia (menú Proyecto, Referencias) el siguiente control:
Crystal Reports Active X Designer RunTime Library
Saludos!
Bartolom
Chile
Private Sub Botón_Click()'Este botón debe ir
'en otro form
Dim frmRep As New formReporte
frmRep.Show vbModal
Set frmRep = Nothing
End Sub
Luego en el formulario donde va el control CrViewer debes colocar lo siguiente:
Option Explicit
Private crApp As New CRAXDRT.Application
Private crReport As New CRAXDRT.Report
Private Sub Form_Load()
'Abrir el reporte
Screen.MousePointer = vbHourglass
Set crReport = crApp.OpenReport(App.Path & "informesclients.rpt", 1)
'crReport.SQLQueryString = "SELECT * FROM CLIENT WHERE NOM_CLI = '" & Trim(Text1(1).Text) & "'"
CRViewer.ReportSource = crReport
CRViewer.DisplayGroupTree = False
CRViewer.ViewReport
Screen.MousePointer = vbDefault
End Sub
Private Sub Form_Resize()
CRViewer.Top = 0
CRViewer.Left = 0
CRViewer.Height = ScaleHeight
CRViewer.Width = ScaleWidth
End Sub
Private Sub Form_Unload(Cancel As Integer)
Set crReport = Nothing
Set crApp = Nothing
End Sub
También debes agregar la referencia (menú Proyecto, Referencias) el siguiente control:
Crystal Reports Active X Designer RunTime Library
Saludos!
Bartolom
Chile
Hola Bartolom,
Ya te he enviado eso.
Ahora voy a probar esto que me has dicho.
Muchas gracias
Ya te he enviado eso.
Ahora voy a probar esto que me has dicho.
Muchas gracias
Ya me resultó. Me muestra sólo la fila requerida. Encontré 3 problemas.
1- En el Crystal Reports, Menú Archivo, debes desmarcar la opción Save Data with report, para que te actualice los datos de acuerdo a la tabla.
2- Hice el reporte con la versión 8.5 del Crystal Reports. Al parecer el tuyo era otra versión, no sé en qué influirá.
3- Rehice el reporte con la base de datos, pero incluí sólo la tabla clientes. Funciona perfecto
En el correro te mando más detalles
Saludos!
Bartolom
Chile
1- En el Crystal Reports, Menú Archivo, debes desmarcar la opción Save Data with report, para que te actualice los datos de acuerdo a la tabla.
2- Hice el reporte con la versión 8.5 del Crystal Reports. Al parecer el tuyo era otra versión, no sé en qué influirá.
3- Rehice el reporte con la base de datos, pero incluí sólo la tabla clientes. Funciona perfecto
En el correro te mando más detalles
Saludos!
Bartolom
Chile
