Problema con crystal reports

Problema con Crystal
05 de Febrero del 2004
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?

Bartolom
05 de Febrero del 2004
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!

Esther
05 de Febrero del 2004
La consulta solo genera un resultado ya que el campo NOM_CLI es sin duplicados.

Saludos Bartolom

Bartolom
05 de Febrero del 2004
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

esther
05 de Febrero del 2004
Si, ahora te lo envio. En el correo te contaré como ejecutar la aplicación.

Muchas gracias
esther


ESTHER
05 de Febrero del 2004
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

Bartolom
05 de Febrero del 2004
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

esther
05 de Febrero del 2004
Hola Bartolom,
Ya te he enviado eso.

Ahora voy a probar esto que me has dicho.

Muchas gracias



Bartolom
05 de Febrero del 2004
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