Advertisement
JanKjeldsen

QueryBuilder 2009

Mar 7th, 2018
183
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 22.86 KB | None | 0 0
  1. Exportfile for AOT version 1.0 or later
  2. Formatversion: 1
  3.  
  4. ***Element: MCR
  5.  
  6. ; Microsoft Dynamics AX Macro: QueryBuilder udlæst
  7. ; --------------------------------------------------------------------------------
  8. JOBVERSION 1
  9.  
  10. SOURCE #QueryBuilder
  11. #// QueryBuilder - macros for brevity
  12. #
  13. ##LocalMacro.t
  14. # #IfNot.empty(%1)
  15. # #Define.tableStr(%1)
  16. # #Endif
  17. # tableNum(#tableStr)
  18. ##EndMacro
  19. ##LocalMacro.f
  20. # fieldNum(#tableStr,%1)
  21. ##EndMacro
  22. ##LocalMacro.d
  23. # tableMethodStr(#tableStr,%1)
  24. ##EndMacro
  25. ##LocalMacro.g
  26. # tableFieldgroupStr(#tableStr,%1)
  27. ##EndMacro
  28. #
  29. ##LocalMacro.t2
  30. # #IfNot.empty(%1)
  31. # #Define.tableStr2(%1)
  32. # #Endif
  33. # tableNum(#tableStr2)
  34. ##EndMacro
  35. ##LocalMacro.f2
  36. # fieldNum(#tableStr2,%1)
  37. ##EndMacro
  38. ##LocalMacro.d2
  39. # tableMethodStr(#tableStr2,%1)
  40. ##EndMacro
  41. ##LocalMacro.g2
  42. # tableFieldgroupStr(#tableStr2,%1)
  43. ##EndMacro
  44. #
  45. ##LocalMacro.t3
  46. # #IfNot.empty(%1)
  47. # #Define.tableStr3(%1)
  48. # #Endif
  49. # tableNum(#tableStr3)
  50. ##EndMacro
  51. ##LocalMacro.f3
  52. # fieldNum(#tableStr3,%1)
  53. ##EndMacro
  54. ##LocalMacro.d3
  55. # tableMethodStr(#tableStr3,%1)
  56. ##EndMacro
  57. ##LocalMacro.g3
  58. # tableFieldgroupStr(#tableStr3,%1)
  59. ##EndMacro
  60. ENDSOURCE
  61.  
  62. ***Element: CLS
  63.  
  64. ; Microsoft Dynamics AX Class: QueryBuilder udlæst
  65. ; --------------------------------------------------------------------------------
  66. CLSVERSION 1
  67.  
  68. CLASS #QueryBuilder
  69. PROPERTIES
  70. Name #QueryBuilder
  71. Extends #
  72. RunOn #Called from
  73. ENDPROPERTIES
  74.  
  75. METHODS
  76. Version: 3
  77. SOURCE #avg
  78. #public QueryBuilder avg(FieldId field, int arrayIndex = 0)
  79. #{
  80. # return this.field(field, arrayIndex, SelectionField::Avg);
  81. #}
  82. ENDSOURCE
  83. SOURCE #browse
  84. #public QueryBuilder browse()
  85. #{
  86. # //new SysTableBrowser().run(q.dataSourceNo(1).table(), q);
  87. # this.formRun().run();
  88. # return this;
  89. #}
  90. ENDSOURCE
  91. SOURCE #classDeclaration
  92. #class QueryBuilder
  93. #{
  94. # Query q;
  95. # QueryBuildDataSource ds;
  96. # QueryBuildRange qr;
  97. # List fields;
  98. #}
  99. ENDSOURCE
  100. SOURCE #clearDynalinks
  101. #public QueryBuilder clearDynalinks()
  102. #{
  103. # ds.clearDynalinks();
  104. # return this;
  105. #}
  106. ENDSOURCE
  107. SOURCE #count
  108. #public QueryBuilder count(FieldId field, int arrayIndex = 0)
  109. #{
  110. # return this.field(field, arrayIndex, SelectionField::Count);
  111. #}
  112. ENDSOURCE
  113. SOURCE #display
  114. #public QueryBuilder display(str displayMethod)
  115. #{
  116. # this.fieldAdd(0, 0, displayMethod);
  117. # return this;
  118. #}
  119. ENDSOURCE
  120. SOURCE #dynaLink
  121. #public QueryBuilder dynaLink(FieldId thisField, Common dynamicTable, FieldId dynamicField)
  122. #{
  123. # ds.addDynalink(thisField, dynamicTable, dynamicField);
  124. # return this;
  125. #}
  126. ENDSOURCE
  127. SOURCE #eq
  128. #public QueryBuilder eq(anytype value)
  129. #{
  130. # return this.value(queryValue(value));
  131. #}
  132. ENDSOURCE
  133. SOURCE #existsJoin
  134. #public QueryBuilder existsJoin(TableId table, str name = tableId2name(table))
  135. #{
  136. # return this.join(table, name, JoinMode::ExistsJoin);
  137. #}
  138. ENDSOURCE
  139. SOURCE #field
  140. #public QueryBuilder field(FieldId field, int arrayIndex = 0, SelectionField type = SelectionField::Database)
  141. #{
  142. # DictField df = new DictField(ds.table(), global::fieldId2Ext(field, arrayIndex));
  143. # int i;
  144. # if (!df)
  145. # {
  146. # throw error(strFmt("@GLS50969", fieldId2name(ds.table(), field), tableId2name(ds.table())));
  147. # }
  148. # if (!ds.fields().dynamic())
  149. # {
  150. # ds.fields().addField(field, global::fieldId2Ext(type, arrayIndex));
  151. # }
  152. # if (arrayIndex)
  153. # this.fieldAdd(df.id(), arrayIndex, fieldId2name(ds.table(), global::fieldId2Ext(field, arrayIndex)));
  154. # else
  155. # {
  156. # for (i = 1; i <= df.arraySize(); i++)
  157. # {
  158. # this.fieldAdd(df.id(), i, fieldId2name(ds.table(), global::fieldId2Ext(field, i)));
  159. # }
  160. # }
  161. # return this;
  162. #}
  163. ENDSOURCE
  164. SOURCE #fieldAdd
  165. #protected void fieldAdd(FieldId field, int arrayIndex = 0, IdentifierName name = fieldId2name(ds.table(), global::fieldId2Ext(field, arrayIndex)))
  166. #{
  167. # fields.addEnd([ds.id(), field, arrayIndex, name]);
  168. #}
  169. ENDSOURCE
  170. SOURCE #fieldGroup
  171. #public QueryBuilder fieldGroup(IdentifierName fieldGroupName)
  172. #{
  173. # DictTable dt = new DictTable(ds.table());
  174. # DictFieldGroup dfg = new DictFieldGroup(ds.table(), fieldGroupName);
  175. # int fieldCnt = dfg ? dfg.numberOfFields() : 0;
  176. # DictField df;
  177. # DictMethod dm;
  178. # int f, i;
  179. # if (!dfg)
  180. # {
  181. # throw error(strFmt("@GLS1179", fieldGroupName, tableId2name(ds.table())));
  182. # }
  183. # for (f = 1; f <= fieldCnt; f++)
  184. # {
  185. # df = dt.fieldObject(dfg.field(f));
  186. # if (df)
  187. # {
  188. # this.field(df.id(), 0);
  189. # }
  190. # else
  191. # {
  192. # this.fieldAdd(0, 0, dfg.methodName(dfg.field(f)));
  193. # }
  194. # }
  195. # return this;
  196. #}
  197. ENDSOURCE
  198. SOURCE #fieldsAll
  199. #public QueryBuilder fieldsAll()
  200. #{
  201. # ds.fields().dynamic(true);
  202. # return this;
  203. #}
  204. ENDSOURCE
  205. SOURCE #firstFast
  206. #protected QueryBuilder firstFast()
  207. #{
  208. # ds.firstFast(true);
  209. # return this;
  210. #}
  211. ENDSOURCE
  212. SOURCE #firstOnly
  213. #public QueryBuilder firstOnly()
  214. #{
  215. # ds.firstOnly(true);
  216. # return this;
  217. #}
  218. ENDSOURCE
  219. SOURCE #forceNestedLoop
  220. #public QueryBuilder forceNestedLoop()
  221. #{
  222. # q.forceNestedLoop(true);
  223. # return this;
  224. #}
  225. ENDSOURCE
  226. SOURCE #forceSelectOrder
  227. #public QueryBuilder forceSelectOrder()
  228. #{
  229. # q.forceSelectOrder(true);
  230. # return this;
  231. #}
  232. ENDSOURCE
  233. SOURCE #form
  234. #public Form form(IdentifierName formName = '', //formStr(SysTableBrowser),
  235. # IdentifierName gridName = identifierStr(Grid),
  236. # boolean buildMode = false)
  237. #{
  238. # Form form = new Form(formName, buildMode);
  239. # FormBuildDataSource fbds;
  240. # FormBuildDesign design;
  241. # FormBuildGridControl grid;
  242. # FormBuildIntControl fc;
  243. # QueryBuildDataSource qds;
  244. # ListEnumerator it = fields.getEnumerator();
  245. # Map q2fds = this.formDataSourceMap(Form);
  246. # FormControlType ft;
  247. # Types type;
  248. # DictType dt;
  249. # DictMethod dm;
  250. # int qdsId;
  251. # int qid;
  252. # str name;
  253. # int f;
  254. # int i;
  255. #// int fcId;
  256. # ;
  257. # design = form.design();
  258. # if (!design.caption())
  259. # {
  260. # design.caption(tableId2pname(q.dataSourceNo(1).table()));
  261. # }
  262. # while (it.moveNext())
  263. # {
  264. # [qid, f, i, name] = it.current();
  265. # if (qdsId != qid)
  266. # {
  267. # qdsId = qid;
  268. # qds = q.dataSourceNo(qdsId);
  269. # fbds = this.formDataSource(form, qds, q2fds);
  270. # if (!grid)
  271. # {
  272. # grid = design.control(gridName);
  273. # if (!grid)
  274. # {
  275. # grid = design.addControl(FormControlType::Grid, gridName);
  276. # grid.widthMode(1);
  277. # grid.heightMode(1);
  278. # }
  279. # grid.dataSource(fbds.id());
  280. # }
  281. # }
  282. # if (f)
  283. # {
  284. # fc = grid.addDataField(fbds.id(), global::fieldId2Ext(f, i));
  285. # fc.name(q.dataSourceNo(qdsId).name()+'_'+strRem(name,'[]'));
  286. # }
  287. # else
  288. # {
  289. # dm = new DictMethod(UtilElementType::TableInstanceMethod, fbds.table(), name);
  290. # if (dm && dm.displayType() != DisplayFunctionType::None)
  291. # {
  292. # dt = new DictType(dm.returnId());
  293. # ft = QueryBuilder::formControlType(dt ? dt.baseType() : dm.returnType());
  294. # fc = grid.addControl(ft, q.dataSourceNo(qdsId).name()+'_'+name);
  295. # fc.dataSource(fbds.id());
  296. # fc.dataMethod(name);
  297. # }
  298. # }
  299. # }
  300. # return form;
  301. #}
  302. ENDSOURCE
  303. SOURCE #formArgs
  304. #public Args formArgs(IdentifierName formName = '', //formStr(SysTableBrowser),
  305. # IdentifierName gridName = identifierStr(Grid))
  306. #{
  307. # return new Args(formName, this.form(formName, gridName));
  308. #}
  309. ENDSOURCE
  310. SOURCE #formDataSource
  311. #protected FormBuildDataSource formDataSource(Form form, QueryBuildDataSource qds, Map q2fds)
  312. #{
  313. # FormBuildDataSource fbds, fbds2;
  314. # if (q2fds.exists(qds.id()))
  315. # fbds = q2fds.lookup(qds.id());
  316. # else
  317. # {
  318. # fbds = form.addDataSource(qds.name());
  319. # fbds.table(qds.table());
  320. # fbds.insertIfEmpty(false);
  321. # fbds.insertAtEnd(false);
  322. # if (qds.id() > 1)
  323. # {
  324. # fbds2 = q2fds.lookup(qds.parentDataSource().id());
  325. # fbds.linkType(qds.joinMode() + 3);
  326. # fbds.joinSource(fbds2.id());
  327. # }
  328. # q2fds.insert(qds.id(), fbds);
  329. # }
  330. # return fbds;
  331. #}
  332. ENDSOURCE
  333. SOURCE #formDataSourceMap
  334. #protected Map formDataSourceMap(Form form)
  335. #{
  336. # Map q2fds = new Map(Types::Integer, Types::Class);
  337. # FormBuildDataSource fds;
  338. # QueryBuildDataSource qds;
  339. # int d, i;
  340. # for (d = 1; d <= form.dataSourceCount(); d++)
  341. # {
  342. # fds = form.dataSource(d);
  343. # i = 1;
  344. # for (qds = q.dataSourceTable(fds.table()); qds; qds = q.dataSourceTable(fds.table(), i))
  345. # {
  346. # i++;
  347. # if (!q2fds.exists(qds.id()))
  348. # {
  349. # qds.name(fds.name());
  350. # q2fds.insert(qds.id(), fds);
  351. # break;
  352. # }
  353. # }
  354. # }
  355. # return q2fds;
  356. #}
  357. ENDSOURCE
  358. SOURCE #formRun
  359. #public FormRun formRun(IdentifierName name = '', //formStr(SysTableBrowser),
  360. # IdentifierName gridName = identifierStr(Grid),
  361. # Args args = new Args(name, this.form(name, gridName)))
  362. #{
  363. # FormRun fr = classFactory.formRunClass(args);
  364. # FormGridControl grid;
  365. # FormDataSource fds;
  366. # ;
  367. # fr.init();
  368. # fr.detach();
  369. # //grid = fr.control(fr.controlId(gridName));
  370. # if (grid)
  371. # {
  372. # grid.autoSizeColumns(false);
  373. # }
  374. # fds = fr.dataSource(1);
  375. # fds.query(q);
  376. # return fr;
  377. #}
  378. ENDSOURCE
  379. SOURCE #ge
  380. #public QueryBuilder ge(anytype value)
  381. #{
  382. # return this.value(queryValue(value) + '..');
  383. #}
  384. ENDSOURCE
  385. SOURCE #groupBy
  386. #public QueryBuilder groupBy(FieldId field, int arrayIndex = 0)
  387. #{
  388. # ds.addGroupByField(global::fieldId2Ext(field, arrayIndex));
  389. # this.fieldAdd(field, arrayIndex);
  390. # return this;
  391. #}
  392. ENDSOURCE
  393. SOURCE #gt
  394. #public QueryBuilder gt(anytype value)
  395. #{
  396. # return this.value('>' + queryValue(value));
  397. #}
  398. ENDSOURCE
  399. SOURCE #hidden
  400. #public QueryBuilder hidden()
  401. #{
  402. # qr.status(RangeStatus::Hidden);
  403. # return this;
  404. #}
  405. ENDSOURCE
  406. SOURCE #info
  407. #public QueryBuilder info()
  408. #{;
  409. # info(q.dataSourceNo(1).toString());
  410. # return this;
  411. #}
  412. ENDSOURCE
  413. SOURCE #innerJoin
  414. #public QueryBuilder innerJoin(TableId table, str name = tableId2name(table))
  415. #{
  416. # return this.join(table, name, JoinMode::InnerJoin);
  417. #}
  418. ENDSOURCE
  419. SOURCE #join
  420. #public QueryBuilder join(TableId table, str name = tableId2name(table), JoinMode joinMode = JoinMode::InnerJoin)
  421. #{
  422. # ds = ds ? ds.addDataSource(table, name) : q.addDataSource(table, name);
  423. # ds.fields().dynamic(false);
  424. # ds.fields().clearFieldList();
  425. # ds.joinMode(joinMode);
  426. # ds.relations(true);
  427. # ds.firstFast(false);
  428. # return this;
  429. #}
  430. ENDSOURCE
  431. SOURCE #le
  432. #public QueryBuilder le(anytype value)
  433. #{
  434. # return this.value('..' + queryValue(value));
  435. #}
  436. ENDSOURCE
  437. SOURCE #like
  438. #public QueryBuilder like(anytype value)
  439. #{
  440. # return this.value('*'+value+'*');
  441. #}
  442. ENDSOURCE
  443. SOURCE #likeAfter
  444. #public QueryBuilder likeAfter(anytype value)
  445. #{
  446. # return this.value(value+'*');
  447. #}
  448. ENDSOURCE
  449. SOURCE #link
  450. #public QueryBuilder link(FieldId thisField, TableId parentTable, FieldId parentField, int occurrence = 1)
  451. #{
  452. # ds.relations(false);
  453. # ds.addLink(parentField, thisField, q.dataSourceTable(parentTable, occurrence).name());
  454. # return this;
  455. #}
  456. ENDSOURCE
  457. SOURCE #literals
  458. #public QueryBuilder literals()
  459. #{
  460. # q.literals(true);
  461. # return this;
  462. #}
  463. ENDSOURCE
  464. SOURCE #locked
  465. #public QueryBuilder locked()
  466. #{
  467. # qr.status(RangeStatus::Locked);
  468. # return this;
  469. #}
  470. ENDSOURCE
  471. SOURCE #lookup
  472. #public SysTableLookup lookup(FormControl _callingControl, Common _tmpBuffer = null)
  473. #{
  474. # SysTableLookup lookup = SysTableLookup::newParameters(ds.table(), _callingControl);
  475. # lookup.parmQuery(q);
  476. # //BP deviation documented
  477. # lookup.parmTmpBuffer(_tmpBuffer);
  478. # return lookup;
  479. #}
  480. ENDSOURCE
  481. SOURCE #lt
  482. #public QueryBuilder lt(anytype value)
  483. #{
  484. # return this.value('<' + queryValue(value));
  485. #}
  486. ENDSOURCE
  487. SOURCE #max
  488. #public QueryBuilder max(FieldId field, int arrayIndex = 0)
  489. #{
  490. # return this.field(field, arrayIndex, SelectionField::Max);
  491. #}
  492. ENDSOURCE
  493. SOURCE #min
  494. #public QueryBuilder min(FieldId field, int arrayIndex = 0)
  495. #{
  496. # return this.field(field, arrayIndex, SelectionField::Min);
  497. #}
  498. ENDSOURCE
  499. SOURCE #ne
  500. #public QueryBuilder ne(anytype value)
  501. #{
  502. # return this.value('!=' + queryValue(value));
  503. #}
  504. ENDSOURCE
  505. SOURCE #new
  506. #protected void new(anytype query = '')
  507. #{
  508. # q = new Query(query);
  509. # ds = q.dataSourceCount() ? q.dataSourceNo(q.dataSourceCount()) : null;
  510. # fields = new List(Types::Container);
  511. #}
  512. ENDSOURCE
  513. SOURCE #not
  514. #public QueryBuilder not(anytype value)
  515. #{
  516. # return this.value(SysQuery::valueNot(value));
  517. #}
  518. ENDSOURCE
  519. SOURCE #notExistsJoin
  520. #public QueryBuilder notExistsJoin(TableId table, str name = tableId2name(table))
  521. #{
  522. # return this.join(table, name, JoinMode::NoExistsJoin);
  523. #}
  524. ENDSOURCE
  525. SOURCE #orderAsc
  526. #public QueryBuilder orderAsc(FieldId field, int arrayIndex = 0)
  527. #{
  528. # ds.addOrderByField(global::fieldId2Ext(field, arrayIndex), SortOrder::Ascending);
  529. # return this;
  530. #}
  531. ENDSOURCE
  532. SOURCE #orderDesc
  533. #public QueryBuilder orderDesc(FieldId field, int arrayIndex = 0)
  534. #{
  535. # ds.addOrderByField(global::fieldId2Ext(field, arrayIndex), SortOrder::Descending);
  536. # return this;
  537. #}
  538. ENDSOURCE
  539. SOURCE #outerJoin
  540. #public QueryBuilder outerJoin(TableId table, str name = tableId2name(table))
  541. #{
  542. # return this.join(table, name, JoinMode::OuterJoin);
  543. #}
  544. ENDSOURCE
  545. SOURCE #query
  546. #public Query query()
  547. #{
  548. # return q;
  549. #}
  550. ENDSOURCE
  551. SOURCE #queryRun
  552. #public QueryRun queryRun()
  553. #{
  554. # return new QueryRun(q);
  555. #}
  556. ENDSOURCE
  557. SOURCE #range
  558. #public QueryBuilder range(FieldId field, int arrayIndex = 1)
  559. #{
  560. # qr = ds.addRange(global::fieldId2Ext(field, arrayIndex));
  561. # return this;
  562. #}
  563. ENDSOURCE
  564. SOURCE #sum
  565. #public QueryBuilder sum(FieldId field, int arrayIndex = 0)
  566. #{
  567. # return this.field(field, arrayIndex, SelectionField::Sum);
  568. #}
  569. ENDSOURCE
  570. SOURCE #table
  571. #public QueryBuilder table(TableId table, int occurrence = 1, str name = '')
  572. #{
  573. # QueryBuildDataSource ds2 = ds;
  574. # ds = q.dataSourceTable(table, occurrence);
  575. # if (!ds)
  576. # {
  577. # ds = ds2 ? ds2.addDataSource(table, name) : q.addDataSource(table, name);
  578. # }
  579. # return this;
  580. #}
  581. ENDSOURCE
  582. SOURCE #update
  583. #public QueryBuilder update()
  584. #{
  585. # ds.update(true);
  586. # return this;
  587. #}
  588. ENDSOURCE
  589. SOURCE #value
  590. #public QueryBuilder value(str value)
  591. #{
  592. # qr.value(value);
  593. # return this;
  594. #}
  595. ENDSOURCE
  596. SOURCE #formControlType
  597. #protected static FormControlType formControlType(Types type)
  598. #{
  599. # switch (type)
  600. # {
  601. # case Types::String: return FormControlType::String;
  602. # case Types::Real: return FormControlType::Real;
  603. # case Types::Integer: return FormControlType::Integer;
  604. # case Types::Int64: return FormControlType::Int64;
  605. # case Types::Date: return FormControlType::Date;
  606. # case Types::Time: return FormControlType::Time;
  607. # case Types::UtcDateTime: return FormControlType::DateTime;
  608. # case Types::Enum: return FormControlType::ComboBox;
  609. # case Types::Guid: return FormControlType::Guid;
  610. # }
  611. # return FormControlType::StaticText;
  612. #}
  613. ENDSOURCE
  614. SOURCE #main
  615. #static void main(Args args)
  616. #{
  617. # #MacroLib.QueryBuilder
  618. # ;
  619. # QueryBuilder::selectFrom(#t(CustTable))
  620. # .field(#f(AccountNum))
  621. # .field(#f(Name))
  622. # .fieldGroup(#g(SalesOrder))
  623. # .info()
  624. # .browse();
  625. #/*
  626. # QueryBuilder::selectFrom(#t(SalesTable))
  627. # .field(#f(CustAccount))
  628. # .field(#f(CurrencyCode))
  629. # .formRun('SalesTableListPage').run();
  630. #*/
  631. #/*
  632. # QueryBuilder::selectFrom(#t(CustTable))
  633. # .field(#f(AccountNum))
  634. # .field(#f(Currency))
  635. # .field(#f(LineDisc),0)
  636. # //.field(#f(PriceGroup),2)
  637. # //.field(#f(PriceGroup),1)
  638. # //.field(#f(PriceGroup),0)
  639. # .filter(#f(SalesPoolId)).eq('Std')
  640. # //.filter(#f(CustGroup)).like('g*')
  641. # .orderDesc(#f(AccountNum))
  642. # .outerJoin(#t(CustTrans))
  643. # .field(#f(TransDate))
  644. # .range(#f(TransDate)).gt(today()-100)
  645. # .field(#f(RecId))
  646. # .formRun().run();
  647. #*/
  648. #/*
  649. # QueryBuilder::selectFrom(#t(InventSum))
  650. # //.field(#f(ItemId))
  651. # .groupBy(#f(ItemId))
  652. # .range(#f(ClosedQty)).eq(NoYes::No)
  653. # .innerJoin(#t(InventDim))
  654. # //.field(#f(InventSiteId))
  655. # .groupBy(#f(InventLocationId))
  656. # .groupBy(#f(InventSiteId))
  657. # .table(#t(InventSum))
  658. # .sum(#f(PhysicalInvent))
  659. # .havingSum(#f(PhysicalInvent)).not(0)
  660. # .formRun().run();
  661. #*/
  662. #}
  663. ENDSOURCE
  664. SOURCE #selectFrom
  665. #public static QueryBuilder selectFrom(TableId table, str name = tableId2name(table))
  666. #{
  667. # return new QueryBuilder().innerJoin(table, name);
  668. #}
  669. ENDSOURCE
  670. SOURCE #selectQuery
  671. #public static QueryBuilder selectQuery(anytype query)
  672. #{
  673. # return new QueryBuilder(query);
  674. #}
  675. ENDSOURCE
  676. ENDMETHODS
  677. ENDCLASS
  678.  
  679. ***Element: PRN
  680.  
  681. ; Microsoft Dynamics AX Project : QueryBuilder2009 unloaded
  682. ; --------------------------------------------------------------------------------
  683. PROJECTVERSION 2
  684.  
  685. PROJECT #QueryBuilder2009
  686. SHARED
  687. PROPERTIES
  688. Name #QueryBuilder2009
  689. ENDPROPERTIES
  690.  
  691. PROJECTCLASS ProjectNode
  692. BEGINNODE
  693. FILETYPE 0
  694. UTILTYPE 4
  695. UTILOBJECTID 0
  696. NODETYPE 218
  697. NAME #QueryBuilder
  698. ENDNODE
  699. BEGINNODE
  700. FILETYPE 0
  701. UTILTYPE 45
  702. UTILOBJECTID 30610
  703. NODETYPE 329
  704. NAME #QueryBuilder
  705. ENDNODE
  706. ENDPROJECT
  707.  
  708.  
  709. ***Element: END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement