This way works well, but it is difficult to use for a 'while select'
loop, unless you are putting all of your "inside-loop" processing
logic in the string as well to pass to the runbuf().

Plus it gives you no compile-time checking (although I see your way
using xppCompiler partly solves that problem which is nice) so it's
easy to make mistakes, and hard to find them :)

Andrew Jones


--- In [email protected], "Morten Aasheim"
<[EMAIL PROTECTED]> wrote:
>
> Yes, you can dynamically change the X++ select. It's possible to
build dynamical functions aswell. I've done this a few times.
>
> Try something like:
>
> xppCompiler compiler = new xppCompiler();
> str sql = 'void sql{select .....}'
>
> if(compiler.compile)
>       runbuf(sql);

> Regards,
> Morten 
> -----Original Message-----
> From: ozzage [mailto:[EMAIL PROTECTED]
> Sent: 21. desember 2004 20:23
> To: [email protected]
> Subject: [development-axapta] Re: How to read temporary table ?
>
>
>
> There's no way of dynamically changing an X++ select, but there is a
> trick which can achieve the same effect, as long as you know in
> advance what your possibilities are.
>
> For instance, using your example below:
>
> Declare a boolean for each "possibility"
>
> boolean     filterDim5;
> boolean     filterItemId;
>
> In your code, set them to true or false depending on whether you
need
> to apply the particular associated 'where' clause.
>
> Write the while select as follows:
>
> while select sum(postedqty), sum(deducted) from InventSum
> join    InventTable
> group by ItemGroupId
> where   inventsum.ItemId    == inventtable.ItemId
> &&      (!filterDim5        || inventTable.Dimension[5] == "XX")
> &&      (!filterItemId      || inventTable.ItemId      
like "*test*")
> {
>     // Processing here
> }
>
> If filterDim5 is set to false, then the Dimension[5] filter is
> irrelevant as the !filterDim5 will return true for every row.  If
it's
> set to true, then the other part of the _expression_ (the dimension
> criteria) must be true for the row to be returned.  Ditto for the
> second option.  You can set none, one, or both booleans to true and
> get the required results.
>
> This method lets SQL server do the work instead of returning all the
> possible records to Axapta and then filtering them out in your
code -
> much faster :)
>
> Hope that helps
>
> Andrew Jones
> HGH Business Consultancy
>
> --- In [email protected], "anton_tjiptadi"
> <[EMAIL PROTECTED]> wrote:
> >
> >
> > gee thanks man, why didn't of think of that ? hehe....
> >
> > One more thing, in my insert method I used select statement,
> > >    while select sum(postedqty), sum(deducted) from inventSum
> > >    join inventTable group by itemgroupid
> > >    where inventsum.ItemId==inventtable.ItemId
> > >    {
> > >             tmpTable.ItemGroupId = inventTable.ItemGroupId;
> > >             tmpTable.InventQtyPosted = inventsum.PostedQty;
> > >             tmptable.InventQtyDeducted = inventsum.Deducted;
> > >             tmptable.insert();
> > >           }
> >
> > the problem is I want to extend the criteria but with variables,
> > something like this ->
> > str1 = " and dimension5_ == 'XX'"
> > str2 = " and itemid like == '*test*"
> >
> > so in the select, can be extend like this -> "where... " + str1 +
str2
> >
> > I already try like that but.. ppfffffhhhh....
> >
> > I knew I can use Conection method and SQL Statement, so I can
just
> > wrote ordinary SQL statement, but that's another story, right now
I
> > want to use X++ rule :)
> >
> >
> > thanks again for the reply :)
> >
> >
> >
> >
> >
> > In [email protected], Melega �rp�d
<[EMAIL PROTECTED]>
> > wrote:
> > >
> > > Hello!
> > >
> > > 
> > >
> > > Try this!
> > >
> > > 
> > >
> > > tmp_mlr_invt_sum Process_InventSum(str _Branch, str _ItemGroup)
> > >
> > > {
> > >
> > >       /.../
> > >
> > > }
> > >
> > >
> > >
> > > public boolean fetch()
> > > {
> > >       /.../
> > >
> > > 
> > >
> > > //insert data to temp table
> > > _tmpTab.setTmpData(this.Process_InventSum(BranchId,ItemGroup));
> > >
> > > 
> > >
> > >             /.../
> > >
> > > }
> > >
> > > 
> > >
> > > Best regards,
> > >
> > > Arpad Melega
> > >
> > > 
> > >
> > > ________________________________
> > >
> > > From: anton_tjiptadi [mailto:[EMAIL PROTECTED]
> > > Sent: Monday, December 20, 2004 2:50 AM
> > > To: [email protected]
> > > Subject: [development-axapta] How to read temporary table ?
> > >
> > > 
> > >
> > >
> > >
> > > Hi, I created a temporary table, but when i can't get fetch it
in
> > my
> > > report.
> > >
> > > this is my step :
> > > I. crate a method in my report.
> > > Process_InventSum(str _Branch, str _ItemGroup)
> > > {
> > >    InventSum           InventSum;
> > >    InventTable         InventTable;
> > >    tmp_mlr_invt_sum    tmpTable;
> > >    ;
> > >
> > >    while select sum(postedqty), sum(deducted) from inventSum
> > >    join inventTable group by itemgroupid
> > >    where inventsum.ItemId==inventtable.ItemId
> > >    {
> > >             tmpTable.ItemGroupId = inventTable.ItemGroupId;
> > >             tmpTable.InventQtyPosted = inventsum.PostedQty;
> > >             tmptable.InventQtyDeducted = inventsum.Deducted;
> > >             tmptable.insert();
> > >           }
> > >      
> > > return tmpTable;
> > > }
> > >
> > > II. Override method Fetch in that report
> > > public boolean fetch()
> > >       {
> > >           queryrun    qr;
> > >           boolean     ret;
> > >           Tmp_mlr_invt_sum    _tmpTab;
> > >           ;
> > >      
> > >           if (element.args().caller())
> > >           {
> > >               cls_InvSum = element.args().caller();   //
calling
> > class
> > >               BranchId = cls_InvSum.parmBranch();
> > >               ItemGroup = cls_InvSum.parmItemGroup();
> > >           }
> > >      
> > >           //insert data to temp table
> > >           this.Process_InventSum(BranchId,ItemGroup);
> > >            
> > >           while select * from _tmpTab
> > >           {
> > >               DS_Tmp_MLR_Invt_Sum = qr.get(tablenum
> > > (tmp_mlr_invt_sum));
> > >     
> > >               element.send(DS_Tmp_MLR_Invt_Sum);
> > >               ret = true;
> > >           }
> > >      
> > >           return ret;
> > > }
> > >
> > > It seems the insert method running (I trace it in debug), but
in my
> > > fetch method, in statement "while select .... ", they just pass
it
> > > like there is no record in my table.
> > >
> > >
> > > rgds,
> > > Anton
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > > Yahoo! Groups Sponsor
> > >
> > > ADVERTISEMENT
> > > click here
> >
<http://us.ard.yahoo.com/SIG=129p8n7j6/M=294855.5468653.6549235.300117
> >
6/D=groups/S=1705006764:HM/EXP=1103615058/A=2455396/R=0/SIG=119u9qmi7/
> > *http:/smallbusiness.yahoo.com/domains/>
> > >
> > >  <http://us.adserver.yahoo.com/l?
> >
M=294855.5468653.6549235.3001176/D=groups/S=:HM/A=2455396/rand=5091559
> > 80>
> > >
> > > 
> > >
> > > ________________________________
> > >
> > > Yahoo! Groups Links
> > >
> > > *      To visit your group on the web, go to:
> > >       http://groups.yahoo.com/group/development-axapta/
> > >        
> > > *      To unsubscribe from this group, send an email to:
> > >       [EMAIL PROTECTED]
> > <mailto:[EMAIL PROTECTED]
> > subject=Unsubscribe>
> > >        
> > > *      Your use of Yahoo! Groups is subject to the Yahoo! Terms of
> > Service <http://docs.yahoo.com/info/terms/> .
> > >
> > >
> > >
> > > [Non-text portions of this message have been removed]
>
>
>
>
>
>

> Yahoo! Groups Links







Yahoo! Groups Sponsor

Get unlimited calls to

U.S./Canada



Yahoo! Groups Links

Reply via email to