<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/css" href="https://www.schweda.net/style_feed.css" ?>
<rss version="2.0" 
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
    xmlns:atom="http://www.w3.org/2005/Atom"	
	xmlns:dc="http://purl.org/dc/elements/1.1/" > 
<channel>
    <title>schweda.net - Blog</title>
    <link>https://www.schweda.net/</link>
    <description>schweda.net - Blog - Blog-Beitraege</description>
    <language>de-at</language>
    <copyright>Copyright 2006-2026</copyright>
    <generator>schweda.net</generator>
    <managingEditor>heinz.schweda@schweda.net (Heinz Schweda)</managingEditor>
    <webMaster>heinz.schweda@schweda.net (Heinz Schweda)</webMaster>
    <category>Blog</category>
	<atom:link href="https://schweda.net/blog_rss.php?bid=400" rel="self" type="application/rss+xml" />
<item>
<title><![CDATA[Report auf Basis eines Query erstellen]]></title>
<description><![CDATA[
<p>Die Feldgruppe <em>AutoReport </em>einer Tabelle und deren Verwendung beim Drucken von Daten aus einem Formular heraus sollte wohl jedem Dynamics AX-Entwickler bekannt sein. Auf Basis dieser Standard-Funktionalit&auml;t habe ich versucht, selbst einen Report per X++ auf Basis eines Query zu erstellen.
</p>

<div class="div_blog_axcode">static void createReportFromQuery(Args _args)<br />
{<br />
&nbsp;&nbsp;&nbsp; query&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; query;<br />
&nbsp;&nbsp;&nbsp; report&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; report;<br />
&nbsp;&nbsp;&nbsp; reportDesign&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; reportDesign;<br />
&nbsp;&nbsp;&nbsp; reportRun&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; reportRun;<br />
&nbsp;&nbsp;&nbsp; reportSection&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; reportSection;<br />
&nbsp;&nbsp;&nbsp; sysReportRun&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sysReportRun;<br />
&nbsp;&nbsp;&nbsp; reportName&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; reportTemplateName = 'FrontPage';<br />
&nbsp;&nbsp;&nbsp; reportAutoDesignSpecs&nbsp;&nbsp; reportAutoDesignSpecs;<br />
&nbsp;&nbsp;&nbsp; int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ds;<br />
&nbsp;&nbsp;&nbsp; int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; f;<br />
&nbsp;&nbsp;&nbsp; printJobSettings&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printJobSettings = new printJobSettings();<br />
&nbsp;&nbsp;&nbsp; ;<br />
<br />
&nbsp;&nbsp;&nbsp; // Build query<br />
&nbsp;&nbsp;&nbsp; query = new query();<br />
&nbsp;&nbsp;&nbsp; query.addDataSource(tableNum(vendTable));<br />
<br />
&nbsp;&nbsp;&nbsp; query.dataSourceTable(tableNum(vendTable)).addRange(fieldNum(vendTable, vendGroup)).value('10');<br />
<br />
&nbsp;&nbsp;&nbsp; // Add Fieldlist<br />
&nbsp;&nbsp;&nbsp; query.dataSourceTable(tableNum(vendTable)).addSelectionField(fieldNum(vendTable, accountNum));<br />
&nbsp;&nbsp;&nbsp; query.dataSourceTable(tableNum(vendTable)).addSelectionField(fieldNum(vendTable, name));<br />
&nbsp;&nbsp;&nbsp; query.dataSourceTable(tableNum(vendTable)).addSelectionField(fieldNum(vendTable, vendgroup));<br />
<br />
&nbsp;&nbsp;&nbsp; // Build printJobSettings<br />
&nbsp;&nbsp;&nbsp; printJobSettings.setTarget(PrintMedium::Screen);<br />
&nbsp;&nbsp;&nbsp; printJobSettings.format(PrintFormat::PDF);<br />
&nbsp;&nbsp;&nbsp; printJobSettings.fileName(@&quot;C:\Temp\TempReportFromQuery.pdf&quot;);<br />
<br />
&nbsp;&nbsp;&nbsp; // Create report<br />
&nbsp;&nbsp;&nbsp; if( hasSecurityKeyAccess(securityKeyNum(SysDevelopment),<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AccessType::Edit))<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; report = new report();<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sysReportRun&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = classfactory.reportRunClass(new Args(reportstr(SysReportAuto)));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sysReportRun.init();<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sysReportRun.query(query);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (!sysReportRun.queryRun())<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sysReportRun.queryRun(new SysQueryRun(query));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sysReportRun.queryRun().query().interactive(false); <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Report.interactive(!printJobSettings);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Report.query(sysReportRun.queryRun().query());<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; reportDesign = report.addDesign();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; reportDesign.caption(&quot;TmpReportFromQuery&quot;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; reportDesign.reportTemplate(reportTemplateName);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; reportDesign.orientation(printerOrientation::Auto);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; reportAutoDesignSpecs = reportDesign.autoDesignSpecs();<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Add body<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(ds = 1;ds &lt;= sysReportRun.queryRun().query().dataSourceCount(); ds++)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; reportSection = reportAutoDesignSpecs.addSection(reportBlockType::Body, sysReportRun.queryRun().query().dataSourceNo(ds).table());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; reportSection.arrangeMethod(arrangeMethod::Vertical);<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(f=1;f&lt;=sysReportRun.queryRun().query().dataSourceNo(ds).selectionCount();f++)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; reportSection.addControl(sysReportRun.queryRun().query().dataSourceNo(ds).table(), sysReportRun.queryRun().query().dataSourceNo(ds).fields().field(f));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Run the report<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; reportRun = new reportRun(report);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; reportRun.fetch();<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Print the report<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(printJobSettings)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; reportRun.printJobSettings(printJobSettings.packPrintJobSettings());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; reportRun.print();<br />
&nbsp;&nbsp;&nbsp; }<br />
}
</div>

<p>Das Ergebnis des obigen Codes ist ein sehr einfacher Report:
</p>
<br /><a class="div_blog_category_gotodetail" href="https://www.schweda.net/blog_ax.php?bid=400" target="_self" title="Weiterlesen...">Weiterlesen...</a>]]></description>
<category>Microsoft Dynamics AX (Axapta)</category>
<pubDate>Sat, 30 Apr 2011 15:35:00 +0200</pubDate>
<link>https://www.schweda.net/blog_ax.php?bid=400</link>
<comments>https://www.schweda.net/blog_ax.php?bid=400</comments>
<guid isPermaLink="true">https://www.schweda.net/blog_ax.php?bid=400</guid>
<author>heinz.schweda@schweda.net (Heinz Schweda)</author>
<wfw:commentRss>https://www.schweda.net/blog_ax.php?bid=400</wfw:commentRss>
</item>
</channel>
</rss>	
