Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Exportfile for AOT version 1.0 or later
- Formatversion: 1
- ***Element: MCR
- ; Microsoft Dynamics AX Macro: QueryBuilder udlæst
- ; --------------------------------------------------------------------------------
- JOBVERSION 1
- SOURCE #QueryBuilder
- #// QueryBuilder - macros for brevity
- #
- ##LocalMacro.t
- # #IfNot.empty(%1)
- # #Define.tableStr(%1)
- # #Endif
- # tableNum(#tableStr)
- ##EndMacro
- ##LocalMacro.f
- # fieldNum(#tableStr,%1)
- ##EndMacro
- ##LocalMacro.d
- # tableMethodStr(#tableStr,%1)
- ##EndMacro
- ##LocalMacro.g
- # tableFieldgroupStr(#tableStr,%1)
- ##EndMacro
- #
- ##LocalMacro.t2
- # #IfNot.empty(%1)
- # #Define.tableStr2(%1)
- # #Endif
- # tableNum(#tableStr2)
- ##EndMacro
- ##LocalMacro.f2
- # fieldNum(#tableStr2,%1)
- ##EndMacro
- ##LocalMacro.d2
- # tableMethodStr(#tableStr2,%1)
- ##EndMacro
- ##LocalMacro.g2
- # tableFieldgroupStr(#tableStr2,%1)
- ##EndMacro
- #
- ##LocalMacro.t3
- # #IfNot.empty(%1)
- # #Define.tableStr3(%1)
- # #Endif
- # tableNum(#tableStr3)
- ##EndMacro
- ##LocalMacro.f3
- # fieldNum(#tableStr3,%1)
- ##EndMacro
- ##LocalMacro.d3
- # tableMethodStr(#tableStr3,%1)
- ##EndMacro
- ##LocalMacro.g3
- # tableFieldgroupStr(#tableStr3,%1)
- ##EndMacro
- ENDSOURCE
- ***Element: CLS
- ; Microsoft Dynamics AX Class: QueryBuilder udlæst
- ; --------------------------------------------------------------------------------
- CLSVERSION 1
- CLASS #QueryBuilder
- PROPERTIES
- Name #QueryBuilder
- Extends #
- RunOn #Called from
- ENDPROPERTIES
- METHODS
- Version: 3
- SOURCE #avg
- #public QueryBuilder avg(FieldId field, int arrayIndex = 0)
- #{
- # return this.field(field, arrayIndex, SelectionField::Avg);
- #}
- ENDSOURCE
- SOURCE #browse
- #public QueryBuilder browse()
- #{
- # //new SysTableBrowser().run(q.dataSourceNo(1).table(), q);
- # this.formRun().run();
- # return this;
- #}
- ENDSOURCE
- SOURCE #classDeclaration
- #class QueryBuilder
- #{
- # Query q;
- # QueryBuildDataSource ds;
- # QueryBuildRange qr;
- # List fields;
- #}
- ENDSOURCE
- SOURCE #clearDynalinks
- #public QueryBuilder clearDynalinks()
- #{
- # ds.clearDynalinks();
- # return this;
- #}
- ENDSOURCE
- SOURCE #count
- #public QueryBuilder count(FieldId field, int arrayIndex = 0)
- #{
- # return this.field(field, arrayIndex, SelectionField::Count);
- #}
- ENDSOURCE
- SOURCE #display
- #public QueryBuilder display(str displayMethod)
- #{
- # this.fieldAdd(0, 0, displayMethod);
- # return this;
- #}
- ENDSOURCE
- SOURCE #dynaLink
- #public QueryBuilder dynaLink(FieldId thisField, Common dynamicTable, FieldId dynamicField)
- #{
- # ds.addDynalink(thisField, dynamicTable, dynamicField);
- # return this;
- #}
- ENDSOURCE
- SOURCE #eq
- #public QueryBuilder eq(anytype value)
- #{
- # return this.value(queryValue(value));
- #}
- ENDSOURCE
- SOURCE #existsJoin
- #public QueryBuilder existsJoin(TableId table, str name = tableId2name(table))
- #{
- # return this.join(table, name, JoinMode::ExistsJoin);
- #}
- ENDSOURCE
- SOURCE #field
- #public QueryBuilder field(FieldId field, int arrayIndex = 0, SelectionField type = SelectionField::Database)
- #{
- # DictField df = new DictField(ds.table(), global::fieldId2Ext(field, arrayIndex));
- # int i;
- # if (!df)
- # {
- # throw error(strFmt("@GLS50969", fieldId2name(ds.table(), field), tableId2name(ds.table())));
- # }
- # if (!ds.fields().dynamic())
- # {
- # ds.fields().addField(field, global::fieldId2Ext(type, arrayIndex));
- # }
- # if (arrayIndex)
- # this.fieldAdd(df.id(), arrayIndex, fieldId2name(ds.table(), global::fieldId2Ext(field, arrayIndex)));
- # else
- # {
- # for (i = 1; i <= df.arraySize(); i++)
- # {
- # this.fieldAdd(df.id(), i, fieldId2name(ds.table(), global::fieldId2Ext(field, i)));
- # }
- # }
- # return this;
- #}
- ENDSOURCE
- SOURCE #fieldAdd
- #protected void fieldAdd(FieldId field, int arrayIndex = 0, IdentifierName name = fieldId2name(ds.table(), global::fieldId2Ext(field, arrayIndex)))
- #{
- # fields.addEnd([ds.id(), field, arrayIndex, name]);
- #}
- ENDSOURCE
- SOURCE #fieldGroup
- #public QueryBuilder fieldGroup(IdentifierName fieldGroupName)
- #{
- # DictTable dt = new DictTable(ds.table());
- # DictFieldGroup dfg = new DictFieldGroup(ds.table(), fieldGroupName);
- # int fieldCnt = dfg ? dfg.numberOfFields() : 0;
- # DictField df;
- # DictMethod dm;
- # int f, i;
- # if (!dfg)
- # {
- # throw error(strFmt("@GLS1179", fieldGroupName, tableId2name(ds.table())));
- # }
- # for (f = 1; f <= fieldCnt; f++)
- # {
- # df = dt.fieldObject(dfg.field(f));
- # if (df)
- # {
- # this.field(df.id(), 0);
- # }
- # else
- # {
- # this.fieldAdd(0, 0, dfg.methodName(dfg.field(f)));
- # }
- # }
- # return this;
- #}
- ENDSOURCE
- SOURCE #fieldsAll
- #public QueryBuilder fieldsAll()
- #{
- # ds.fields().dynamic(true);
- # return this;
- #}
- ENDSOURCE
- SOURCE #firstFast
- #protected QueryBuilder firstFast()
- #{
- # ds.firstFast(true);
- # return this;
- #}
- ENDSOURCE
- SOURCE #firstOnly
- #public QueryBuilder firstOnly()
- #{
- # ds.firstOnly(true);
- # return this;
- #}
- ENDSOURCE
- SOURCE #forceNestedLoop
- #public QueryBuilder forceNestedLoop()
- #{
- # q.forceNestedLoop(true);
- # return this;
- #}
- ENDSOURCE
- SOURCE #forceSelectOrder
- #public QueryBuilder forceSelectOrder()
- #{
- # q.forceSelectOrder(true);
- # return this;
- #}
- ENDSOURCE
- SOURCE #form
- #public Form form(IdentifierName formName = '', //formStr(SysTableBrowser),
- # IdentifierName gridName = identifierStr(Grid),
- # boolean buildMode = false)
- #{
- # Form form = new Form(formName, buildMode);
- # FormBuildDataSource fbds;
- # FormBuildDesign design;
- # FormBuildGridControl grid;
- # FormBuildIntControl fc;
- # QueryBuildDataSource qds;
- # ListEnumerator it = fields.getEnumerator();
- # Map q2fds = this.formDataSourceMap(Form);
- # FormControlType ft;
- # Types type;
- # DictType dt;
- # DictMethod dm;
- # int qdsId;
- # int qid;
- # str name;
- # int f;
- # int i;
- #// int fcId;
- # ;
- # design = form.design();
- # if (!design.caption())
- # {
- # design.caption(tableId2pname(q.dataSourceNo(1).table()));
- # }
- # while (it.moveNext())
- # {
- # [qid, f, i, name] = it.current();
- # if (qdsId != qid)
- # {
- # qdsId = qid;
- # qds = q.dataSourceNo(qdsId);
- # fbds = this.formDataSource(form, qds, q2fds);
- # if (!grid)
- # {
- # grid = design.control(gridName);
- # if (!grid)
- # {
- # grid = design.addControl(FormControlType::Grid, gridName);
- # grid.widthMode(1);
- # grid.heightMode(1);
- # }
- # grid.dataSource(fbds.id());
- # }
- # }
- # if (f)
- # {
- # fc = grid.addDataField(fbds.id(), global::fieldId2Ext(f, i));
- # fc.name(q.dataSourceNo(qdsId).name()+'_'+strRem(name,'[]'));
- # }
- # else
- # {
- # dm = new DictMethod(UtilElementType::TableInstanceMethod, fbds.table(), name);
- # if (dm && dm.displayType() != DisplayFunctionType::None)
- # {
- # dt = new DictType(dm.returnId());
- # ft = QueryBuilder::formControlType(dt ? dt.baseType() : dm.returnType());
- # fc = grid.addControl(ft, q.dataSourceNo(qdsId).name()+'_'+name);
- # fc.dataSource(fbds.id());
- # fc.dataMethod(name);
- # }
- # }
- # }
- # return form;
- #}
- ENDSOURCE
- SOURCE #formArgs
- #public Args formArgs(IdentifierName formName = '', //formStr(SysTableBrowser),
- # IdentifierName gridName = identifierStr(Grid))
- #{
- # return new Args(formName, this.form(formName, gridName));
- #}
- ENDSOURCE
- SOURCE #formDataSource
- #protected FormBuildDataSource formDataSource(Form form, QueryBuildDataSource qds, Map q2fds)
- #{
- # FormBuildDataSource fbds, fbds2;
- # if (q2fds.exists(qds.id()))
- # fbds = q2fds.lookup(qds.id());
- # else
- # {
- # fbds = form.addDataSource(qds.name());
- # fbds.table(qds.table());
- # fbds.insertIfEmpty(false);
- # fbds.insertAtEnd(false);
- # if (qds.id() > 1)
- # {
- # fbds2 = q2fds.lookup(qds.parentDataSource().id());
- # fbds.linkType(qds.joinMode() + 3);
- # fbds.joinSource(fbds2.id());
- # }
- # q2fds.insert(qds.id(), fbds);
- # }
- # return fbds;
- #}
- ENDSOURCE
- SOURCE #formDataSourceMap
- #protected Map formDataSourceMap(Form form)
- #{
- # Map q2fds = new Map(Types::Integer, Types::Class);
- # FormBuildDataSource fds;
- # QueryBuildDataSource qds;
- # int d, i;
- # for (d = 1; d <= form.dataSourceCount(); d++)
- # {
- # fds = form.dataSource(d);
- # i = 1;
- # for (qds = q.dataSourceTable(fds.table()); qds; qds = q.dataSourceTable(fds.table(), i))
- # {
- # i++;
- # if (!q2fds.exists(qds.id()))
- # {
- # qds.name(fds.name());
- # q2fds.insert(qds.id(), fds);
- # break;
- # }
- # }
- # }
- # return q2fds;
- #}
- ENDSOURCE
- SOURCE #formRun
- #public FormRun formRun(IdentifierName name = '', //formStr(SysTableBrowser),
- # IdentifierName gridName = identifierStr(Grid),
- # Args args = new Args(name, this.form(name, gridName)))
- #{
- # FormRun fr = classFactory.formRunClass(args);
- # FormGridControl grid;
- # FormDataSource fds;
- # ;
- # fr.init();
- # fr.detach();
- # //grid = fr.control(fr.controlId(gridName));
- # if (grid)
- # {
- # grid.autoSizeColumns(false);
- # }
- # fds = fr.dataSource(1);
- # fds.query(q);
- # return fr;
- #}
- ENDSOURCE
- SOURCE #ge
- #public QueryBuilder ge(anytype value)
- #{
- # return this.value(queryValue(value) + '..');
- #}
- ENDSOURCE
- SOURCE #groupBy
- #public QueryBuilder groupBy(FieldId field, int arrayIndex = 0)
- #{
- # ds.addGroupByField(global::fieldId2Ext(field, arrayIndex));
- # this.fieldAdd(field, arrayIndex);
- # return this;
- #}
- ENDSOURCE
- SOURCE #gt
- #public QueryBuilder gt(anytype value)
- #{
- # return this.value('>' + queryValue(value));
- #}
- ENDSOURCE
- SOURCE #hidden
- #public QueryBuilder hidden()
- #{
- # qr.status(RangeStatus::Hidden);
- # return this;
- #}
- ENDSOURCE
- SOURCE #info
- #public QueryBuilder info()
- #{;
- # info(q.dataSourceNo(1).toString());
- # return this;
- #}
- ENDSOURCE
- SOURCE #innerJoin
- #public QueryBuilder innerJoin(TableId table, str name = tableId2name(table))
- #{
- # return this.join(table, name, JoinMode::InnerJoin);
- #}
- ENDSOURCE
- SOURCE #join
- #public QueryBuilder join(TableId table, str name = tableId2name(table), JoinMode joinMode = JoinMode::InnerJoin)
- #{
- # ds = ds ? ds.addDataSource(table, name) : q.addDataSource(table, name);
- # ds.fields().dynamic(false);
- # ds.fields().clearFieldList();
- # ds.joinMode(joinMode);
- # ds.relations(true);
- # ds.firstFast(false);
- # return this;
- #}
- ENDSOURCE
- SOURCE #le
- #public QueryBuilder le(anytype value)
- #{
- # return this.value('..' + queryValue(value));
- #}
- ENDSOURCE
- SOURCE #like
- #public QueryBuilder like(anytype value)
- #{
- # return this.value('*'+value+'*');
- #}
- ENDSOURCE
- SOURCE #likeAfter
- #public QueryBuilder likeAfter(anytype value)
- #{
- # return this.value(value+'*');
- #}
- ENDSOURCE
- SOURCE #link
- #public QueryBuilder link(FieldId thisField, TableId parentTable, FieldId parentField, int occurrence = 1)
- #{
- # ds.relations(false);
- # ds.addLink(parentField, thisField, q.dataSourceTable(parentTable, occurrence).name());
- # return this;
- #}
- ENDSOURCE
- SOURCE #literals
- #public QueryBuilder literals()
- #{
- # q.literals(true);
- # return this;
- #}
- ENDSOURCE
- SOURCE #locked
- #public QueryBuilder locked()
- #{
- # qr.status(RangeStatus::Locked);
- # return this;
- #}
- ENDSOURCE
- SOURCE #lookup
- #public SysTableLookup lookup(FormControl _callingControl, Common _tmpBuffer = null)
- #{
- # SysTableLookup lookup = SysTableLookup::newParameters(ds.table(), _callingControl);
- # lookup.parmQuery(q);
- # //BP deviation documented
- # lookup.parmTmpBuffer(_tmpBuffer);
- # return lookup;
- #}
- ENDSOURCE
- SOURCE #lt
- #public QueryBuilder lt(anytype value)
- #{
- # return this.value('<' + queryValue(value));
- #}
- ENDSOURCE
- SOURCE #max
- #public QueryBuilder max(FieldId field, int arrayIndex = 0)
- #{
- # return this.field(field, arrayIndex, SelectionField::Max);
- #}
- ENDSOURCE
- SOURCE #min
- #public QueryBuilder min(FieldId field, int arrayIndex = 0)
- #{
- # return this.field(field, arrayIndex, SelectionField::Min);
- #}
- ENDSOURCE
- SOURCE #ne
- #public QueryBuilder ne(anytype value)
- #{
- # return this.value('!=' + queryValue(value));
- #}
- ENDSOURCE
- SOURCE #new
- #protected void new(anytype query = '')
- #{
- # q = new Query(query);
- # ds = q.dataSourceCount() ? q.dataSourceNo(q.dataSourceCount()) : null;
- # fields = new List(Types::Container);
- #}
- ENDSOURCE
- SOURCE #not
- #public QueryBuilder not(anytype value)
- #{
- # return this.value(SysQuery::valueNot(value));
- #}
- ENDSOURCE
- SOURCE #notExistsJoin
- #public QueryBuilder notExistsJoin(TableId table, str name = tableId2name(table))
- #{
- # return this.join(table, name, JoinMode::NoExistsJoin);
- #}
- ENDSOURCE
- SOURCE #orderAsc
- #public QueryBuilder orderAsc(FieldId field, int arrayIndex = 0)
- #{
- # ds.addOrderByField(global::fieldId2Ext(field, arrayIndex), SortOrder::Ascending);
- # return this;
- #}
- ENDSOURCE
- SOURCE #orderDesc
- #public QueryBuilder orderDesc(FieldId field, int arrayIndex = 0)
- #{
- # ds.addOrderByField(global::fieldId2Ext(field, arrayIndex), SortOrder::Descending);
- # return this;
- #}
- ENDSOURCE
- SOURCE #outerJoin
- #public QueryBuilder outerJoin(TableId table, str name = tableId2name(table))
- #{
- # return this.join(table, name, JoinMode::OuterJoin);
- #}
- ENDSOURCE
- SOURCE #query
- #public Query query()
- #{
- # return q;
- #}
- ENDSOURCE
- SOURCE #queryRun
- #public QueryRun queryRun()
- #{
- # return new QueryRun(q);
- #}
- ENDSOURCE
- SOURCE #range
- #public QueryBuilder range(FieldId field, int arrayIndex = 1)
- #{
- # qr = ds.addRange(global::fieldId2Ext(field, arrayIndex));
- # return this;
- #}
- ENDSOURCE
- SOURCE #sum
- #public QueryBuilder sum(FieldId field, int arrayIndex = 0)
- #{
- # return this.field(field, arrayIndex, SelectionField::Sum);
- #}
- ENDSOURCE
- SOURCE #table
- #public QueryBuilder table(TableId table, int occurrence = 1, str name = '')
- #{
- # QueryBuildDataSource ds2 = ds;
- # ds = q.dataSourceTable(table, occurrence);
- # if (!ds)
- # {
- # ds = ds2 ? ds2.addDataSource(table, name) : q.addDataSource(table, name);
- # }
- # return this;
- #}
- ENDSOURCE
- SOURCE #update
- #public QueryBuilder update()
- #{
- # ds.update(true);
- # return this;
- #}
- ENDSOURCE
- SOURCE #value
- #public QueryBuilder value(str value)
- #{
- # qr.value(value);
- # return this;
- #}
- ENDSOURCE
- SOURCE #formControlType
- #protected static FormControlType formControlType(Types type)
- #{
- # switch (type)
- # {
- # case Types::String: return FormControlType::String;
- # case Types::Real: return FormControlType::Real;
- # case Types::Integer: return FormControlType::Integer;
- # case Types::Int64: return FormControlType::Int64;
- # case Types::Date: return FormControlType::Date;
- # case Types::Time: return FormControlType::Time;
- # case Types::UtcDateTime: return FormControlType::DateTime;
- # case Types::Enum: return FormControlType::ComboBox;
- # case Types::Guid: return FormControlType::Guid;
- # }
- # return FormControlType::StaticText;
- #}
- ENDSOURCE
- SOURCE #main
- #static void main(Args args)
- #{
- # #MacroLib.QueryBuilder
- # ;
- # QueryBuilder::selectFrom(#t(CustTable))
- # .field(#f(AccountNum))
- # .field(#f(Name))
- # .fieldGroup(#g(SalesOrder))
- # .info()
- # .browse();
- #/*
- # QueryBuilder::selectFrom(#t(SalesTable))
- # .field(#f(CustAccount))
- # .field(#f(CurrencyCode))
- # .formRun('SalesTableListPage').run();
- #*/
- #/*
- # QueryBuilder::selectFrom(#t(CustTable))
- # .field(#f(AccountNum))
- # .field(#f(Currency))
- # .field(#f(LineDisc),0)
- # //.field(#f(PriceGroup),2)
- # //.field(#f(PriceGroup),1)
- # //.field(#f(PriceGroup),0)
- # .filter(#f(SalesPoolId)).eq('Std')
- # //.filter(#f(CustGroup)).like('g*')
- # .orderDesc(#f(AccountNum))
- # .outerJoin(#t(CustTrans))
- # .field(#f(TransDate))
- # .range(#f(TransDate)).gt(today()-100)
- # .field(#f(RecId))
- # .formRun().run();
- #*/
- #/*
- # QueryBuilder::selectFrom(#t(InventSum))
- # //.field(#f(ItemId))
- # .groupBy(#f(ItemId))
- # .range(#f(ClosedQty)).eq(NoYes::No)
- # .innerJoin(#t(InventDim))
- # //.field(#f(InventSiteId))
- # .groupBy(#f(InventLocationId))
- # .groupBy(#f(InventSiteId))
- # .table(#t(InventSum))
- # .sum(#f(PhysicalInvent))
- # .havingSum(#f(PhysicalInvent)).not(0)
- # .formRun().run();
- #*/
- #}
- ENDSOURCE
- SOURCE #selectFrom
- #public static QueryBuilder selectFrom(TableId table, str name = tableId2name(table))
- #{
- # return new QueryBuilder().innerJoin(table, name);
- #}
- ENDSOURCE
- SOURCE #selectQuery
- #public static QueryBuilder selectQuery(anytype query)
- #{
- # return new QueryBuilder(query);
- #}
- ENDSOURCE
- ENDMETHODS
- ENDCLASS
- ***Element: PRN
- ; Microsoft Dynamics AX Project : QueryBuilder2009 unloaded
- ; --------------------------------------------------------------------------------
- PROJECTVERSION 2
- PROJECT #QueryBuilder2009
- SHARED
- PROPERTIES
- Name #QueryBuilder2009
- ENDPROPERTIES
- PROJECTCLASS ProjectNode
- BEGINNODE
- FILETYPE 0
- UTILTYPE 4
- UTILOBJECTID 0
- NODETYPE 218
- NAME #QueryBuilder
- ENDNODE
- BEGINNODE
- FILETYPE 0
- UTILTYPE 45
- UTILOBJECTID 30610
- NODETYPE 329
- NAME #QueryBuilder
- ENDNODE
- ENDPROJECT
- ***Element: END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement