TDolphin com FastrReport

Post Reply
aferra
Posts: 88
Joined: Wed Apr 28, 2010 6:34 pm

TDolphin com FastrReport

Post by aferra »

Antes de hacerlo con DBF

oFrPrn:SetWorkArea( <alias>, Select( <alias> ) )

Alguien que utiliza saben cómo hacerlo utilizando el TDolphin?
Mike Serra
Posts: 287
Joined: Fri Apr 14, 2006 5:52 pm
Location: Córdoba (España)

Re: TDolphin com FastrReport

Post by Mike Serra »

Buenos días aferra:

No he probado nunca, pero intenta esto:

oFrPrn:SetUserDataset(<Recordset>,<Cadena de caracteres separados por comas con los nombre de _>,<bloque de código para ir al principio>,<bloque de código para incrementar uno>,<bloque de código para disminuir uno>,<bloque de código para obtener el valor del campo>)

Te pongo un ejemplo con un array de datos. Imaginate un array (aVentas) de 2 columnas con nombre de cliente y total de ventas:
{
{"CLIENTE 1",1000},
{"CLIENTE 2",500},
{"CLIENTE 3",250}
}
Yo lo uso asi:

local aNombreCampos:{"NombreCliente","TotalVentas"}
oFrnPrn:SetUserDataset(aVentas,"NombreCliente;TotalVentas",{||i:=1},{||i:=i+1},{||i:=i-1},{||i > len(aVentas)},{|cField| xx:=frGetValue(cField,aNombreCampos), aVentas[i,xx]})

Código de FrGetValue:
Cometido: devolver la posición de cada campo, es decir:
Si es NombreCliente -> devolverá 1
Si es TotalVentas-> devolverá 2

function frGetValue(cField,aFrItems)
local nPos:=0
nPos:=ascan(aFrItems,{|v| upper(alltrim(v))=upper(alltrim(cField))})
if nPos=0
nPos:=1
end if
return nPos

Fundamentalmente seria sustituir lo que te he indicado por los bloques de código de movimiento del recordset y como el recordset obtiene el valor de _.

Un Saludo,
Post Reply