PDA

Ver la Versión Completa : forcenewpage y forcenewcolumn, qreport ...


mierda
29-01-2007, 13:00:41
Hola que tal ... trabajo con delphi 5 y s.o. win2000, contra una bbdd sqlserver 2000, tengo una tabla con estos datos:

codigo
123456789012
777777777777
123456789014
123456789015
123456789016
777777777777
123456789016
123456789016
123456789016
123456789016
777777777777
123456789016
123456789016
123456789016
123456789016
777777777777
123456789016
777777777777
123456789016

y tengo un report, en el cual saco el codigo.

en el onprint de este codigo hago esto:


procedure TForm1.QRDBText1Print(sender: TObject; var Value: String);
begin
if copy(ADOTable1.fieldbyname('codigo').AsString,0,12) = '777777777777' then
begin
QRBand1.ForceNewPage := true;
end
else
begin
QRBand1.ForceNewpage := false;
end;
end;


Pues con el forcenewpage funciona perfectamente, pero si le hago un forcenewcolumn no va la primera vez que tiene que saltar de columna, despues si.

Es un bug?? tengo que hacer algo antes!!?

pd: ya que estamos ... como podria hacer que si el codigo es 7777777777 no se muestre el qrband?!?!!?

Un saludo y gracias!!

marcoszorrilla
29-01-2007, 15:50:46
Intuyo que el problema puede venir porque el informe solamente tiene una columna. En este caso quizás haya que engañarle y la primera vez mandarle 2 veces la instrucción, una para que cree la columna y otra para se ubique en ella.

Un Saludo.

mierda
29-01-2007, 17:20:15
Hola ... creo que no viene por ahi el error, ya que al principio leo de un xml las columnas que tiene ... y le pongo 4 columnas .....

he continuado haciendo pruebas y haciendo unas cuantas chapuzas ... he conseguido que funcione correctamente, pero claro son chapus ...ahi va:

1.- crear una QRBand2 y ponerla como columnheader ... ponerle el alto a 0

2.- en el report en el beforeprint le hago un

QRBand1.ForceNewColumn := true;


(luego ya veremos si es forcenewcolumn true o false)

PD: esto mas o menos esta ya .... pero como hago para que el registro que tiene que saltar de columna no se muestre? o sea que el que sea el codigo 777777777 no se muestre y luego salte de columna

PD2: muchas gracias por contestar

Edito: Ya he conseguido que no salga la banda que es 7777777777 y que ademas salte de columna.La solucion por si a alguien le interesa algun dia:

1.- Hacer todo lo anterior.

2.- En el beforeprint

procedure TForm1.QRBand1BeforePrint(Sender: TQRCustomBand;
var PrintBand: Boolean);
begin
if copy(ADOTable1.fieldbyname('codigo').AsString,0,12) = '777777777777' then
begin
QRBand1.Visible := false;
printband := false;
end
else
begin
QRBand1.Visible := true;
PrintBand := true;
end;

3.- En el afterprint:
procedure TForm1.QRBand1AfterPrint(Sender: TQRCustomBand;
BandPrinted: Boolean);
begin
BandPrinted := true;
if copy(ADOTable1.fieldbyname('codigo').AsString,0,12) = '777777777777' then
begin
QRBand1.ForceNewColumn := true;
end
else
begin
QRBand1.ForceNewColumn := false;
end;
end;