Buenas tardes Compuin:
He escrito, cortado y pegado (no he compilado) mas o menos lo que yo uso con un array
////////////////////////////////////////////////////////
////////////////////////////////////////////////////////
function FastReportSample(objetoFastReport)
local aDatas:={;
{"Central",100},;
{"Tienda1",200},;
{"Tienda2",300};
}
local i,xx,cField,bGotop,bSkipPlus1,bSkipMinus1,bCheckEOF
local aFrItems:={"NombreAlmacen","Stock"}
i:=1
xx:=0
cField:=""
bGotop :={||i:=1}
bSkipPlus1 :={||i:=i+1}
bSkipMinus1:={||i:=i-1}
bCheckEOF :={||i > len(aDatas)}
objetoFastReport:SetUserDataset("oRsAlmacenes",frItemsString(aFrItems),bGotop,bSkipPlus1,bSkipMinus1,bCheckEOF,{|cField| xx:=frGetValue(cField,aFrItems), aDatas[i,xx]})
return
////////////////////////////////////////////////////////
////////////////////////////////////////////////////////
function frItemsString(aFrItems,aBase)
local cString:="",nTam
default aBase:={}
nTam:=len(aFrItems)
for i:=1 to nTam
if len(aBase)=0
cString+=alltrim(aFrItems[i])
else
cString+=alltrim(aBase[i,1])+"="+alltrim(aFrItems[i])
end if
if i<>len(aFrItems)
cString+=";"
end if
next
return cString
////////////////////////////////////////////////////////
////////////////////////////////////////////////////////
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
Creo que te puede servir.
Ya nos cuentas