Page 1 of 1

Arrays en FastReport (SOLUCIONADO)

Posted: Tue May 18, 2010 10:51 am
by Armando
Amigos:

Alguien que me ayude a entender cómo ligar el siguiente array a FastReport, tanto para
diseñar el reporte como para la impresión ?

aRegs[nRegs,nCols]

Saludos

Re: Arrays en FastReport

Posted: Tue May 18, 2010 11:45 am
by jrestojeda
Hola Armando...

Code: Select all

oFr:SetUserDataSet( "aMiArray","COLUMNA1;COLUMNA2;COLUMNA3;COLUMNA4",;
                     {||np := 1}, ;                   //--> bGoTop
                     {||np := np + 1}, ;              //--> bSkipPlus
                     {||np := np - 1}, ;              //--> bSkipMinus
                     {||np > Len(aMiArray)}, ;        //--> bCheckEOF
                     {|aField|nCol := IIF( aField == "COLUMNA1"   , 1,;
                                      IIF( aField == "COLUMNA2"   , 2,;
                                      IIF( aField == "COLUMNA3"   , 3,;
                                      IIF( aField == "COLUMNA4"   , 4, )))), aMiArray[np, nCol] } )
Espero te sirva...
Saludos, Esteban.

Re: Arrays en FastReport

Posted: Tue May 18, 2010 4:41 pm
by Armando
Esteban:

Gracias por tu apoyo pero fijate que no doy pie con bola :oops:
mira tengo un array de la siguiente forma:

aRegs[nReg,nCol]

Imaginemos que tiene 5 registros (nReg = 5) y que cada registro
tiene 4 campos (nCols = 4), cómo debería definir el código para
pasarlo a FastReport y abrir el diseñador que me permita usar el
array para formar el reporte ??

Saludos

Re: Arrays en FastReport

Posted: Tue May 18, 2010 4:57 pm
by jrestojeda
Armando...
Es así como te lo escribí.
En lo que escribí anteriormente lo que para tí es: "aRegs" para mí es: "aMiArray"
Prueba y dime que resulta.
Saludos, Esteban.

Re: Arrays en FastReport

Posted: Tue May 18, 2010 5:00 pm
by Armando
Esteban:

Tienes razón, ya lo logré, es muy sencillo !.

Saludos y muchas gracias

Re: Arrays en FastReport

Posted: Tue May 18, 2010 6:40 pm
by Armando
Esteban:

He logrado incluir el ARRAY en FastReport y he usado sus elementos para
constuir el reporte, mejor dicho la etiqueta, son etiquetas !.

Perooo, no logro que me imprima más de una, lo que necesito es que me
imprima una etiqueta por cada elemento (nRegs) del array.

aRegs[nRegs,nCols]

Saludos

Re: Arrays en FastReport

Posted: Tue May 18, 2010 10:31 pm
by ermatica
Hola Armando,

En las bandas (Master,Detail, etc.) hay una propiedad: "RowCount" donde puedes ponerle en número que equivale a las veces que quieres visualizar/imprimir dicha la banda, en tu caso la longitud del array. Es decir no asocias la banda a un origen de datos recordset ó DBF.

No se si te puede servir...

Un saludo
Ernesto

Re: Arrays en FastReport

Posted: Tue May 18, 2010 11:26 pm
by Armando
Ernesto:

Gracias por tu respuesta.

Mira, tengo entendido que en el caso de una DBF o RecordSet la banda se imprime tantas
veces como registros haya en el DBF o RecordSet.

Tambien tengo entendido que en el caso de los Array sucede lo mismo, me parece que no
puedo utilizar el RowCount porque en cada impresión la longitud del Array puede variar, mejor
dicho varía, deduzco que algo me hace falta definir en el formato pero no doy con qué :oops:

Saludos

Re: Arrays en FastReport

Posted: Wed May 19, 2010 8:21 am
by ermatica
Hola Armando,

Si la longitud del array varía, puedes ponerlo asi:

nLenArray:=len(aArray)
oFr:SetProperty("MasterData1", "RowCount",nLenArray)

Un saludo,
Ernesto.

Re: Arrays en FastReport

Posted: Wed May 19, 2010 1:37 pm
by Armando
Ernesto:

Fijate que sí pero no :D

Con tu solución se imprime el primer elemento del array pero tantas veces
como longitud tenga el array.

Deduzco que algo me falta en el diseño, pero no se qué :oops:

Saludos

Re: Arrays en FastReport (SOLUCIONADO)

Posted: Wed May 19, 2010 2:19 pm
by Armando
Amigos:

Muchas por sus respuestas y sugerencias, este problema ha quedado solucionado.

Saludos

Re: Arrays en FastReport (SOLUCIONADO)

Posted: Thu Sep 08, 2011 6:02 pm
by Carlosrebu
Alguien sabe de esto necesito hacer una matriz para almacenar un total.
Usamos el "TStringList" de clase como una matriz para el almacenamiento de sumas ". Vamos a almacenar datos numéricos
valores como cadenas. Al mismo tiempo, la primera línea en la lista corresponde al valor de la
primer grupo, etc La variable de valor entero (que vamos a aumentar después de imprimir el siguiente
grupo) se utiliza para calcular el número del grupo.
Por lo tanto, nuestro script se verá como sigue:

esto es lo que estoy haciendo:


procedure GroupFooter1OnBeforePrint(Sender: TfrxComponent);
begin
if then
Lista.Add(FloatToStr(SUM(<masterQuery."SALDO">,MasterData1)));
Inc(i);

{ if (Copy(<masterQuery."SALDO">, 1, 1) < '10') and (Copy(<masterQuery."SALDO">, 1, 1) > '10')and (chk_pendientes.Checked) then
begin
MasterData1.Visible := True;
GroupFooter1.visible := True;
end
else
begin
MasterData1.Visible := False;
GroupFooter1.visible := False;
end; }
end;


procedure GroupHeader1OnBeforePrint(Sender: TfrxComponent);
begin
if Engine.FinalPass then
Memo27.Text := 'Sum: ' + List;
end;

procedure frxReport1OnStartReport(Sender: TfrxComponent);
begin
Lista := TStringList.Create;
end;

procedure frxReport1OnStopReport(Sender: TfrxComponent);
begin
Lista.Free;
end;


solo quiero que cuando la suma del saldo sea <> 0 muestre en la banda lo distinto de cero