<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://www.aras.com/Community/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/"><channel><title>Further Example of Federated Data</title><link>http://www.aras.com/Community/wikis/kb/further-example-of-federated-data.aspx</link><description>Open to the Aras PLM Community:  Articles on tailoring, customizing, programming and generally how to work with Aras Innovator</description><dc:language>en-US</dc:language><generator>CommunityServer 2008.5 SP2 (Debug Build: 40407.4157)</generator><item><title>Further Example of Federated Data</title><link>http://www.aras.com/Community/wikis/kb/further-example-of-federated-data.aspx</link><pubDate>Tue, 09 Jun 2009 01:18:50 GMT</pubDate><guid isPermaLink="false">197d54df-59b2-4bdb-87c5-e951a5aa0c96:63</guid><dc:creator>Brian Pye</dc:creator><comments>http://www.aras.com/Community/wikis/kb/further-example-of-federated-data/comments.aspx</comments><description>Current revision posted to Aras Innovator KnowledgeBase by Brian Pye on 6/8/2009 9:18:50 PM&lt;br /&gt;
&lt;h2&gt;Further Example of Federated Data&lt;/h2&gt;
&lt;div style="font-size: 90%;"&gt;Filed under: Federation&lt;/div&gt;

&lt;p&gt;Further to the main article on &lt;a href="/Community/wikis/kb/how-to-use-federation.aspx"&gt;How To Use Federation&lt;/a&gt;&amp;nbsp;following is a simple implementation of&amp;nbsp; using Federated Data from an External Database (in this case an MS Access Database) and displaying it in a Relationship Tab.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Use Case:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;We wish to display on hand inventory and part description information from an external database as a tab of the Part ItemType.&lt;/p&gt;
&lt;p&gt;The external database is located somewhere that the Innovator Server has network&amp;nbsp;access to (in the simplest case this is actually on the same server as Innovator Server).&lt;/p&gt;
&lt;p&gt;The Part Inventory relationship will be added to the Part ItemType.&lt;/p&gt;
&lt;p&gt;When a user selects the tab a connection to the external database will be made a on hand inventory and part description information will be displayed.&lt;/p&gt;
&lt;p&gt;Innovator Items:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ItemType&amp;nbsp; Part 
&lt;ul&gt;
&lt;li&gt;Implementation:&amp;nbsp; Table&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;RelationshipType&amp;nbsp; Part Inventory 
&lt;ul&gt;
&lt;li&gt;Source: Part&lt;/li&gt;
&lt;li&gt;No Related&lt;/li&gt;
&lt;li&gt;Relationship ItemType Implementation: Federated - No data stored in Innovator&lt;/li&gt;
&lt;li&gt;ServerEvents : onGet&lt;/li&gt;
&lt;li&gt;Properties: 
&lt;ul&gt;
&lt;li&gt;db_description = String, 100 char&lt;/li&gt;
&lt;li&gt;on_hand_inventory = Integer&lt;/li&gt;
&lt;li&gt;part_number = String, 32 char&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Implementation of Example:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;An OleDb interface will be used as this is an external MS Access database.&lt;/p&gt;
&lt;p&gt;The remote database contains a table &amp;quot;Parts&amp;quot; which inclues the following fields:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Partnum&amp;nbsp;&amp;nbsp; - Part number of item. This is the key we will search on and is the same as the values in the Part ItemType in Innovator.&lt;/li&gt;
&lt;li&gt;TotalStock&amp;nbsp;&amp;nbsp; - Summary of all stock in all locations that stock might be held in.&lt;/li&gt;
&lt;li&gt;Descrip&amp;nbsp;&amp;nbsp; -&amp;nbsp;Description of the part.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Part Inventory, ServerEvent, onGet:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:small;color:#008000;"&gt;&lt;span style="font-size:small;color:#008000;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:small;color:#0000ff;"&gt;&lt;span style="font-size:small;color:#0000ff;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;i&gt;&lt;span style="font-size:10pt;color:green;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;// GetOnHandInventory&lt;span style="text-decoration: line-through; color: red;"&gt;&amp;lt;o:p&amp;gt;&amp;lt;/o:p&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;i&gt;&lt;span style="font-size:10pt;color:green;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;// Called from ServerEvents of Federated Item ItemType &amp;quot;Part Inventory&lt;span style="text-decoration: line-through; color: red;"&gt;&amp;quot;&amp;lt;o:p&amp;gt;&amp;lt;/o:p&amp;gt;&lt;/span&gt;&lt;span style="background: SpringGreen;"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;i&gt;&lt;span style="font-size:10pt;color:green;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;// Connects to external database via OleDb calls&lt;span style="text-decoration: line-through; color: red;"&gt;&amp;lt;o:p&amp;gt;&amp;lt;/o:p&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;i&gt;&lt;span style="font-size:10pt;color:green;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;// Populates on_hand_inventory and db_description fields of federated item&lt;span style="text-decoration: line-through; color: red;"&gt;&amp;lt;o:p&amp;gt;&amp;lt;/o:p&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;i&gt;&lt;span style="font-size:10pt;color:green;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;// This method updates the grid for the relationship item and is implemented&lt;span style="text-decoration: line-through; color: red;"&gt;&amp;lt;o:p&amp;gt;&amp;lt;/o:p&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;i&gt;&lt;span style="font-size:10pt;color:green;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;// as an onGet ServerEvent.&lt;span style="text-decoration: line-through; color: red;"&gt;&amp;lt;o:p&amp;gt;&amp;lt;/o:p&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;i&gt;&lt;span style="font-size:10pt;color:green;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;// Get the item_number, it&amp;#39;s not passed automatically&lt;span style="text-decoration: line-through; color: red;"&gt;&amp;lt;o:p&amp;gt;&amp;lt;/o:p&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;Item qry0 &lt;span style="color:red;"&gt;=&lt;/span&gt; &lt;b&gt;&lt;span style="color:blue;"&gt;this&lt;/span&gt;&lt;/b&gt;&lt;span style="color:red;"&gt;.&lt;/span&gt;newItem(&lt;span style="color:purple;"&gt;&amp;quot;Part&amp;quot;&lt;/span&gt;);&lt;span style="text-decoration: line-through; color: red;"&gt;&amp;lt;o:p&amp;gt;&amp;lt;/o:p&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;qry0&lt;span style="color:red;"&gt;.&lt;/span&gt;setAttribute(&lt;span style="color:purple;"&gt;&amp;quot;select&amp;quot;&lt;/span&gt;,&lt;span style="color:purple;"&gt;&amp;quot;item_number&amp;quot;&lt;/span&gt;);&lt;span style="text-decoration: line-through; color: red;"&gt;&amp;lt;o:p&amp;gt;&amp;lt;/o:p&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;qry0&lt;span style="color:red;"&gt;.&lt;/span&gt;setID(&lt;b&gt;&lt;span style="color:blue;"&gt;this&lt;/span&gt;&lt;/b&gt;&lt;span style="color:red;"&gt;.&lt;/span&gt;getProperty(&lt;span style="color:purple;"&gt;&amp;quot;source_id&amp;quot;&lt;/span&gt;));&lt;span style="text-decoration: line-through; color: red;"&gt;&amp;lt;o:p&amp;gt;&amp;lt;/o:p&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;Item res&lt;span style="color:red;"&gt;=&lt;/span&gt;qry0&lt;span style="color:red;"&gt;.&lt;/span&gt;apply(&lt;span style="color:purple;"&gt;&amp;quot;get&amp;quot;&lt;/span&gt;);&lt;span style="text-decoration: line-through; color: red;"&gt;&amp;lt;o:p&amp;gt;&amp;lt;/o:p&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;if&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt; (res&lt;span style="color:red;"&gt;.&lt;/span&gt;isError()) &lt;b&gt;&lt;span style="color:blue;"&gt;return&lt;/span&gt;&lt;/b&gt; res;&lt;span style="text-decoration: line-through; color: red;"&gt;&amp;lt;o:p&amp;gt;&amp;lt;/o:p&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;i&gt;&lt;span style="font-size:10pt;color:green;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;// get the Part Number (key) that we will use in the external database&lt;span style="text-decoration: line-through; color: red;"&gt;&amp;lt;o:p&amp;gt;&amp;lt;/o:p&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;i&gt;&lt;span style="font-size:10pt;color:green;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;// to search on.&lt;span style="text-decoration: line-through; color: red;"&gt;&amp;lt;o:p&amp;gt;&amp;lt;/o:p&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;string&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt; partnum;&lt;span style="text-decoration: line-through; color: red;"&gt;&amp;lt;o:p&amp;gt;&amp;lt;/o:p&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;partnum &lt;span style="color:red;"&gt;=&lt;/span&gt; res&lt;span style="color:red;"&gt;.&lt;/span&gt;getProperty(&lt;span style="color:purple;"&gt;&amp;quot;item_number&amp;quot;&lt;/span&gt;);&lt;span style="text-decoration: line-through; color: red;"&gt;&amp;lt;o:p&amp;gt;&amp;lt;/o:p&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="text-decoration: line-through; color: red;"&gt;&amp;lt;o:p&amp;gt;&amp;lt;/o:p&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;i&gt;&lt;span style="font-size:10pt;color:green;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;// Connect to external (in this case MS Access) database&lt;span style="text-decoration: line-through; color: red;"&gt;&amp;lt;o:p&amp;gt;&amp;lt;/o:p&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;System&lt;span style="color:red;"&gt;.&lt;/span&gt;Data&lt;span style="color:red;"&gt;.&lt;/span&gt;OleDb&lt;span style="color:red;"&gt;.&lt;/span&gt;OleDbConnection myConnection &lt;span style="color:red;"&gt;=&lt;/span&gt; &lt;b&gt;&lt;span style="color:blue;"&gt;new&lt;/span&gt;&lt;/b&gt; System&lt;span style="color:red;"&gt;.&lt;/span&gt;Data&lt;span style="color:red;"&gt;.&lt;/span&gt;OleDb&lt;span style="color:red;"&gt;.&lt;/span&gt;OleDbConnection(&lt;span style="color:purple;"&gt;@&amp;quot;Provider=Microsoft.Jet.OLEDB.4.0; Data Source = &lt;a&gt;\\server\directory\database.mdb&lt;/a&gt;;&amp;quot;&lt;/span&gt;);&lt;span style="text-decoration: line-through; color: red;"&gt;&amp;lt;o:p&amp;gt;&amp;lt;/o:p&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;i&gt;&lt;span style="font-size:10pt;color:green;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;// construct sql Select statement to retrieve data from external database.&lt;span style="text-decoration: line-through; color: red;"&gt;&amp;lt;o:p&amp;gt;&amp;lt;/o:p&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;string&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt; sqltext &lt;span style="color:red;"&gt;=&lt;/span&gt; &lt;span style="color:purple;"&gt;&amp;quot;Select Partnum,totalstock,descrip from Parts Where Partnum = &amp;#39;&amp;quot;&lt;/span&gt; &lt;span style="color:red;"&gt;+&lt;/span&gt; partnum &lt;span style="color:red;"&gt;+&lt;/span&gt; &lt;span style="color:purple;"&gt;&amp;quot;&amp;#39;;&amp;quot;&lt;/span&gt;;&lt;span style="text-decoration: line-through; color: red;"&gt;&amp;lt;o:p&amp;gt;&amp;lt;/o:p&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="text-decoration: line-through; color: red;"&gt;&amp;lt;o:p&amp;gt;&amp;lt;/o:p&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;System&lt;span style="color:red;"&gt;.&lt;/span&gt;Data&lt;span style="color:red;"&gt;.&lt;/span&gt;OleDb&lt;span style="color:red;"&gt;.&lt;/span&gt;OleDbCommand com &lt;span style="color:red;"&gt;=&lt;/span&gt; &lt;b&gt;&lt;span style="color:blue;"&gt;new&lt;/span&gt;&lt;/b&gt; System&lt;span style="color:red;"&gt;.&lt;/span&gt;Data&lt;span style="color:red;"&gt;.&lt;/span&gt;OleDb&lt;span style="color:red;"&gt;.&lt;/span&gt;OleDbCommand(sqltext);&lt;span style="text-decoration: line-through; color: red;"&gt;&amp;lt;o:p&amp;gt;&amp;lt;/o:p&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;com&lt;span style="color:red;"&gt;.&lt;/span&gt;Connection &lt;span style="color:red;"&gt;=&lt;/span&gt; myConnection;&lt;span style="text-decoration: line-through; color: red;"&gt;&amp;lt;o:p&amp;gt;&amp;lt;/o:p&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;myConnection&lt;span style="color:red;"&gt;.&lt;/span&gt;Open();&lt;span style="text-decoration: line-through; color: red;"&gt;&amp;lt;o:p&amp;gt;&amp;lt;/o:p&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;System&lt;span style="color:red;"&gt;.&lt;/span&gt;Data&lt;span style="color:red;"&gt;.&lt;/span&gt;OleDb&lt;span style="color:red;"&gt;.&lt;/span&gt;OleDbDataReader myDataReader &lt;span style="color:red;"&gt;=&lt;/span&gt; com&lt;span style="color:red;"&gt;.&lt;/span&gt;ExecuteReader();&lt;span style="text-decoration: line-through; color: red;"&gt;&amp;lt;o:p&amp;gt;&amp;lt;/o:p&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="text-decoration: line-through; color: red;"&gt;&amp;lt;o:p&amp;gt;&amp;lt;/o:p&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="text-decoration: line-through; color: red;"&gt;&amp;lt;o:p&amp;gt;&amp;lt;/o:p&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;i&gt;&lt;span style="font-size:10pt;color:green;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;// create a Part Inventory item&lt;span style="text-decoration: line-through; color: red;"&gt;&amp;lt;o:p&amp;gt;&amp;lt;/o:p&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;Item res5 &lt;span style="color:red;"&gt;=&lt;/span&gt; &lt;b&gt;&lt;span style="color:blue;"&gt;this&lt;/span&gt;&lt;/b&gt;&lt;span style="color:red;"&gt;.&lt;/span&gt;newItem(&lt;span style="color:purple;"&gt;&amp;quot;Part Inventory&amp;quot;&lt;/span&gt;);&lt;span style="text-decoration: line-through; color: red;"&gt;&amp;lt;o:p&amp;gt;&amp;lt;/o:p&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;string&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt; newid &lt;span style="color:red;"&gt;=&lt;/span&gt; getNewID();&lt;span style="text-decoration: line-through; color: red;"&gt;&amp;lt;o:p&amp;gt;&amp;lt;/o:p&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;res5&lt;span style="color:red;"&gt;.&lt;/span&gt;setID(newid);&lt;span style="text-decoration: line-through; color: red;"&gt;&amp;lt;o:p&amp;gt;&amp;lt;/o:p&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;i&gt;&lt;span style="font-size:10pt;color:green;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;// Call apply on the item to create it in the server. After this is done&lt;span style="text-decoration: line-through; color: red;"&gt;&amp;lt;o:p&amp;gt;&amp;lt;/o:p&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;i&gt;&lt;span style="font-size:10pt;color:green;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;// we can populate with the returned information from the external database&lt;span style="text-decoration: line-through; color: red;"&gt;&amp;lt;o:p&amp;gt;&amp;lt;/o:p&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;res5 &lt;span style="color:red;"&gt;=&lt;/span&gt; res5&lt;span style="color:red;"&gt;.&lt;/span&gt;apply();&lt;span style="text-decoration: line-through; color: red;"&gt;&amp;lt;o:p&amp;gt;&amp;lt;/o:p&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;res5&lt;span style="color:red;"&gt;.&lt;/span&gt;setProperty(&lt;span style="color:purple;"&gt;&amp;quot;part_number&amp;quot;&lt;/span&gt;,partnum);&lt;span style="text-decoration: line-through; color: red;"&gt;&amp;lt;o:p&amp;gt;&amp;lt;/o:p&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="text-decoration: line-through; color: red;"&gt;&amp;lt;o:p&amp;gt;&amp;lt;/o:p&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;i&gt;&lt;span style="font-size:10pt;color:green;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;// Check if there are any rows returned and supply default information &lt;span style="text-decoration: line-through; color: red;"&gt;&amp;lt;o:p&amp;gt;&amp;lt;/o:p&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;i&gt;&lt;span style="font-size:10pt;color:green;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;// if they are not&lt;span style="text-decoration: line-through; color: red;"&gt;&amp;lt;o:p&amp;gt;&amp;lt;/o:p&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;if&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt; (myDataReader&lt;span style="color:red;"&gt;.&lt;/span&gt;HasRows &lt;span style="color:red;"&gt;!=&lt;/span&gt; true)&lt;span style="text-decoration: line-through; color: red;"&gt;&amp;lt;o:p&amp;gt;&amp;lt;/o:p&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;{&lt;span style="text-decoration: line-through; color: red;"&gt;&amp;lt;o:p&amp;gt;&amp;lt;/o:p&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;res5&lt;span style="color:red;"&gt;.&lt;/span&gt;setProperty(&lt;span style="color:purple;"&gt;&amp;quot;on_hand_inventory&amp;quot;&lt;/span&gt;,&lt;span style="color:purple;"&gt;&amp;quot;0&amp;quot;&lt;/span&gt;);&lt;span style="text-decoration: line-through; color: red;"&gt;&amp;lt;o:p&amp;gt;&amp;lt;/o:p&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;res5&lt;span style="color:red;"&gt;.&lt;/span&gt;setProperty(&lt;span style="color:purple;"&gt;&amp;quot;db_description&amp;quot;&lt;/span&gt;,&lt;span style="color:purple;"&gt;&amp;quot;Not Found&amp;quot;&lt;/span&gt;);&lt;span style="text-decoration: line-through; color: red;"&gt;&amp;lt;o:p&amp;gt;&amp;lt;/o:p&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;}&lt;span style="text-decoration: line-through; color: red;"&gt;&amp;lt;o:p&amp;gt;&amp;lt;/o:p&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;else&lt;span style="text-decoration: line-through; color: red;"&gt;&amp;lt;o:p&amp;gt;&amp;lt;/o:p&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;{&lt;span style="text-decoration: line-through; color: red;"&gt;&amp;lt;o:p&amp;gt;&amp;lt;/o:p&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;i&gt;&lt;span style="color:green;"&gt;// get the data from the dataReader and populate the PartInventory item&lt;span style="text-decoration: line-through; color: red;"&gt;&amp;lt;o:p&amp;gt;&amp;lt;/o:p&amp;gt;&lt;/span&gt;&lt;span style="background: SpringGreen;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;myDataReader&lt;span style="color:red;"&gt;.&lt;/span&gt;Read();&lt;span style="text-decoration: line-through; color: red;"&gt;&amp;lt;o:p&amp;gt;&amp;lt;/o:p&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;res5&lt;span style="color:red;"&gt;.&lt;/span&gt;setProperty(&lt;span style="color:purple;"&gt;&amp;quot;on_hand_inventory&amp;quot;&lt;/span&gt;,Convert&lt;span style="color:red;"&gt;.&lt;/span&gt;ToString(myDataReader&lt;span style="color:red;"&gt;.&lt;/span&gt;GetDouble(1)));&lt;span style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="text-decoration: line-through; color: red;"&gt;&amp;lt;o:p&amp;gt;&amp;lt;/o:p&amp;gt;&lt;/span&gt;&lt;span style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;res5&lt;span style="color:red;"&gt;.&lt;/span&gt;setProperty(&lt;span style="color:purple;"&gt;&amp;quot;db_description&amp;quot;&lt;/span&gt;,myDataReader&lt;span style="color:red;"&gt;.&lt;/span&gt;GetString(2));&lt;span style="text-decoration: line-through; color: red;"&gt;&amp;lt;o:p&amp;gt;&amp;lt;/o:p&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;}&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;;&lt;span style="text-decoration: line-through; color: red;"&gt;&amp;lt;o:p&amp;gt;&amp;lt;/o:p&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;myConnection&lt;span style="color:red;"&gt;.&lt;/span&gt;Close();&lt;span style="text-decoration: line-through; color: red;"&gt;&amp;lt;o:p&amp;gt;&amp;lt;/o:p&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="text-decoration: line-through; color: red;"&gt;&amp;lt;o:p&amp;gt;&amp;lt;/o:p&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;i&gt;&lt;span style="font-size:10pt;color:green;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;// return the PartInventory item to be populated in the grid.&lt;span style="text-decoration: line-through; color: red;"&gt;&amp;lt;o:p&amp;gt;&amp;lt;/o:p&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;return&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt; res5;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;span style="text-decoration: line-through; color: red;"&gt;&amp;lt;o:p&amp;gt;&amp;lt;/o:p&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Once the connection is open it is of course possible to update the database with new information from&amp;nbsp;Innovator.&lt;/p&gt;</description></item><item><title>Further Example of Federated Data</title><link>http://www.aras.com/Community/wikis/kb/further-example-of-federated-data/revision/1.aspx</link><pubDate>Tue, 09 Jun 2009 01:09:43 GMT</pubDate><guid isPermaLink="false">197d54df-59b2-4bdb-87c5-e951a5aa0c96:79</guid><dc:creator>Brian Pye</dc:creator><comments>http://www.aras.com/Community/wikis/kb/further-example-of-federated-data/comments.aspx</comments><description>Revision 1 posted to Aras Innovator KnowledgeBase by Brian Pye on 6/8/2009 9:09:43 PM&lt;br /&gt;
&lt;p&gt;Further to the main article on &lt;a href="/Community/wikis/kb/how-to-use-federation.aspx"&gt;How To Use Federation&lt;/a&gt;&amp;nbsp;following is a simple implementation of&amp;nbsp; using Federated Data from an External Database (in this case an MS Access Database) and displaying it in a Relationship Tab.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Use Case:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;We wish to display on hand inventory and part description information from an external database as a tab of the Part ItemType.&lt;/p&gt;
&lt;p&gt;The external database is located somewhere that the Innovator Server has network&amp;nbsp;access to (in the simplest case this is actually on the same server as Innovator Server).&lt;/p&gt;
&lt;p&gt;The Part Inventory relationship will be added to the Part ItemType.&lt;/p&gt;
&lt;p&gt;When a user selects the tab a connection to the external database will be made a on hand inventory and part description information will be displayed.&lt;/p&gt;
&lt;p&gt;Innovator Items:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ItemType&amp;nbsp; Part 
&lt;ul&gt;
&lt;li&gt;Implementation:&amp;nbsp; Table&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;RelationshipType&amp;nbsp; Part Inventory 
&lt;ul&gt;
&lt;li&gt;Source: Part&lt;/li&gt;
&lt;li&gt;No Related&lt;/li&gt;
&lt;li&gt;Relationship ItemType Implementation: Federated - No data stored in Innovator&lt;/li&gt;
&lt;li&gt;ServerEvents : onGet&lt;/li&gt;
&lt;li&gt;Properties: 
&lt;ul&gt;
&lt;li&gt;db_description = String, 100 char&lt;/li&gt;
&lt;li&gt;on_hand_inventory = Integer&lt;/li&gt;
&lt;li&gt;part_number = String, 32 char&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Implementation of Example:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;An OleDb interface will be used as this is an external MS Access database.&lt;/p&gt;
&lt;p&gt;The remote database contains a table &amp;quot;Parts&amp;quot; which inclues the following fields:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Partnum&amp;nbsp;&amp;nbsp; - Part number of item. This is the key we will search on and is the same as the values in the Part ItemType in Innovator.&lt;/li&gt;
&lt;li&gt;TotalStock&amp;nbsp;&amp;nbsp; - Summary of all stock in all locations that stock might be held in.&lt;/li&gt;
&lt;li&gt;Descrip&amp;nbsp;&amp;nbsp; -&amp;nbsp;Description of the part.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Part Inventory, ServerEvent, onGet:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:small;color:#008000;"&gt;&lt;span style="font-size:small;color:#008000;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:small;color:#0000ff;"&gt;&lt;span style="font-size:small;color:#0000ff;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;i&gt;&lt;span style="font-size:10pt;color:green;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;// GetOnHandInventory&amp;lt;o:p&amp;gt;&amp;lt;/o:p&amp;gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;i&gt;&lt;span style="font-size:10pt;color:green;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;// Called from ServerEvents of Federated Item ItemType &amp;quot;Part Inventory&amp;quot;&amp;lt;o:p&amp;gt;&amp;lt;/o:p&amp;gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;i&gt;&lt;span style="font-size:10pt;color:green;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;// Connects to external database via OleDb calls&amp;lt;o:p&amp;gt;&amp;lt;/o:p&amp;gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;i&gt;&lt;span style="font-size:10pt;color:green;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;// Populates on_hand_inventory and db_description fields of federated item&amp;lt;o:p&amp;gt;&amp;lt;/o:p&amp;gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;i&gt;&lt;span style="font-size:10pt;color:green;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;// This method updates the grid for the relationship item and is implemented&amp;lt;o:p&amp;gt;&amp;lt;/o:p&amp;gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;i&gt;&lt;span style="font-size:10pt;color:green;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;// as an onGet ServerEvent.&amp;lt;o:p&amp;gt;&amp;lt;/o:p&amp;gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;i&gt;&lt;span style="font-size:10pt;color:green;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;// Get the item_number, it&amp;#39;s not passed automatically&amp;lt;o:p&amp;gt;&amp;lt;/o:p&amp;gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;Item qry0 &lt;span style="color:red;"&gt;=&lt;/span&gt; &lt;b&gt;&lt;span style="color:blue;"&gt;this&lt;/span&gt;&lt;/b&gt;&lt;span style="color:red;"&gt;.&lt;/span&gt;newItem(&lt;span style="color:purple;"&gt;&amp;quot;Part&amp;quot;&lt;/span&gt;);&amp;lt;o:p&amp;gt;&amp;lt;/o:p&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;qry0&lt;span style="color:red;"&gt;.&lt;/span&gt;setAttribute(&lt;span style="color:purple;"&gt;&amp;quot;select&amp;quot;&lt;/span&gt;,&lt;span style="color:purple;"&gt;&amp;quot;item_number&amp;quot;&lt;/span&gt;);&amp;lt;o:p&amp;gt;&amp;lt;/o:p&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;qry0&lt;span style="color:red;"&gt;.&lt;/span&gt;setID(&lt;b&gt;&lt;span style="color:blue;"&gt;this&lt;/span&gt;&lt;/b&gt;&lt;span style="color:red;"&gt;.&lt;/span&gt;getProperty(&lt;span style="color:purple;"&gt;&amp;quot;source_id&amp;quot;&lt;/span&gt;));&amp;lt;o:p&amp;gt;&amp;lt;/o:p&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;Item res&lt;span style="color:red;"&gt;=&lt;/span&gt;qry0&lt;span style="color:red;"&gt;.&lt;/span&gt;apply(&lt;span style="color:purple;"&gt;&amp;quot;get&amp;quot;&lt;/span&gt;);&amp;lt;o:p&amp;gt;&amp;lt;/o:p&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;if&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt; (res&lt;span style="color:red;"&gt;.&lt;/span&gt;isError()) &lt;b&gt;&lt;span style="color:blue;"&gt;return&lt;/span&gt;&lt;/b&gt; res;&amp;lt;o:p&amp;gt;&amp;lt;/o:p&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;i&gt;&lt;span style="font-size:10pt;color:green;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;// get the Part Number (key) that we will use in the external database&amp;lt;o:p&amp;gt;&amp;lt;/o:p&amp;gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;i&gt;&lt;span style="font-size:10pt;color:green;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;// to search on.&amp;lt;o:p&amp;gt;&amp;lt;/o:p&amp;gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;string&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt; partnum;&amp;lt;o:p&amp;gt;&amp;lt;/o:p&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;partnum &lt;span style="color:red;"&gt;=&lt;/span&gt; res&lt;span style="color:red;"&gt;.&lt;/span&gt;getProperty(&lt;span style="color:purple;"&gt;&amp;quot;item_number&amp;quot;&lt;/span&gt;);&amp;lt;o:p&amp;gt;&amp;lt;/o:p&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&amp;lt;o:p&amp;gt;&amp;lt;/o:p&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;i&gt;&lt;span style="font-size:10pt;color:green;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;// Connect to external (in this case MS Access) database&amp;lt;o:p&amp;gt;&amp;lt;/o:p&amp;gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;System&lt;span style="color:red;"&gt;.&lt;/span&gt;Data&lt;span style="color:red;"&gt;.&lt;/span&gt;OleDb&lt;span style="color:red;"&gt;.&lt;/span&gt;OleDbConnection myConnection &lt;span style="color:red;"&gt;=&lt;/span&gt; &lt;b&gt;&lt;span style="color:blue;"&gt;new&lt;/span&gt;&lt;/b&gt; System&lt;span style="color:red;"&gt;.&lt;/span&gt;Data&lt;span style="color:red;"&gt;.&lt;/span&gt;OleDb&lt;span style="color:red;"&gt;.&lt;/span&gt;OleDbConnection(&lt;span style="color:purple;"&gt;@&amp;quot;Provider=Microsoft.Jet.OLEDB.4.0; Data Source = &lt;a&gt;\\server\directory\database.mdb&lt;/a&gt;;&amp;quot;&lt;/span&gt;);&amp;lt;o:p&amp;gt;&amp;lt;/o:p&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;i&gt;&lt;span style="font-size:10pt;color:green;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;// construct sql Select statement to retrieve data from external database.&amp;lt;o:p&amp;gt;&amp;lt;/o:p&amp;gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;string&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt; sqltext &lt;span style="color:red;"&gt;=&lt;/span&gt; &lt;span style="color:purple;"&gt;&amp;quot;Select Partnum,totalstock,descrip from Parts Where Partnum = &amp;#39;&amp;quot;&lt;/span&gt; &lt;span style="color:red;"&gt;+&lt;/span&gt; partnum &lt;span style="color:red;"&gt;+&lt;/span&gt; &lt;span style="color:purple;"&gt;&amp;quot;&amp;#39;;&amp;quot;&lt;/span&gt;;&amp;lt;o:p&amp;gt;&amp;lt;/o:p&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&amp;lt;o:p&amp;gt;&amp;lt;/o:p&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;System&lt;span style="color:red;"&gt;.&lt;/span&gt;Data&lt;span style="color:red;"&gt;.&lt;/span&gt;OleDb&lt;span style="color:red;"&gt;.&lt;/span&gt;OleDbCommand com &lt;span style="color:red;"&gt;=&lt;/span&gt; &lt;b&gt;&lt;span style="color:blue;"&gt;new&lt;/span&gt;&lt;/b&gt; System&lt;span style="color:red;"&gt;.&lt;/span&gt;Data&lt;span style="color:red;"&gt;.&lt;/span&gt;OleDb&lt;span style="color:red;"&gt;.&lt;/span&gt;OleDbCommand(sqltext);&amp;lt;o:p&amp;gt;&amp;lt;/o:p&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;com&lt;span style="color:red;"&gt;.&lt;/span&gt;Connection &lt;span style="color:red;"&gt;=&lt;/span&gt; myConnection;&amp;lt;o:p&amp;gt;&amp;lt;/o:p&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;myConnection&lt;span style="color:red;"&gt;.&lt;/span&gt;Open();&amp;lt;o:p&amp;gt;&amp;lt;/o:p&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;System&lt;span style="color:red;"&gt;.&lt;/span&gt;Data&lt;span style="color:red;"&gt;.&lt;/span&gt;OleDb&lt;span style="color:red;"&gt;.&lt;/span&gt;OleDbDataReader myDataReader &lt;span style="color:red;"&gt;=&lt;/span&gt; com&lt;span style="color:red;"&gt;.&lt;/span&gt;ExecuteReader();&amp;lt;o:p&amp;gt;&amp;lt;/o:p&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&amp;lt;o:p&amp;gt;&amp;lt;/o:p&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&amp;lt;o:p&amp;gt;&amp;lt;/o:p&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;i&gt;&lt;span style="font-size:10pt;color:green;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;// create a Part Inventory item&amp;lt;o:p&amp;gt;&amp;lt;/o:p&amp;gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;Item res5 &lt;span style="color:red;"&gt;=&lt;/span&gt; &lt;b&gt;&lt;span style="color:blue;"&gt;this&lt;/span&gt;&lt;/b&gt;&lt;span style="color:red;"&gt;.&lt;/span&gt;newItem(&lt;span style="color:purple;"&gt;&amp;quot;Part Inventory&amp;quot;&lt;/span&gt;);&amp;lt;o:p&amp;gt;&amp;lt;/o:p&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;string&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt; newid &lt;span style="color:red;"&gt;=&lt;/span&gt; getNewID();&amp;lt;o:p&amp;gt;&amp;lt;/o:p&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;res5&lt;span style="color:red;"&gt;.&lt;/span&gt;setID(newid);&amp;lt;o:p&amp;gt;&amp;lt;/o:p&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;i&gt;&lt;span style="font-size:10pt;color:green;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;// Call apply on the item to create it in the server. After this is done&amp;lt;o:p&amp;gt;&amp;lt;/o:p&amp;gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;i&gt;&lt;span style="font-size:10pt;color:green;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;// we can populate with the returned information from the external database&amp;lt;o:p&amp;gt;&amp;lt;/o:p&amp;gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;res5 &lt;span style="color:red;"&gt;=&lt;/span&gt; res5&lt;span style="color:red;"&gt;.&lt;/span&gt;apply();&amp;lt;o:p&amp;gt;&amp;lt;/o:p&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;res5&lt;span style="color:red;"&gt;.&lt;/span&gt;setProperty(&lt;span style="color:purple;"&gt;&amp;quot;part_number&amp;quot;&lt;/span&gt;,partnum);&amp;lt;o:p&amp;gt;&amp;lt;/o:p&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&amp;lt;o:p&amp;gt;&amp;lt;/o:p&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;i&gt;&lt;span style="font-size:10pt;color:green;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;// Check if there are any rows returned and supply default information &amp;lt;o:p&amp;gt;&amp;lt;/o:p&amp;gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;i&gt;&lt;span style="font-size:10pt;color:green;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;// if they are not&amp;lt;o:p&amp;gt;&amp;lt;/o:p&amp;gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;if&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt; (myDataReader&lt;span style="color:red;"&gt;.&lt;/span&gt;HasRows &lt;span style="color:red;"&gt;!=&lt;/span&gt; true)&amp;lt;o:p&amp;gt;&amp;lt;/o:p&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;{&amp;lt;o:p&amp;gt;&amp;lt;/o:p&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;res5&lt;span style="color:red;"&gt;.&lt;/span&gt;setProperty(&lt;span style="color:purple;"&gt;&amp;quot;on_hand_inventory&amp;quot;&lt;/span&gt;,&lt;span style="color:purple;"&gt;&amp;quot;0&amp;quot;&lt;/span&gt;);&amp;lt;o:p&amp;gt;&amp;lt;/o:p&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;res5&lt;span style="color:red;"&gt;.&lt;/span&gt;setProperty(&lt;span style="color:purple;"&gt;&amp;quot;db_description&amp;quot;&lt;/span&gt;,&lt;span style="color:purple;"&gt;&amp;quot;Not Found&amp;quot;&lt;/span&gt;);&amp;lt;o:p&amp;gt;&amp;lt;/o:p&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;}&amp;lt;o:p&amp;gt;&amp;lt;/o:p&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;else&amp;lt;o:p&amp;gt;&amp;lt;/o:p&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;{&amp;lt;o:p&amp;gt;&amp;lt;/o:p&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;i&gt;&lt;span style="color:green;"&gt;// get the data from the dataReader and populate the PartInventory item&amp;lt;o:p&amp;gt;&amp;lt;/o:p&amp;gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;myDataReader&lt;span style="color:red;"&gt;.&lt;/span&gt;Read();&amp;lt;o:p&amp;gt;&amp;lt;/o:p&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;res5&lt;span style="color:red;"&gt;.&lt;/span&gt;setProperty(&lt;span style="color:purple;"&gt;&amp;quot;on_hand_inventory&amp;quot;&lt;/span&gt;,Convert&lt;span style="color:red;"&gt;.&lt;/span&gt;ToString(myDataReader&lt;span style="color:red;"&gt;.&lt;/span&gt;GetDouble(1)));&lt;span style="mso-tab-count:1;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&amp;lt;o:p&amp;gt;&amp;lt;/o:p&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&lt;span style="mso-spacerun:yes;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;res5&lt;span style="color:red;"&gt;.&lt;/span&gt;setProperty(&lt;span style="color:purple;"&gt;&amp;quot;db_description&amp;quot;&lt;/span&gt;,myDataReader&lt;span style="color:red;"&gt;.&lt;/span&gt;GetString(2));&amp;lt;o:p&amp;gt;&amp;lt;/o:p&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;}&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;;&amp;lt;o:p&amp;gt;&amp;lt;/o:p&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;myConnection&lt;span style="color:red;"&gt;.&lt;/span&gt;Close();&amp;lt;o:p&amp;gt;&amp;lt;/o:p&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;&amp;lt;o:p&amp;gt;&amp;lt;/o:p&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;i&gt;&lt;span style="font-size:10pt;color:green;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;// return the PartInventory item to be populated in the grid.&amp;lt;o:p&amp;gt;&amp;lt;/o:p&amp;gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-size:10pt;color:blue;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt;return&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;mso-no-proof:yes;"&gt; res5;&lt;/span&gt;&lt;span style="font-size:10pt;font-family:&amp;#39;Courier New&amp;#39;;"&gt;&amp;lt;o:p&amp;gt;&amp;lt;/o:p&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Once the connection is open it is of course possible to update the database with new information from&amp;nbsp;Innovator.&lt;/p&gt;</description></item></channel></rss>
