PDA

Ver la Versión Completa : Evitar listados con Campos en blanco?


kia
17-10-2003, 21:46:40
Hola foristas.
Utilizo D5 - QuickReport y SQL de novata.
Vereis tengo una tabla con 6 campos, y un listado con 5 de los campos de la tabla y va bien.

En el listado uno de esos campos es 'Matricula' pero hay registros que no tienen matricula, y quisiera que :
Cuando la Matricula sea =' ' sea sustituida por el valor del campo 6 de la tabla que se llama 'Localidad'.
Conseguiria evitar huecos en los listados, no tendria que comprimir.
Se puede conseguir? Gracias Kia;)

delphi.com.ar
17-10-2003, 21:57:01
Yo trabajando con Oracle, lo haría desde la consulta:SELECT NVL(MATRICULA, LOCALIDAD) CAMPO1
FROM TABLA... si en el motor en que trabajas no tienes una función como esta (SqlServer= ISNULL, Access= NZ), puedes hacerlo en el evento OnPrint del QRDBText: procedure TQuickRpt.QRDBText1Print(sender: TObject; var Value: String);
begin
if Value = '' Then
Value := Query1.FieldByName('LOCALIDAD').AsString;
end;


Saludos!

roman
17-10-2003, 21:59:45
Una solución podría ser agregar un campo calculado al dataset con que alimentes el reporte. En el evento OnCalcFields del dataset pones el valor del nuevo campo al de localidad o maticula dependiendo de si matricula está o no en blanco.

// Saludos

__cadetill
18-10-2003, 11:14:13
tambien podría utilizar un case en la sentencia SQL (estilo a lo que comenta d.c.a)


select campo1, campo2,...,
case when MATRICULA <> '' then MATRICULA
else LOCALIDAD
end
from tabla
where condiciones


si el motor de BD lo soporta, claro

kia
18-10-2003, 12:56:18
Hola de nuevo.
Gracias por las respuestas.
He probado las dos soluciones y por aquello de no estar al nivel los campos calculados no he llegado todavia. pero llegare.
He tenido que hacerlo asi:
// QREXpr10---es el Campo LOCALIDAD

procedure TI_movil.QRExpr10Print(sender: TObject; var Value: String);
begin
if (Value <> '') and (Query1MATRICULA.Value<>'')Then
Value := Query1.FieldByName('MATRICULA').AsString;
end;

De la solucion vuestra.
No reconoce el campo en blanco, solo me funciona cuando sustituyo el campò localidad y por que siempre tiene un valor.
Hay alguna manera de decirle que el campo es nulo o en blanco sin emplear las ''.
Salu2. y Merci Kia. ;)

__cadetill
18-10-2003, 13:00:31
Posteado originalmente por kia
Hay alguna manera de decirle que el campo es nulo o en blanco sin emplear las ''.
Query1.FieldByName('campo').IsNull

Pero si lo quieres comparar a blanco, no te queda más remedio que utilizar las comillas