Hello, Pedro,
Please, first of all, undestand that SetXailerDataSet() is functtion
of Xailer-level. In this function you describe your dataset for FR. So
you need define "link" of datasets at Xailer-level too. How to do it
more comfotable?
Look at function SetMasterXailerDataSet() from my old post to you.
It's not SetXailerDataSet()!! Look attantive at difference. We add new
parameter bMasterBlock for defining our "link".
//-------------------------------------------------------------------------
-----
function SetMasterXailerDataSet(oFrManager, cFrAlias, oDataSet,
bMasterBlock)
//-------------------------------------------------------------------------
-----
local cStr:='', x
for x := 1 to oDataSet:FieldCount()
if oDataSet:aFields[x]:nSQLType = 205
cStr+=oDataSet:FieldName(x) + "^b;"
else
cStr+=oDataSet:FieldName(x) + ";"
endif
next
oFrManager:SetUserDataSet(cFrAlias, cStr,;
{||oDataSet:GoTop(),
Eval( bMasterBlock)},;
{||oDataSet:Skip(1),
Eval( bMasterBlock)}, ;
{||oDataSet:Skip(-1),
Eval( bMasterBlock)},;
{||oDataSet:Eof()},;
{|cField|
oDataSet:oFieldByName(cField):FieldGet()})
Return Nil
//----------------------------------
Ok. Let's we have two datasets MasterDS and DetailDS. Now we can
write like:
-------------------------
SetXailerDataSet(oFr, "Detail", DetailDS)
SetMasterXailerDataSet(oFr, "Master", MasterDS, {||
DetailDS:SetFilter("bla-bla " + MasterDS:SomeFieldValue()) }
------------------------
or
-------------------------
SetXailerDataSet(oFr, "Detail", DetailDS)
SetMasterXailerDataSet(oFr, "Master", MasterDS, {||
DetailDS:Close(), DetailDS:SetSQLParams(MasterDS:SomeFieldValue),
DetailDS:Open() } )
------------------------
or may be some other variants
-------------------------
SetXailerDataSet(oFr, "Detail", DetailDS)
SetMasterXailerDataSet(oFr, "Master", MasterDS, {|| Type here your
variant! ) } )
------------------------
I think idea is clear?