<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Clint Covington: Software design, Microsoft Office Access : Developer</title><link>http://blogs.msdn.com/clintcovington/archive/tags/Developer/default.aspx</link><description>Tags: Developer</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Silverlight resources post by ScottGu</title><link>http://blogs.msdn.com/clintcovington/archive/2007/05/21/silverlight-resources-post-by-scottgu.aspx</link><pubDate>Tue, 22 May 2007 08:15:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:2783705</guid><dc:creator>Clint Covington</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/clintcovington/comments/2783705.aspx</comments><wfw:commentRss>http://blogs.msdn.com/clintcovington/commentrss.aspx?PostID=2783705</wfw:commentRss><description>Scott Guthrie has a truly great &lt;A class="" href="http://weblogs.asp.net/scottgu/archive/2007/05/07/silverlight.aspx" mce_href="http://weblogs.asp.net/scottgu/archive/2007/05/07/silverlight.aspx"&gt;post on Silverlight&lt;/A&gt;. You should be able to find anything you need to start ramping up--very cool, innovative technology! As a developer, it is definitely worth your time to get educated on the possiblities.&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=2783705" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/clintcovington/archive/tags/Developer/default.aspx">Developer</category><category domain="http://blogs.msdn.com/clintcovington/archive/tags/Technology/default.aspx">Technology</category><category domain="http://blogs.msdn.com/clintcovington/archive/tags/Web+2.0/default.aspx">Web 2.0</category></item><item><title>Security Considerations and Guidance for Access 2007 - MSDN article</title><link>http://blogs.msdn.com/clintcovington/archive/2007/05/12/security-considerations-and-guidance-for-access-2007-msdn-article.aspx</link><pubDate>Sat, 12 May 2007 17:06:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:2571882</guid><dc:creator>Clint Covington</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/clintcovington/comments/2571882.aspx</comments><wfw:commentRss>http://blogs.msdn.com/clintcovington/commentrss.aspx?PostID=2571882</wfw:commentRss><description>&lt;P&gt;There is a new article by Access MVP Garry Robinson.&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;"Find out how you can use Access 2007 to protect the information in your databases. Learn about encrypting files, administering passwords, converting databases to the new ACCDB and ACCDE formats, and using other security options such as SQL Server. (18 printed pages)"&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://msdn2.microsoft.com/en-us/library/bb421308.aspx"&gt;http://msdn2.microsoft.com/en-us/library/bb421308.aspx&lt;/A&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=2571882" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/clintcovington/archive/tags/Developer/default.aspx">Developer</category><category domain="http://blogs.msdn.com/clintcovington/archive/tags/Access+2007/default.aspx">Access 2007</category></item><item><title>The runtime will ship May 15th</title><link>http://blogs.msdn.com/clintcovington/archive/2007/05/09/the-runtime-will-ship-may-15th.aspx</link><pubDate>Wed, 09 May 2007 21:16:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:2507335</guid><dc:creator>Clint Covington</dc:creator><slash:comments>6</slash:comments><comments>http://blogs.msdn.com/clintcovington/comments/2507335.aspx</comments><wfw:commentRss>http://blogs.msdn.com/clintcovington/commentrss.aspx?PostID=2507335</wfw:commentRss><description>&lt;P&gt;I just heard from Erik that the runtime will ship as a free download on May 15th! I will post a URL to the download page when it is available.&lt;/P&gt;
&lt;P&gt;Enjoy!&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=2507335" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/clintcovington/archive/tags/Developer/default.aspx">Developer</category><category domain="http://blogs.msdn.com/clintcovington/archive/tags/Access+2007/default.aspx">Access 2007</category></item><item><title>Tip on renamed field names and debugging reports</title><link>http://blogs.msdn.com/clintcovington/archive/2007/04/27/tip-on-renamed-field-names-and-debugging-reports.aspx</link><pubDate>Fri, 27 Apr 2007 19:08:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:2300817</guid><dc:creator>Clint Covington</dc:creator><slash:comments>6</slash:comments><comments>http://blogs.msdn.com/clintcovington/comments/2300817.aspx</comments><wfw:commentRss>http://blogs.msdn.com/clintcovington/commentrss.aspx?PostID=2300817</wfw:commentRss><description>&lt;H3&gt;Today's Guest Writer: Tony Toews, Microsoft Access MVP&lt;/H3&gt;
&lt;P&gt;I have a&amp;nbsp;complex report with 5 grouping levels, subtotals, and three subreports for additional details of totals. There are also lots of calculated fields on the report with embedded control names.&lt;/P&gt;
&lt;P&gt;I had to rename some fields in the base query as I had to insert some IIF logic in the query.&lt;/P&gt;
&lt;P&gt;Well, I couldn't figure out where one particular field was being used. I looked in the usual suspect places by examining the object list. I then looked at the Sorting and Grouping sheet because that has caused me troubles in the past. Not there either.&lt;/P&gt;
&lt;P&gt;Access 2003 usually has these nice widgets, or tips, or whatever those little black/navy triangular doodads in the corner of a control when you find a problem. (This feature BTW is the single nicest feature of A2003. IMNSHO and is well worth upgrading from previous versions for the developer or power user.) But these didn't work this time.&lt;/P&gt;
&lt;P&gt;So I used the SaveAsText--at the debug/immediate window type: Application.SaveAsText acReport, "MyReport", "c:\report.txt"&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I&amp;nbsp;opened the text field and found that that field in the Link Child Fields of a subreport.&amp;nbsp;Whoohoo. Fixed.&lt;/P&gt;
&lt;P&gt;Clint here--You can find other useful content from Tony on his &lt;A class="" href="http://www.granite.ab.ca/accsmstr.htm" mce_href="http://www.granite.ab.ca/accsmstr.htm"&gt;web site&lt;/A&gt;. If you have a tip that you would like to pass along on this blog, send it my way. I'm always looking for good content to keep you all interested :-).&lt;/P&gt;
&lt;P&gt;E4-27 Edited&amp;nbsp;code to export report not form.&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=2300817" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/clintcovington/archive/tags/Developer/default.aspx">Developer</category></item><item><title>Reader question about macros and VBA</title><link>http://blogs.msdn.com/clintcovington/archive/2007/04/21/reader-question-about-macros-and-vba.aspx</link><pubDate>Sat, 21 Apr 2007 14:26:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:2219812</guid><dc:creator>Clint Covington</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/clintcovington/comments/2219812.aspx</comments><wfw:commentRss>http://blogs.msdn.com/clintcovington/commentrss.aspx?PostID=2219812</wfw:commentRss><description>&lt;P&gt;A reader recently asked:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;EM&gt;Is there any way on Access 2007 to keep wizards and Switchboard Manager coding in VBA, any way developers "HAVE" to code for most applications.&lt;BR&gt;If a customer is buying an apllication from us, he is not going to trust what he bought?.&lt;BR&gt;Switchboard manager was great in its code handling.&lt;/EM&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;Good question. Let me back-track a little into the annuals of the decision to move the button wizard from VBA to macros. There are a significant percentages of Access databases that are built by information workers that have very little code. One of the many goals for Access 2007 was to expand on this and allow IWs to build better applications without writing code. The new security model allows users to run databases without any VBA code enabled (this is important for many organizations). As you know, &lt;A class="" href="http://blogs.msdn.com/clintcovington/archive/2007/02/05/how-to-deploy-trusted-locations-with-group-policy.aspx" mce_href="http://blogs.msdn.com/clintcovington/archive/2007/02/05/how-to-deploy-trusted-locations-with-group-policy.aspx"&gt;trusted locations&lt;/A&gt; make it much easier to deploy databases with code. Our wildly &lt;A class="" href="http://blogs.msdn.com/clintcovington/archive/2007/03/29/millions-of-access-template-downloads-5-new-free-database.aspx" mce_href="http://blogs.msdn.com/clintcovington/archive/2007/03/29/millions-of-access-template-downloads-5-new-free-database.aspx"&gt;popular templates&lt;/A&gt; are functional databases that don't have code. Feedback on the templates have been positive.&lt;/P&gt;
&lt;P&gt;We started running into scenarios where IWs opened a database and added a switchboard or button that didn't work. Users were confused--they didn't work because the database wasn't enabled. As many of you have complained about over the years, the wizards also wrote out poor examples of VBA (doMenuCmd 97 kind of stuff). To fix the problem we converted the wizards to write out &lt;A class="" href="http://blogs.msdn.com/clintcovington/archive/2007/02/15/macros-in-access-2007.aspx" mce_href="http://blogs.msdn.com/clintcovington/archive/2007/02/15/macros-in-access-2007.aspx"&gt;embedded macros&lt;/A&gt; that run in untrusted databases. We also spent time cleaning up the code they generate to provide users with better learning examples.&lt;/P&gt;
&lt;P&gt;We did consider a flag to write out either VBA or macros but the feature was one of many things we wanted to do that didn't make it into the release. :-(&amp;nbsp; Beta 2 shipped and we got lots of feedback from beta testers (Pat Hartman and John Viescas were particularly vocal) that they wanted a way to convert embedded macros to VBA. As a late change we made it possible to convert embedded macros to VBA. You can find the command on the Database tab under Macro.&lt;/P&gt;
&lt;P&gt;Do we think everything should be written in macros? No--they aren't a replacement for VBA. VBA will continue to ship and be supported in the future. Macros are turning out to be useful for simple actions that took a few lines of code. We find that IWs are much more successful making small changes to macros than VBA. I have yet to hear a perf complain on macros verses VBA, so performance shouldn't be an issue. Long-term, we intend to continue to innovate in this area and make macros more useful for broader developer scenarios.&lt;/P&gt;
&lt;P&gt;Thanks for your question and hope this explains our logic.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=2219812" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/clintcovington/archive/tags/Developer/default.aspx">Developer</category><category domain="http://blogs.msdn.com/clintcovington/archive/tags/Templates/default.aspx">Templates</category><category domain="http://blogs.msdn.com/clintcovington/archive/tags/Access+2007/default.aspx">Access 2007</category></item><item><title>How to pull in Amazon web service data into Access 2007</title><link>http://blogs.msdn.com/clintcovington/archive/2007/03/12/how-to-pull-in-amazon-web-service-data-into-access-2007.aspx</link><pubDate>Tue, 13 Mar 2007 09:01:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1870144</guid><dc:creator>Clint Covington</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/clintcovington/comments/1870144.aspx</comments><wfw:commentRss>http://blogs.msdn.com/clintcovington/commentrss.aspx?PostID=1870144</wfw:commentRss><description>&lt;P&gt;Today’s guest writer is Ric Lewis. Several weeks ago&amp;nbsp;he started a &lt;A href="http://blogs.msdn.com/clintcovington/archive/2007/02/20/web-service-discussion-and-sample-book-database-that-uses-amazon-s-web-services.aspx" mce_href="http://blogs.msdn.com/clintcovington/archive/2007/02/20/web-service-discussion-and-sample-book-database-that-uses-amazon-s-&amp;#13;&amp;#10;&amp;#13;&amp;#10;web-services.aspx"&gt;general discussion&lt;/A&gt; about web services which turned out to be a popular post. This week he is providing the details of the books sample database.&lt;/P&gt;
&lt;P&gt;It would be sweet if someone takes this project and details it out a bit further. For example, you could imagine using the title to search for titles and popping up a list of search results to choose from. The ISBN number is a bit awkward. If you do make improvements to the project—send me an email and I will share it with the community.&lt;/P&gt;
&lt;P&gt;Clint&lt;/P&gt;
&lt;H3&gt;Amazon Web Service Code Sample&lt;/H3&gt;
&lt;P&gt;As a note before you dig in, the code presented in this post consists of excerpts from the full project code. In other words, if you’re going to copy and paste my stuff, do it from the project, not from this post. You can grab the code for this project from here: &lt;A class="" href="http://clintc.officeisp.net/Blogs/2007/4_AmazonCodeSample/AmazonDemoAddin.zip" mce_href="http://clintc.officeisp.net/Blogs/2007/4_AmazonCodeSample/AmazonDemoAddin.zip"&gt;Code Project&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;For those of you who want to compile and run the plugin, here are the steps:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;You can grab the code for this project from here: &lt;A class="" href="http://clintc.officeisp.net/Blogs/2007/4_AmazonCodeSample/AmazonDemoAddin.zip" mce_href="http://clintc.officeisp.net/Blogs/2007/4_AmazonCodeSample/AmazonDemoAddin.zip"&gt;Code Project&lt;/A&gt;.&lt;/LI&gt;
&lt;LI&gt;Get a new Amazon Web Service key from the &lt;A class="" href="https://aws-portal.amazon.com/gp/aws/developer/registration/index.html" mce_href="https://aws-portal.amazon.com/gp/aws/developer/registration/index.html"&gt;Amazon Developer Center&lt;/A&gt;.&lt;/LI&gt;
&lt;LI&gt;Replace the “############” in the DataCollector.cs code file with your new AmazonWS key (the code won't compile until you complete this step).&lt;/LI&gt;
&lt;LI&gt;Build the AmazonDemoAddinSetup project.&lt;/LI&gt;
&lt;LI&gt;Run the setup.exe file generated (this will install the plugin so Access can see it).&lt;/LI&gt;
&lt;LI&gt;Visual Studio will generate an AmazonDemoAddIn.dll.config file in the build directory.&amp;nbsp; Copy this file “\program files\microsoft office\office12” and rename it “msaccess.exe.config”&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Also, this post has no pictures. Not one. So if you like pictures, look elsewhere, if you like code snippets, venture on. Okay, with that out of the way, let’s talk about this application.&lt;/P&gt;
&lt;H3&gt;Form Load&lt;/H3&gt;
&lt;P&gt;I’m all about flow-of-control discussions, so let’s trek through the app in that manner.&lt;/P&gt;
&lt;P&gt;When you load up Access, it determines which, if any, add-ins have been installed and should be loaded. Thereafter you can reference those add-ins by name from your form’s VBA code.&lt;/P&gt;
&lt;P class=MsoNormal&gt;Load up the Book database (from the previous post or the code project above), and you can click on the “New Book” button.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;This triggers a call to the &lt;B style="mso-bidi-font-weight: normal"&gt;Form_Load&lt;/B&gt; event handler in VBA code.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;There’s not too much VBA, so let’s step you through the code:&lt;/P&gt;
&lt;P&gt;This first bit of code &lt;I&gt;opens the form&lt;/I&gt;, checking first to see if it’s a new form, or an existing record.&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: #eeece1; MARGIN: 0in 0in 0pt 0.5in; mso-background-themecolor: background2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'"&gt;Private Sub Form_Load() &lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: #eeece1; MARGIN: 0in 0in 0pt 0.5in; mso-background-themecolor: background2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;If (Not IsNull(Me.OpenArgs)) Then &lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: #eeece1; MARGIN: 0in 0in 0pt 0.5in; mso-background-themecolor: background2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;DoCmd.GoToRecord , "", acNewRec &lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: #eeece1; MARGIN: 0in 0in 0pt 0.5in; mso-background-themecolor: background2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Me.Title = Me.OpenArgs &lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: #eeece1; MARGIN: 0in 0in 0pt 0.5in; mso-background-themecolor: background2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;End If &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;If this is a new form, or there’s just no name, then &lt;I style="mso-bidi-font-style: normal"&gt;set a title for the book&lt;/I&gt;. This form requires a title to be set, so it’s nice to get this out of the way upfront.&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: #eeece1; MARGIN: 0in 0in 0pt 0.5in; mso-background-themecolor: background2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;If (IsNull(Me.Title)) Then &lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: #eeece1; MARGIN: 0in 0in 0pt 0.5in; mso-background-themecolor: background2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Me.Title = "Untitled" &lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: #eeece1; MARGIN: 0in 0in 0pt 0.5in; mso-background-themecolor: background2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;End If &lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'"&gt;&lt;?xml:namespace prefix = o /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;This just places the cursor in the ISBN field. You probably knew that.&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: #eeece1; MARGIN: 0in 0in 0pt 0.5in; mso-background-themecolor: background2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Me.ISBN.SetFocus &lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;This last bit of code is the interesting part.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;It connects &lt;I style="mso-bidi-font-style: normal"&gt;to my addin&lt;/I&gt; (AmazonDemoAddIn) and &lt;I style="mso-bidi-font-style: normal"&gt;calls the PrepareObject&lt;/I&gt; function of my add-in.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;We won’t go into this function too much, but it warms up the web proxy that we’ll be using later.&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: #eeece1; MARGIN: 0in 0in 0pt 0.5in; mso-background-themecolor: background2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;With COMAddIns("AmazonDemoAddIn.Connect") &lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: #eeece1; MARGIN: 0in 0in 0pt 0.5in; mso-background-themecolor: background2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;' make sure the COM add-in is loaded &lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: #eeece1; MARGIN: 0in 0in 0pt 0.5in; mso-background-themecolor: background2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;.Connect = True &lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: #eeece1; MARGIN: 0in 0in 0pt 0.5in; mso-background-themecolor: background2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;'warm up the web proxy object--this may take a few seconds &lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: #eeece1; MARGIN: 0in 0in 0pt 0.5in; mso-background-themecolor: background2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;.Object.PrepareObject &lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: #eeece1; MARGIN: 0in 0in 0pt 0.5in; mso-background-themecolor: background2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;End With &lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: #eeece1; MARGIN: 0in 0in 0pt 0.5in; mso-background-themecolor: background2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'"&gt;End Sub &lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;(This PrepareObject call is why the form is so slow when loading for the first time)&lt;/P&gt;
&lt;H3&gt;ISBN AfterUpdate&lt;/FONT&gt;&lt;/H3&gt;
&lt;P&gt;So, now the “New Book” form is up, with an eager cursor, blinking away, waiting for you to enter an ISBN. Type in an ISBN, leave the ISBN text box and it will trigger the &lt;STRONG&gt;ISBN_AfterUpdate&lt;/STRONG&gt; code back in our VBA macros&lt;/P&gt;
&lt;P&gt;Up to this point, we have a &lt;I&gt;form for a new record&lt;/I&gt;, but we have not yet generated &lt;I&gt;a new recordset in the database&lt;/I&gt;. The &lt;SPAN style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'"&gt;Me.Form.Refresh&lt;/SPAN&gt; call will generate an actual recordset in the database, so we have something to pass into our add-in.&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: #eeece1; MARGIN: 0in 0in 0pt 0.5in; mso-background-themecolor: background2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'"&gt;Private Sub ISBN_AfterUpdate() &lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: #eeece1; MARGIN: 0in 0in 0pt 0.5in; mso-background-themecolor: background2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Me.Title = "Retrieving from Amazon..."&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Me.Dirty = False&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;Up to this point, we have a &lt;I style="mso-bidi-font-style: normal"&gt;form &lt;/I&gt;for a new record, but we have not yet generated &lt;I style="mso-bidi-font-style: normal"&gt;a new recordset in the database&lt;/I&gt;.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;The &lt;SPAN style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'"&gt;Me.Dirty&lt;/SPAN&gt; call will generate an actual recordset in the database, so we have a recordset we can pass into our add-in.&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: #eeece1; MARGIN: 0in 0in 0pt 0.5in; mso-background-themecolor: background2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;With COMAddIns("AmazonDemoAddIn.Connect") &lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: #eeece1; MARGIN: 0in 0in 0pt 0.5in; mso-background-themecolor: background2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;.Connect = True &lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: #eeece1; MARGIN: 0in 0in 0pt 0.5in; mso-background-themecolor: background2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;' Hook up the desired objects &lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: #eeece1; MARGIN: 0in 0in 0pt 0.5in; mso-background-themecolor: background2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;If Not .Object.FillInBookForm(Me.ISBN, Me.Recordset) Then&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Me.Title = "Failed to retrieve from Amazon."&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If &lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: #eeece1; MARGIN: 0in 0in 0pt 0.5in; mso-background-themecolor: background2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;End With &lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: #eeece1; MARGIN: 0in 0in 0pt 0.5in; mso-background-themecolor: background2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: #eeece1; MARGIN: 0in 0in 0pt 0.5in; mso-background-themecolor: background2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Me.Form.Refresh &lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: #eeece1; MARGIN: 0in 0in 0pt 0.5in; mso-background-themecolor: background2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'"&gt;End Sub &lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P&gt;This bit of code brings up an important point.&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;I&gt;There are two ways to manipulate your form from your managed add-in:&lt;/I&gt;&lt;/B&gt;&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Top-down: Pass in a control from your form (e.g. Me.ISBN) and manipulate its properties in your managed add-in.&lt;/LI&gt;
&lt;LI&gt;Bottom-up: Pass in your form’s recordset and manipulate the record set.&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;For reasons too complex to get into here, if you’re adding complex data (for example, a new attachment) you’ll need to pass in the recordset. However, if your forms only contain textual data, most of that can (and probably should) be handled by manipulation of the controls.&lt;/P&gt;
&lt;P&gt;Okay, on to the managed add-in code.&lt;/P&gt;
&lt;H3&gt;Managed Add-in&lt;/H3&gt;
&lt;P&gt;Over-simplified data flow of my AddIn.Connect class is as follows:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Grab ISBN control and Recordset passed in from VBA form code&lt;/LI&gt;
&lt;LI&gt;Send ISBN value to a DataCollector object (Amazon, in this case)&lt;/LI&gt;
&lt;LI&gt;DataCollector returns a Book object&lt;/LI&gt;
&lt;LI&gt;Populate Recordset with information from Book object&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;So let’s, look at how each of those parts happens:&lt;/P&gt;
&lt;P&gt;&lt;I&gt;&lt;STRONG&gt;Grab parameters from VBA form code&lt;/STRONG&gt;&lt;/I&gt;&lt;/P&gt;
&lt;P&gt;Remember this call from our form VBA?&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: #eeece1; MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: 0.5in; mso-background-themecolor: background2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'"&gt;.Object.FillInBookForm Me.ISBN, Me.Recordset&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;This calls the following function in our AddIn:&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: #eeece1; MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: 0.5in; LINE-HEIGHT: normal; mso-background: background2; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso: yes"&gt;public&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt; &lt;SPAN style="COLOR: blue"&gt;void&lt;/SPAN&gt; FillInBookForm(Access.&lt;SPAN style="COLOR: #2b91af"&gt;TextBoxClass&lt;/SPAN&gt; ISBNTextBox, &lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: #eeece1; MARGIN: 0in 0in 0pt 0.5in; LINE-HEIGHT: normal; mso-background-themecolor: background2; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-tab-count: 3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;Access.Dao.&lt;SPAN style="COLOR: #2b91af"&gt;Recordset2&lt;/SPAN&gt; FormRS) &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;I&gt;&lt;STRONG&gt;Send ISBN to a DataCollector (Amazon, in this case)&lt;/STRONG&gt;&lt;/I&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;From here, we call CollectInfoFromWeb.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;This function checks if we have a DataCollector setup (we do), makes sure that the ISBN isn’t empty, and sends the ISBN on to the &lt;B style="mso-bidi-font-weight: normal"&gt;DataCollector.&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;Note that we’re accessing the &lt;SPAN style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'"&gt;.Text&lt;/SPAN&gt; property of the ISBNTextBox control.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;This returns the text that’s currently occupies the ISBN control back in our form.&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: #eeece1; MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: 0.5in; LINE-HEIGHT: normal; mso-background: background2; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #2b91af; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;Book&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt; tempBook = CollectBookInfoFromWeb(ISBNTextBox.Text); &lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt 0.5in"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P&gt;&lt;I&gt;&lt;STRONG&gt;DataCollector returns a Book object&lt;/STRONG&gt;&lt;/I&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;This is where lots of magic happens.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;The DataCollector always sends back “Book” objects.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;You should be able to extend the DataCollector class to gather data from any Web Service you’d like (eBay comes to mind), as long as you somehow squeeze all the return data into a “Book” object.&lt;/P&gt;
&lt;P class=MsoNormal&gt;If you’ve installed the .NET 3.0 extensions for Visual Studio 2005 (here:&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyId=F54F5537-CC86-4BF5-AE44-F5A1E805680D"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyId=F54F5537-CC86-4BF5-AE44-F5A1E805680D&lt;/A&gt;) from within Visual Studio you can add a reference to any WSDL-based Web Service just by pointing it to the WSDL.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Simply right-click on your project, select “Add Service Reference” and type your WSDL into the form and Visual Studio will auto-generate a bunch of code for interacting with the service.&lt;/P&gt;
&lt;P&gt;Once you’ve got the Service Reference added to your project, you’ll have a proxy class which you can instantiate to interact with the web service.&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: #eeece1; MARGIN: 0in 0in 10pt 0.5in; mso-background-themecolor: background2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;AmazonClient = &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;AWSECommerceServicePortTypeClient&lt;/SPAN&gt;();&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;Note:&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;all the configuration, binding and connection info for this proxy client is put in your project’s app.config file.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;This becomes the AmazonAddInDemo.dll.config file at build time, and needs to be renamed &lt;SPAN style="COLOR: #0070c0"&gt;msaccess.exe.config&lt;/SPAN&gt; copied to the directory alongside your MSACCESS.exe.&lt;/P&gt;
&lt;P&gt;One of the methods on this proxy is ItemLookup. This call takes an ItemLookupRequest object as a parameter, so you’ll need to generate and fill out the properties of that object:&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: #eeece1; MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: 0.5in; LINE-HEIGHT: normal; mso-background: background2; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #2b91af; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;ItemLookupRequest&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt; lookupRequest = &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;ItemLookupRequest&lt;/SPAN&gt;(); &lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: #eeece1; MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: 0.5in; LINE-HEIGHT: normal; mso-background: background2; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;lookupRequest.ItemId[0] = myISBNString; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: #eeece1; MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: 0.5in; LINE-HEIGHT: normal; mso-background: background2; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;lookupRequest.SearchIndex = &lt;SPAN style="COLOR: #a31515"&gt;"Books"&lt;/SPAN&gt;; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;Then make your call to ClientProxy.ItemLookup, and store the result as an ItemLookupResponse object:&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: #eeece1; MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: 0.5in; LINE-HEIGHT: normal; mso-background: background2; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #2b91af; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;ItemLookupResponse &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;myResponse = &lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: #eeece1; MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: 0.5in; LINE-HEIGHT: normal; mso-background: background2; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #2b91af; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-tab-count: 3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso: yes"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;mAmazonClient.ItemLookup(itemLookup);&lt;/SPAN&gt;&lt;I style="mso-bidi-font-style: normal"&gt; &lt;/I&gt;&lt;/P&gt;
&lt;P&gt;Then, lastly, we’ll map the properties from the response object into a new Book object.&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: #eeece1; MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: 0.5in; LINE-HEIGHT: normal; mso-background: background2; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;newBook = &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;Book&lt;/SPAN&gt;(currentItem.ItemAttributes.Title, &lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: #eeece1; MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: 0.5in; LINE-HEIGHT: normal; mso-background: background2; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&gt;Author, &lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: #eeece1; MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: 0.5in; LINE-HEIGHT: normal; mso-background: background2; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&gt;currentItem.ItemAttributes.Genre, &lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: #eeece1; MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: 0.5in; LINE-HEIGHT: normal; mso-background: background2; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&gt;…); &lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: #eeece1; MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: 0.5in; LINE-HEIGHT: normal; mso-background: background2; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'; mso: yes"&gt;return&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt; newBook;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt"&gt; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;I&gt;&lt;STRONG&gt;Populate Recordset with information from Book object&lt;/STRONG&gt;&lt;/I&gt;&lt;/P&gt;
&lt;P&gt;We call .Edit() on the recordset we were sent (FormRS), and start plugging values into fields&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: #eeece1; MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: 0.5in; LINE-HEIGHT: normal; mso-background: background2; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;FormRS.Edit(); &lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: #eeece1; MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: 0.5in; LINE-HEIGHT: normal; mso-background: background2; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;FormRS.Fields[&lt;SPAN style="COLOR: #a31515"&gt;"Author"&lt;/SPAN&gt;].Value = tempBook.author; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: #eeece1; MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: 0.5in; LINE-HEIGHT: normal; mso-background: background2; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;FormRS.Fields[&lt;SPAN style="COLOR: #a31515"&gt;"Title"&lt;/SPAN&gt;].Value = tempBook.title; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: #eeece1; MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: 0.5in; LINE-HEIGHT: normal; mso-background: background2; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;… &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;Then for some real magic, we embed the cover art data into the recordset.&lt;/P&gt;
&lt;P&gt;Internally, Access sees Attachments (like our cover art field), as embedded child recordsets (sub-tables). So, we’ll need to create a new record in the “Attachments” child recordset.&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: #eeece1; MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: 0.5in; LINE-HEIGHT: normal; mso-background: background2; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;Access.Dao.&lt;SPAN style="COLOR: #2b91af"&gt;Field2&lt;/SPAN&gt; fld = &lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: #eeece1; MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: 2in; LINE-HEIGHT: normal; mso-layout-grid-align: none; mso-background-: background2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;Access.Dao.&lt;SPAN style="COLOR: #2b91af"&gt;Field2&lt;/SPAN&gt;)FormRS.Fields[&lt;SPAN style="COLOR: #a31515"&gt;"Attachments"&lt;/SPAN&gt;]; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: #eeece1; MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: 1.5in; LINE-HEIGHT: normal; mso-background: background2; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: #eeece1; MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: 0.5in; LINE-HEIGHT: normal; mso-background: background2; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;Access.Dao.&lt;SPAN style="COLOR: #2b91af"&gt;Recordset2&lt;/SPAN&gt; rstChild = &lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: #eeece1; MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: 2in; LINE-HEIGHT: normal; mso-layout-grid-align: none; mso-background-: background2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;(Access.Dao.&lt;SPAN style="COLOR: #2b91af"&gt;Recordset2&lt;/SPAN&gt;)fld.Value; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: #eeece1; MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: 2in; LINE-HEIGHT: normal; mso-layout-grid-align: none; mso-background-: background2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: #eeece1; MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: 0.5in; LINE-HEIGHT: normal; mso-background: background2; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;rstChild.AddNew(); &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;And then dump our binary image data into the “FileData” field of this new record (from the URL of the image data), update the “Attachments”sub-recordset, the form’s recordset, and we’re good to go.&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: #eeece1; MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: 0.5in; LINE-HEIGHT: normal; mso-background: background2; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;Access.Dao.&lt;SPAN style="COLOR: #2b91af"&gt;Field2&lt;/SPAN&gt; fldChild = &lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: #eeece1; MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: 2in; LINE-HEIGHT: normal; mso-layout-grid-align: none; mso-background-: background2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;Access.Dao.&lt;SPAN style="COLOR: #2b91af"&gt;Field2&lt;/SPAN&gt;)rstChild.Fields[&lt;SPAN style="COLOR: #a31515"&gt;"FileData"&lt;/SPAN&gt;]; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: #eeece1; MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: 0.5in; LINE-HEIGHT: normal; mso-background: background2; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;fldChild.LoadFromFile(tempBook.coverImageURL); &lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: #eeece1; MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: 0.5in; LINE-HEIGHT: normal; mso-background: background2; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;rstChild.Update(1, &lt;SPAN style="COLOR: blue"&gt;false&lt;/SPAN&gt;); &lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="BACKGROUND: #eeece1; MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: 0.5in; LINE-HEIGHT: normal; mso-background: background2; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;FormRS.Update(1, &lt;SPAN style="COLOR: blue"&gt;false&lt;/SPAN&gt;); &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;Of course, everything you just spent 20 minutes reading about happens in less than the blink of an eye, and your when you update your Form’s recordset, the form will have all the data collected from the Web Service and you’re done (or at least I am, if you’re really into this kind of thing, you can now click “Save and New” button on your form and do the whole mess all over again).&lt;/P&gt;
&lt;H3&gt;Conclusion&lt;/H3&gt;
&lt;P&gt;Phew, I think that’s about it. Congrats if you actually made it this far. If you skipped ahead to this paragraph, I’m not going to gratify your laziness with some kind of all-summing conclusion. Hopefully, you now understand enough to know how to twist my project to explore your own wildly cool Web Service + Access intentions.&lt;/P&gt;
&lt;P&gt;You can grab the Visual Studio project from here: &lt;A class="" href="http://clintc.officeisp.net/Blogs/2007/4_AmazonCodeSample/AmazonDemoAddin.zip" mce_href="http://clintc.officeisp.net/Blogs/2007/4_AmazonCodeSample/AmazonDemoAddin.zip"&gt;Code Project&lt;/A&gt;.&lt;/P&gt;
&lt;P class=MsoNormal&gt;It’s important to mention that I can’t take full credit for the generation of this demo.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;I leaned heavily on Ken Gatz’s excellent “Managed Add-in in Access 2007” white paper, as well as the debugging and VB skills of my fellow teammates.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;And frankly, the whole thing was Clint’s idea in the first place, so kudos to him as well.&lt;/P&gt;
&lt;P&gt;If you’ve got additional, specific questions, first read Ken Getz’s whitepaper on “&lt;A href="http://msdn2.microsoft.com/en-us/library/aa902693.aspx" mce_href="http://msdn2.microsoft.com/en-&amp;#13;&amp;#10;&amp;#13;&amp;#10;us/library/aa902693.aspx"&gt;Managed Add-in in Access 2007&lt;/A&gt;” because his is a great article. If you have additional questions, feel free to post your questions here on the blog.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1870144" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/clintcovington/archive/tags/Developer/default.aspx">Developer</category><category domain="http://blogs.msdn.com/clintcovington/archive/tags/Access+2007/default.aspx">Access 2007</category><category domain="http://blogs.msdn.com/clintcovington/archive/tags/Samples/default.aspx">Samples</category></item><item><title>Cool As Ice uses Office Live and Access 2007 with custom ribbon</title><link>http://blogs.msdn.com/clintcovington/archive/2007/03/06/cool-as-ice-uses-office-live-and-access-2007-with-custom-ribbon.aspx</link><pubDate>Wed, 07 Mar 2007 08:32:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1824951</guid><dc:creator>Clint Covington</dc:creator><slash:comments>19</slash:comments><comments>http://blogs.msdn.com/clintcovington/comments/1824951.aspx</comments><wfw:commentRss>http://blogs.msdn.com/clintcovington/commentrss.aspx?PostID=1824951</wfw:commentRss><description>&lt;P&gt;Alan Cossey recently sent me a overview of how Cool As Ice is&amp;nbsp;using Office Live and Access to track&amp;nbsp;process information. He has found a couple bugs we will fix in SP 1 but overall it is working nicely for them. I thought some of you might appreciate seeing what others are doing with Access 2007. If you have an interesting scenario that you would like featured on my blog--feel free to send me an email.&lt;/P&gt;
&lt;P&gt;Nice work Alan.&lt;/P&gt;
&lt;P&gt;Clint&lt;/P&gt;
&lt;P&gt;______&lt;/P&gt;
&lt;P&gt;From Alan:&lt;/P&gt;
&lt;P&gt;Here is some information about the Access 2007 application that I’ve developed for Cool As Ice, which is a leading Norfolk-based supplier of air conditioning and refrigeration here in the UK. Cool As Ice wanted a bespoke customer contact system that they could use to hold data securely yet allow their workforce to use that data on their laptops, including adding and altering data, i.e. not just a read-only copy. Access 2007’s integration with Sharepoint meant it could provide the basis for a good solution.&lt;/P&gt;
&lt;P&gt;The application holds its data in a workspace that is part of my company’s Office Live site. The choice of Office Live to provide the SharePoint part of the solution means that their data is secure and that Cool As Ice do not need to get involved in organising that part of the solution, concentrating instead on the things they do best. Backups of data are done by Office Live and of course, the Office Live Recycle Bin is there in case it is needed. If neither of these needs to be used, everything is handled in Access 2007, i.e. the normal end-user just sees Access 2007 and no web user interface.&lt;/P&gt;
&lt;P&gt;The image below shows the main screen of the application, i.e. where the main customer contact information is entered.&lt;/P&gt;
&lt;P&gt;&lt;IMG style="WIDTH: 968px; HEIGHT: 637px" height=637 src="http://clintc.officeisp.net/Blogs/2007/5_CoolIce/CoolIce.png" width=968 mce_src="http://clintc.officeisp.net/Blogs/2007/5_CoolIce/CoolIce.png"&gt;&lt;/P&gt;
&lt;P&gt;The application uses a ribbon, with it shown neatly tucked away in the above screen shot. However, most of the main actions in the database are called from it as can be seen from the next shot where it has been single-clicked to show it in drop-down mode.&lt;/P&gt;
&lt;P&gt;&lt;IMG style="WIDTH: 889px; HEIGHT: 266px" height=266 src="http://clintc.officeisp.net/Blogs/2007/5_CoolIce/CoolIceRibbon.png" width=889 mce_src="http://clintc.officeisp.net/Blogs/2007/5_CoolIce/CoolIceRibbon.png"&gt;&lt;/P&gt;
&lt;P&gt;Included in those actions is the ability to kick off the synchronization with the back end in Office Live. Clearly, the use of the application on laptops requires the use of offline data, but even in the office the system is run with the data offline and sychronized at an appropriate point, e.g. the end of the day. As you have pointed out already in your blog, using offline data allows for very quick data handling. When it comes to time to do the synchronization, even with about 3000 customer records already in the database the database synchronizes in under a minute on broadband.&lt;/P&gt;
&lt;P&gt;A useful part of the Office Live integration is that it allows the use of Windows Live ID to provide the security of the data in the Office Live database. Thus when it comes to time to do the synchronization, clicking the Synchronize Data ribbon icon requires the user to provide their Windows Live ID and password and then off it goes.&lt;/P&gt;
&lt;P&gt;You may have noticed in the first screen shot that there is a Notes field that enables users to record notes in rich text format rather than the old plain text of previous Access versions. You will also see from the next screen shot that use is made of Access’ ability to use subdatasheets. A bit more planning than usual is required to ensure correct updating and cascading deletions in the application, including with subdatasheets, but it is certainly “doable” as you can see from this solution.&lt;/P&gt;
&lt;P&gt;&lt;IMG style="WIDTH: 900px; HEIGHT: 316px" height=316 src="http://clintc.officeisp.net/Blogs/2007/5_CoolIce/CoolIceSubForm.png" width=900 mce_src="http://clintc.officeisp.net/Blogs/2007/5_CoolIce/CoolIceSubForm.png"&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1824951" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/clintcovington/archive/tags/Developer/default.aspx">Developer</category><category domain="http://blogs.msdn.com/clintcovington/archive/tags/Office+Live/default.aspx">Office Live</category><category domain="http://blogs.msdn.com/clintcovington/archive/tags/Access+2007/default.aspx">Access 2007</category></item><item><title>VBA Functions and RunCommand code samples sites</title><link>http://blogs.msdn.com/clintcovington/archive/2007/03/05/vba-functions-and-runcommand-code-samples.aspx</link><pubDate>Tue, 06 Mar 2007 02:14:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1812967</guid><dc:creator>Clint Covington</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/clintcovington/comments/1812967.aspx</comments><wfw:commentRss>http://blogs.msdn.com/clintcovington/commentrss.aspx?PostID=1812967</wfw:commentRss><description>&lt;P&gt;I recently came across in an internal newsgroup a couple great sites that provide lots of code samples for expressions and runcommands. You might find this useful. &lt;/P&gt;
&lt;P&gt;Terry Wickenden's web site has lots of examples of RunCommands:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;A href="http://www.accessruncommand.com/" mce_href="http://www.accessruncommand.com"&gt;http://www.accessruncommand.com&lt;/A&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;Brendan Reynolds has a great blog where he researched what functions can be used outside of the Access environment.&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;A href="http://brenreyn.blogspot.com/" mce_href="http://brenreyn.blogspot.com/"&gt;http://brenreyn.blogspot.com/&lt;/A&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;Lots of good developer content...&lt;/P&gt;
&lt;P&gt;Edited on 3-6-2007. Terry provided me with a new URL.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1812967" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/clintcovington/archive/tags/Developer/default.aspx">Developer</category></item><item><title>Tips and tricks for designing forms and reports - part 3</title><link>http://blogs.msdn.com/clintcovington/archive/2007/02/23/tips-and-tricks-for-designing-forms-and-reports-with-access-2007.aspx</link><pubDate>Fri, 23 Feb 2007 14:39:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1746593</guid><dc:creator>Clint Covington</dc:creator><slash:comments>5</slash:comments><comments>http://blogs.msdn.com/clintcovington/comments/1746593.aspx</comments><wfw:commentRss>http://blogs.msdn.com/clintcovington/commentrss.aspx?PostID=1746593</wfw:commentRss><description>&lt;P&gt;This is the final post of a three part series on Access Tips and Tricks provided by members of the Access team. This article focuses on non-obvious things new to the forms and report designers. The other articles in this series covered &lt;A class="" href="http://blogs.msdn.com/clintcovington/archive/2007/02/21/my-favorite-access-keyboard-commands.aspx" mce_href="http://blogs.msdn.com/clintcovington/archive/2007/02/21/my-favorite-access-keyboard-commands.aspx"&gt;useful keyboard commands&lt;/A&gt; and a general topic on &lt;A class="" href="http://blogs.msdn.com/clintcovington/archive/2007/02/19/tips-and-tricks-part-1-new-db-navigation-pane-import-export-wss-and-more.aspx" mce_href="http://blogs.msdn.com/clintcovington/archive/2007/02/19/tips-and-tricks-part-1-new-db-navigation-pane-import-export-wss-and-more.aspx"&gt;new databases, the nav pane, import/export, and more&lt;/A&gt;. Another previous post that might be interesting to you was my post &lt;A class="" href="http://blogs.msdn.com/clintcovington/archive/2006/11/25/ideas-about-creating-great-looking-reports.aspx" mce_href="http://blogs.msdn.com/clintcovington/archive/2006/11/25/ideas-about-creating-great-looking-reports.aspx"&gt;Ideas about great looking reports&lt;/A&gt;. &lt;/P&gt;
&lt;P&gt;My next post will likely be a follow up by Ric on the technical details to his previous post on the &lt;A class="" href="http://blogs.msdn.com/clintcovington/archive/2007/02/20/web-service-discussion-and-sample-book-database-that-uses-amazon-s-web-services.aspx" mce_href="http://blogs.msdn.com/clintcovington/archive/2007/02/20/web-service-discussion-and-sample-book-database-that-uses-amazon-s-web-services.aspx"&gt;books database&lt;/A&gt; that uses the Amazon web service. I hope you enjoyed this series. &lt;/P&gt;
&lt;P&gt;Enjoy!&lt;/P&gt;
&lt;P&gt;Clint&lt;BR&gt;&lt;/P&gt;
&lt;H3&gt;Custom AutoFormats&lt;/H3&gt;
&lt;P&gt;You can create a custom AutoFormat based on the current form. This was useful to me when I was customizing a template and didn’t want it to look exactly like the ones out of the box. With your form or report in Layout or Design views, under the Format contextual tab, drop down the list of AutoFormats and choose AutoFormat Wizard… Then click on Customize and choose “Create a new AutoFormat based on the form ‘Current’.” It requires some effort to get it exactly right, but what I did was make a form that had all the elements I might need (logo, title, labels, text boxes, etc.) and create the AutoFormat based on that, then apply it to all the other forms/reports. –Abigail (form and report developer)&lt;/P&gt;
&lt;H3&gt;Layouts&lt;/H3&gt;
&lt;P&gt;I’m a big fan of layouts and anchoring for creating forms that use the available real estate. However, it gets really annoying when a layout tries to suck in a control as it gets close to the layout. Why doesn’t Access read my mind and know that I didn’t intend for that control to go into the layout? Grrr!!! We tried to implement the “read my mind” feature but didn’t get very far!&lt;/P&gt;
&lt;P&gt;As you drag controls near stacks, hold the CTRL key to keep fields from being sucked into stacks. This makes it possible to put red stars next to text boxes or move boxes behind controls to provide visual separation.&lt;/P&gt;
&lt;P&gt;Another tip—you might notice all buttons in command bars are in stacks. We put them into stacks so that they would resize correctly in localized builds at instantiation time.&amp;nbsp; Feel free to get rid of the stack—it doesn’t provide any functional value once the template is opened.&lt;/P&gt;
&lt;P&gt;One last command I found really helpful when designing reports--on the right click menu for&amp;nbsp;a control in layout and design mode there is the Layout | Move Up a Section and Move Down a Section. I have found this more useful than I expected when you are &lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;experimenting &lt;/SPAN&gt;with different groupings.&lt;/P&gt;
&lt;H3&gt;Truncated Numbers&lt;/H3&gt;
&lt;P&gt;Ever had someone make a bad decision because a number was truncated?&amp;nbsp; There is a new property called “Check for truncated number fields.”&amp;nbsp; When this option is enabled, numbers appear as "#####" when the column is too narrow to display the entire value. When this option is not enabled, you see only part of the values in a column.&lt;/P&gt;
&lt;H3&gt;Transparent Images and Smaller Databases&lt;/H3&gt;
&lt;P&gt;If you have an existing mdb database, you know that adding images dramatically increase the size of the database. You also know that the images don’t preserve transparency. You set the option in the Access Options | Current Database. Here is what the help file says about preserver image format:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;EM&gt;Preserve source image format (smaller file size)&lt;/EM&gt;&amp;nbsp; When this option is selected, Access stores images in their original format. Select this option to reduce database size.&lt;/LI&gt;
&lt;LI&gt;&lt;EM&gt;Convert all picture data to bitmaps (compatible with Access 2003 and earlier)&lt;/EM&gt;&amp;nbsp; When this option is selected, Access creates a copy of the original image file in either the Windows Bitmap or Device Independent Bitmap formats. Select this option to view images in databases created in Office Access 2003 and earlier.&lt;/LI&gt;&lt;/UL&gt;
&lt;H3&gt;Binding Images to External Files&lt;/H3&gt;
&lt;P&gt;It is a royal pain to bind the image control to external files. The code is messy and sometimes the JPG filter doesn’t work correctly. Fortunately, late in the development cycle Brian made it possible to set the control source on image controls to UNC paths. Give it a try—create a text field that contains UNC paths to pictures in your favorite image library. Drop the image control on a form give it a run.&lt;/P&gt;
&lt;H3&gt;Easy Database Lockdown&lt;/H3&gt;
&lt;P&gt;I know, the runtime hasn’t shipped yet. If you are looking for a simple way to share a database with co-workers and you don’t want them messing around with things… Try renaming the file to ACCDR. This is the equivalent of running the database with the /runtime switch. Basically the ribbon and nav pane get turned off.&lt;/P&gt;
&lt;H3&gt;Save Embedded Macros as VBA&lt;/H3&gt;
&lt;P&gt;Access 2007 introduces a new type of macros called embedded macros. Embedded macros are macros that are stored on an event instead of as a separate object. Embedded macros support name fix-up and are used extensively through-out our templates. They are largely targeted to information workers that don’t write code but useful for developers that are trying to perform some simple actions. &lt;/P&gt;
&lt;P&gt;I admit some types of macros are easier to maintain as code for developers. Thanks to a late DCR it is possible to convert all the macros in a form or report to VBA. Open the object in design view and Go to the Database Tools tab. Click on the Convert Form’s Macros to Visual Basic. &lt;/P&gt;
&lt;P&gt;&lt;IMG title="Convert macros to code." style="WIDTH: 275px; HEIGHT: 91px" height=91 alt="Convert macros to code." src="http://clintc.officeisp.net/Blogs/2007/2_Tips/_ConvertMacrosToCode.jpg" width=275 mce_src="http://clintc.officeisp.net/Blogs/2007/2_Tips/_ConvertMacrosToCode.jpg"&gt;&lt;/P&gt;
&lt;H3&gt;Hyperlinks and Hand on Hover for Buttons&lt;/H3&gt;
&lt;P&gt;Hyperlinks have a new Display as Hyperlink property that doesn’t munge # signs. It also prints hyperlinks as black text instead of blue underlies. Also, buttons have some new cool properties including transparent and a hand on hover property. On February 24th you will see new templates get released that use the new images and text and this property. (Abigail – Form and report developer)&lt;/P&gt;
&lt;H3&gt;Developer Help&lt;/H3&gt;
&lt;P&gt;End user and developer help is separated out so that end users don’t get confused with developer topics and developers don’t get bored with end user’s topics. You can easily switch between the two with the search dropdown.&lt;/P&gt;
&lt;P&gt;&lt;IMG title="Seach scope for end users and developers." style="WIDTH: 325px; HEIGHT: 434px" height=434 alt="Seach scope for end users and developers." src="http://clintc.officeisp.net/Blogs/2006/42%20-%20UA/UA_Search.jpg" width=325 mce_src="http://clintc.officeisp.net/Blogs/2006/42%20-%20UA/UA_Search.jpg"&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1746593" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/clintcovington/archive/tags/Developer/default.aspx">Developer</category><category domain="http://blogs.msdn.com/clintcovington/archive/tags/Access+2007/default.aspx">Access 2007</category><category domain="http://blogs.msdn.com/clintcovington/archive/tags/Tips+and+Tricks/default.aspx">Tips and Tricks</category></item><item><title>My favorite Access keyboard commands - part 2</title><link>http://blogs.msdn.com/clintcovington/archive/2007/02/21/my-favorite-access-keyboard-commands.aspx</link><pubDate>Thu, 22 Feb 2007 10:28:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1739932</guid><dc:creator>Clint Covington</dc:creator><slash:comments>6</slash:comments><comments>http://blogs.msdn.com/clintcovington/comments/1739932.aspx</comments><wfw:commentRss>http://blogs.msdn.com/clintcovington/commentrss.aspx?PostID=1739932</wfw:commentRss><description>&lt;P&gt;I have a confession to make… I started hacking around in computers with Windows 3.1—never learned how to really use the command line. I know—I have fallen from grace for many of you developers. The mouse has been my friend. I’m trying to change and use keyboard shortcuts more often. Here is a list of keyboard commands I’m trying to use more frequently:&lt;/P&gt;
&lt;TABLE class=MsoNormalTable style="MARGIN: auto auto auto 1.2pt; BORDER-COLLAPSE: collapse; mso-yfti-tbllook: 1184; mso-padding-alt: 0in 5.4pt 0in 5.4pt" cellSpacing=0 cellPadding=0 border=0 class="MsoNormalTable"&gt;
&lt;TBODY&gt;
&lt;TR style="mso-yfti-irow: 0; mso-yfti-firstrow: yes"&gt;
&lt;TD class="" style="BORDER-RIGHT: #f0f0f0; PADDING-RIGHT: 6pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 6pt; BACKGROUND: #6b82b2; PADDING-BOTTOM: 3pt; BORDER-LEFT: #f0f0f0; WIDTH: 342.3pt; PADDING-TOP: 3pt; BORDER-BOTTOM: #f0f0f0" vAlign=bottom width=456&gt;
&lt;P style="MARGIN: 3pt"&gt;&lt;B&gt;&lt;SPAN style="COLOR: white; FONT-FAMILY: 'Tahoma','sans-serif'; mso-fareast-font-family: 'Times New Roman'"&gt;To do this&lt;?xml:namespace prefix = o /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: #f0f0f0; PADDING-RIGHT: 6pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 6pt; BACKGROUND: #6b82b2; PADDING-BOTTOM: 3pt; BORDER-LEFT: #f0f0f0; WIDTH: 136.5pt; PADDING-TOP: 3pt; BORDER-BOTTOM: #f0f0f0" vAlign=bottom width=182&gt;
&lt;P style="MARGIN: 3pt"&gt;&lt;B&gt;&lt;SPAN style="COLOR: white; FONT-FAMILY: 'Tahoma','sans-serif'; mso-fareast-font-family: 'Times New Roman'"&gt;Press&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 1"&gt;
&lt;TD class="" style="BORDER-RIGHT: #f0f0f0; PADDING-RIGHT: 6pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 6pt; PADDING-BOTTOM: 3pt; BORDER-LEFT: #f0f0f0; WIDTH: 342.3pt; PADDING-TOP: 3pt; BORDER-BOTTOM: #f0f0f0; BACKGROUND-COLOR: transparent" vAlign=top width=456&gt;
&lt;P style="MARGIN: 3pt"&gt;Cycle between windows in SDI&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: #f0f0f0; PADDING-RIGHT: 6pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 6pt; PADDING-BOTTOM: 3pt; BORDER-LEFT: #f0f0f0; WIDTH: 136.5pt; PADDING-TOP: 3pt; BORDER-BOTTOM: #f0f0f0; BACKGROUND-COLOR: transparent" vAlign=top width=182&gt;
&lt;P style="MARGIN: 3pt"&gt;CTRL F6&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 1"&gt;
&lt;TD class="" style="BORDER-RIGHT: #f0f0f0; PADDING-RIGHT: 6pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 6pt; PADDING-BOTTOM: 3pt; BORDER-LEFT: #f0f0f0; WIDTH: 342.3pt; PADDING-TOP: 3pt; BORDER-BOTTOM: #f0f0f0; BACKGROUND-COLOR: transparent" vAlign=top width=456&gt;
&lt;P style="MARGIN: 3pt"&gt;Open an object from the nav pane in design view&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: #f0f0f0; PADDING-RIGHT: 6pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 6pt; PADDING-BOTTOM: 3pt; BORDER-LEFT: #f0f0f0; WIDTH: 136.5pt; PADDING-TOP: 3pt; BORDER-BOTTOM: #f0f0f0; BACKGROUND-COLOR: transparent" vAlign=top width=182&gt;
&lt;P style="MARGIN: 3pt"&gt;CTRL ENTER&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 2"&gt;
&lt;TD class="" style="BORDER-RIGHT: #f0f0f0; PADDING-RIGHT: 6pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 6pt; PADDING-BOTTOM: 3pt; BORDER-LEFT: #f0f0f0; WIDTH: 342.3pt; PADDING-TOP: 3pt; BORDER-BOTTOM: #f0f0f0; BACKGROUND-COLOR: transparent" vAlign=top width=456&gt;
&lt;P style="MARGIN: 3pt"&gt;Toggle between panes (nav pane, ribbon, open object)&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: #f0f0f0; PADDING-RIGHT: 6pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 6pt; PADDING-BOTTOM: 3pt; BORDER-LEFT: #f0f0f0; WIDTH: 136.5pt; PADDING-TOP: 3pt; BORDER-BOTTOM: #f0f0f0; BACKGROUND-COLOR: transparent" vAlign=top width=182&gt;
&lt;P style="MARGIN: 3pt"&gt;F6&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 3"&gt;
&lt;TD class="" style="BORDER-RIGHT: #f0f0f0; PADDING-RIGHT: 6pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 6pt; PADDING-BOTTOM: 3pt; BORDER-LEFT: #f0f0f0; WIDTH: 342.3pt; PADDING-TOP: 3pt; BORDER-BOTTOM: #f0f0f0; BACKGROUND-COLOR: transparent" vAlign=top width=456&gt;
&lt;P style="MARGIN: 3pt"&gt;Expand/collapse the navigation pane&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: #f0f0f0; PADDING-RIGHT: 6pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 6pt; PADDING-BOTTOM: 3pt; BORDER-LEFT: #f0f0f0; WIDTH: 136.5pt; PADDING-TOP: 3pt; BORDER-BOTTOM: #f0f0f0; BACKGROUND-COLOR: transparent" vAlign=top width=182&gt;
&lt;P style="MARGIN: 3pt"&gt;F11&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 4"&gt;
&lt;TD class="" style="BORDER-RIGHT: #f0f0f0; PADDING-RIGHT: 6pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 6pt; PADDING-BOTTOM: 3pt; BORDER-LEFT: #f0f0f0; WIDTH: 342.3pt; PADDING-TOP: 3pt; BORDER-BOTTOM: #f0f0f0; BACKGROUND-COLOR: transparent" vAlign=top width=456&gt;
&lt;P style="MARGIN: 3pt"&gt;Open a builder or zoom window (when you have focus in a property)&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: #f0f0f0; PADDING-RIGHT: 6pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 6pt; PADDING-BOTTOM: 3pt; BORDER-LEFT: #f0f0f0; WIDTH: 136.5pt; PADDING-TOP: 3pt; BORDER-BOTTOM: #f0f0f0; BACKGROUND-COLOR: transparent" vAlign=top width=182&gt;
&lt;P style="MARGIN: 3pt"&gt;SHIFT + F2&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 5"&gt;
&lt;TD class="" style="BORDER-RIGHT: #f0f0f0; PADDING-RIGHT: 6pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 6pt; PADDING-BOTTOM: 3pt; BORDER-LEFT: #f0f0f0; WIDTH: 342.3pt; PADDING-TOP: 3pt; BORDER-BOTTOM: #f0f0f0; BACKGROUND-COLOR: transparent" vAlign=top width=456&gt;
&lt;P style="MARGIN: 3pt"&gt;Close an open Window&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: #f0f0f0; PADDING-RIGHT: 6pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 6pt; PADDING-BOTTOM: 3pt; BORDER-LEFT: #f0f0f0; WIDTH: 136.5pt; PADDING-TOP: 3pt; BORDER-BOTTOM: #f0f0f0; BACKGROUND-COLOR: transparent" vAlign=top width=182&gt;
&lt;P style="MARGIN: 3pt"&gt;CRTL + F4&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 6"&gt;
&lt;TD class="" style="BORDER-RIGHT: #f0f0f0; PADDING-RIGHT: 6pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 6pt; PADDING-BOTTOM: 3pt; BORDER-LEFT: #f0f0f0; WIDTH: 342.3pt; PADDING-TOP: 3pt; BORDER-BOTTOM: #f0f0f0; BACKGROUND-COLOR: transparent" vAlign=top width=456&gt;
&lt;P style="MARGIN: 3pt"&gt;Expand/Collapse the ribbon&lt;/P&gt;
&lt;P style="MARGIN: 3pt"&gt;(You can also double click on the active tab)&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: #f0f0f0; PADDING-RIGHT: 6pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 6pt; PADDING-BOTTOM: 3pt; BORDER-LEFT: #f0f0f0; WIDTH: 136.5pt; PADDING-TOP: 3pt; BORDER-BOTTOM: #f0f0f0; BACKGROUND-COLOR: transparent" vAlign=top width=182&gt;
&lt;P style="MARGIN: 3pt"&gt;CTRL + F1&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 7"&gt;
&lt;TD class="" style="BORDER-RIGHT: #f0f0f0; PADDING-RIGHT: 6pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 6pt; PADDING-BOTTOM: 3pt; BORDER-LEFT: #f0f0f0; WIDTH: 342.3pt; PADDING-TOP: 3pt; BORDER-BOTTOM: #f0f0f0; BACKGROUND-COLOR: transparent" vAlign=top width=456&gt;
&lt;P style="MARGIN: 3pt"&gt;Set focus to the search box in the nav pane (once it has focus)&lt;/P&gt;
&lt;P style="MARGIN: 3pt"&gt;ENTER while in the nav pane search box opens the top item in the nav pane in browse.&lt;/P&gt;
&lt;P style="MARGIN: 3pt"&gt;CTRL+ENTER while in the nav pane search box opens the top item in the nav pane in design.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;–Scott (nav pane developer)&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: #f0f0f0; PADDING-RIGHT: 6pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 6pt; PADDING-BOTTOM: 3pt; BORDER-LEFT: #f0f0f0; WIDTH: 136.5pt; PADDING-TOP: 3pt; BORDER-BOTTOM: #f0f0f0; BACKGROUND-COLOR: transparent" vAlign=top width=182&gt;
&lt;P style="MARGIN: 3pt"&gt;CTRL + F&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 8"&gt;
&lt;TD class="" style="BORDER-RIGHT: #f0f0f0; PADDING-RIGHT: 6pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 6pt; PADDING-BOTTOM: 3pt; BORDER-LEFT: #f0f0f0; WIDTH: 342.3pt; PADDING-TOP: 3pt; BORDER-BOTTOM: #f0f0f0; BACKGROUND-COLOR: transparent" vAlign=top width=456&gt;
&lt;P style="MARGIN: 3pt"&gt;Flip an object into design mode&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: #f0f0f0; PADDING-RIGHT: 6pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 6pt; PADDING-BOTTOM: 3pt; BORDER-LEFT: #f0f0f0; WIDTH: 136.5pt; PADDING-TOP: 3pt; BORDER-BOTTOM: #f0f0f0; BACKGROUND-COLOR: transparent" vAlign=top width=182&gt;
&lt;P style="MARGIN: 3pt"&gt;ALT, H, W, D&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 9"&gt;
&lt;TD class="" style="BORDER-RIGHT: #f0f0f0; PADDING-RIGHT: 6pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 6pt; PADDING-BOTTOM: 3pt; BORDER-LEFT: #f0f0f0; WIDTH: 342.3pt; PADDING-TOP: 3pt; BORDER-BOTTOM: #f0f0f0; BACKGROUND-COLOR: transparent" vAlign=top width=456&gt;
&lt;P style="MARGIN: 3pt"&gt;Open an object in design view with focus in the navigation pane&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: #f0f0f0; PADDING-RIGHT: 6pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 6pt; PADDING-BOTTOM: 3pt; BORDER-LEFT: #f0f0f0; WIDTH: 136.5pt; PADDING-TOP: 3pt; BORDER-BOTTOM: #f0f0f0; BACKGROUND-COLOR: transparent" vAlign=top width=182&gt;
&lt;P style="MARGIN: 3pt"&gt;SHIFT-F10, D&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 10"&gt;
&lt;TD class="" style="BORDER-RIGHT: #f0f0f0; PADDING-RIGHT: 6pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 6pt; PADDING-BOTTOM: 3pt; BORDER-LEFT: #f0f0f0; WIDTH: 342.3pt; PADDING-TOP: 3pt; BORDER-BOTTOM: #f0f0f0; BACKGROUND-COLOR: transparent" vAlign=top width=456&gt;
&lt;P style="MARGIN: 3pt"&gt;Refresh a view if the object is in browse view. If a form is in design view it will open in the default view.&lt;/P&gt;
&lt;P style="MARGIN: 3pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P style="MARGIN: 3pt"&gt;F9 – Refreshes the list contents of a combo or recalc expressions for the current record.&amp;nbsp; Record focus is not changed.&lt;/P&gt;
&lt;P style="MARGIN: 3pt"&gt;Shift-F9 – Requeries the object.&amp;nbsp; Record focus back to the top with the current data.&amp;nbsp; Combo/List box contents may not be refreshed.&lt;/P&gt;
&lt;P style="MARGIN: 3pt"&gt;F5 should do both or Refresh All. – Shawn (test lead)&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: #f0f0f0; PADDING-RIGHT: 6pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 6pt; PADDING-BOTTOM: 3pt; BORDER-LEFT: #f0f0f0; WIDTH: 136.5pt; PADDING-TOP: 3pt; BORDER-BOTTOM: #f0f0f0; BACKGROUND-COLOR: transparent" vAlign=top width=182&gt;
&lt;P style="MARGIN: 3pt"&gt;F5&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 11"&gt;
&lt;TD class="" style="BORDER-RIGHT: #f0f0f0; PADDING-RIGHT: 6pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 6pt; PADDING-BOTTOM: 3pt; BORDER-LEFT: #f0f0f0; WIDTH: 342.3pt; PADDING-TOP: 3pt; BORDER-BOTTOM: #f0f0f0; BACKGROUND-COLOR: transparent" vAlign=top width=456&gt;
&lt;P style="MARGIN: 3pt"&gt;Set focus to the search box in record navigation bar&lt;/P&gt;
&lt;P style="MARGIN: 3pt"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/P&gt;
&lt;P style="MARGIN: 3pt"&gt;If you have the focus in the record navigation bar search box and press ESC, we’ll take the focus to the form/grid in the selection you had. So you can quickly do CTRL+SHIFT+F, search for something, press ESC, edit it, CTRL+SHIFT+F, etc…&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;--Marcus (new look developer)&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: #f0f0f0; PADDING-RIGHT: 6pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 6pt; PADDING-BOTTOM: 3pt; BORDER-LEFT: #f0f0f0; WIDTH: 136.5pt; PADDING-TOP: 3pt; BORDER-BOTTOM: #f0f0f0; BACKGROUND-COLOR: transparent" vAlign=top width=182&gt;
&lt;P style="MARGIN: 3pt"&gt;CTRL + SHIFT + F&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 12"&gt;
&lt;TD class="" style="BORDER-RIGHT: #f0f0f0; PADDING-RIGHT: 6pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 6pt; BACKGROUND: white; PADDING-BOTTOM: 3pt; BORDER-LEFT: #f0f0f0; WIDTH: 342.3pt; PADDING-TOP: 3pt; BORDER-BOTTOM: #f0f0f0; mso-background-themecolor: background1" vAlign=top width=456&gt;
&lt;P style="MARGIN: 3pt"&gt;Insert the current date&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: #f0f0f0; PADDING-RIGHT: 6pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 6pt; BACKGROUND: white; PADDING-BOTTOM: 3pt; BORDER-LEFT: #f0f0f0; WIDTH: 136.5pt; PADDING-TOP: 3pt; BORDER-BOTTOM: #f0f0f0; mso-background-themecolor: background1" vAlign=top width=182&gt;
&lt;P style="MARGIN: 3pt"&gt;CTRL+SEMICOLON (;)&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 13"&gt;
&lt;TD class="" style="BORDER-RIGHT: #f0f0f0; PADDING-RIGHT: 6pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 6pt; BACKGROUND: white; PADDING-BOTTOM: 3pt; BORDER-LEFT: #f0f0f0; WIDTH: 342.3pt; PADDING-TOP: 3pt; BORDER-BOTTOM: #f0f0f0; mso-background-themecolor: background1" vAlign=top width=456&gt;
&lt;P style="MARGIN: 3pt"&gt;Insert the current time&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: #f0f0f0; PADDING-RIGHT: 6pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 6pt; BACKGROUND: white; PADDING-BOTTOM: 3pt; BORDER-LEFT: #f0f0f0; WIDTH: 136.5pt; PADDING-TOP: 3pt; BORDER-BOTTOM: #f0f0f0; mso-background-themecolor: background1" vAlign=top width=182&gt;
&lt;P style="MARGIN: 3pt"&gt;CTRL+SHIFT+COLON (:)&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 14"&gt;
&lt;TD class="" style="BORDER-RIGHT: #f0f0f0; PADDING-RIGHT: 6pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 6pt; BACKGROUND: white; PADDING-BOTTOM: 3pt; BORDER-LEFT: #f0f0f0; WIDTH: 342.3pt; PADDING-TOP: 3pt; BORDER-BOTTOM: #f0f0f0; mso-background-themecolor: background1" vAlign=top width=456&gt;
&lt;P style="MARGIN: 3pt"&gt;Insert the value from the same field in the previous record&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: #f0f0f0; PADDING-RIGHT: 6pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 6pt; BACKGROUND: white; PADDING-BOTTOM: 3pt; BORDER-LEFT: #f0f0f0; WIDTH: 136.5pt; PADDING-TOP: 3pt; BORDER-BOTTOM: #f0f0f0; mso-background-themecolor: background1" vAlign=top width=182&gt;
&lt;P style="MARGIN: 3pt"&gt;CTRL+APOSTROPHE (')&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 15"&gt;
&lt;TD class="" style="BORDER-RIGHT: #f0f0f0; PADDING-RIGHT: 6pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 6pt; BACKGROUND: white; PADDING-BOTTOM: 3pt; BORDER-LEFT: #f0f0f0; WIDTH: 342.3pt; PADDING-TOP: 3pt; BORDER-BOTTOM: #f0f0f0; mso-background-themecolor: background1" vAlign=top width=456&gt;
&lt;P style="MARGIN: 3pt"&gt;Add a new record&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: #f0f0f0; PADDING-RIGHT: 6pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 6pt; BACKGROUND: white; PADDING-BOTTOM: 3pt; BORDER-LEFT: #f0f0f0; WIDTH: 136.5pt; PADDING-TOP: 3pt; BORDER-BOTTOM: #f0f0f0; mso-background-themecolor: background1" vAlign=top width=182&gt;
&lt;P style="MARGIN: 3pt"&gt;CTRL+PLUS SIGN (+)&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 16"&gt;
&lt;TD class="" style="BORDER-RIGHT: #f0f0f0; PADDING-RIGHT: 6pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 6pt; BACKGROUND: white; PADDING-BOTTOM: 3pt; BORDER-LEFT: #f0f0f0; WIDTH: 342.3pt; PADDING-TOP: 3pt; BORDER-BOTTOM: #f0f0f0; mso-background-themecolor: background1" vAlign=top width=456&gt;
&lt;P style="MARGIN: 3pt"&gt;In a datasheet, delete the current record&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: #f0f0f0; PADDING-RIGHT: 6pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 6pt; BACKGROUND: white; PADDING-BOTTOM: 3pt; BORDER-LEFT: #f0f0f0; WIDTH: 136.5pt; PADDING-TOP: 3pt; BORDER-BOTTOM: #f0f0f0; mso-background-themecolor: background1" vAlign=top width=182&gt;
&lt;P style="MARGIN: 3pt"&gt;CTRL+MINUS SIGN (-)&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 17"&gt;
&lt;TD class="" style="BORDER-RIGHT: #f0f0f0; PADDING-RIGHT: 6pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 6pt; BACKGROUND: white; PADDING-BOTTOM: 3pt; BORDER-LEFT: #f0f0f0; WIDTH: 342.3pt; PADDING-TOP: 3pt; BORDER-BOTTOM: #f0f0f0; mso-background-themecolor: background1" vAlign=top width=456&gt;
&lt;P style="MARGIN: 3pt"&gt;Drop down a combo box when it has focus&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: #f0f0f0; PADDING-RIGHT: 6pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 6pt; BACKGROUND: white; PADDING-BOTTOM: 3pt; BORDER-LEFT: #f0f0f0; WIDTH: 136.5pt; PADDING-TOP: 3pt; BORDER-BOTTOM: #f0f0f0; mso-background-themecolor: background1" vAlign=top width=182&gt;
&lt;P style="MARGIN: 3pt"&gt;F4&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 18"&gt;
&lt;TD class="" style="BORDER-RIGHT: #f0f0f0; PADDING-RIGHT: 6pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 6pt; BACKGROUND: white; PADDING-BOTTOM: 3pt; BORDER-LEFT: #f0f0f0; WIDTH: 342.3pt; PADDING-TOP: 3pt; BORDER-BOTTOM: #f0f0f0; mso-background-themecolor: background1" vAlign=top width=456&gt;
&lt;P style="MARGIN: 3pt"&gt;Save changes to the current record&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: #f0f0f0; PADDING-RIGHT: 6pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 6pt; BACKGROUND: white; PADDING-BOTTOM: 3pt; BORDER-LEFT: #f0f0f0; WIDTH: 136.5pt; PADDING-TOP: 3pt; BORDER-BOTTOM: #f0f0f0; mso-background-themecolor: background1" vAlign=top width=182&gt;
&lt;P style="MARGIN: 3pt"&gt;CTRL S &lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 19"&gt;
&lt;TD class="" style="BORDER-RIGHT: #f0f0f0; PADDING-RIGHT: 6pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 6pt; BACKGROUND: white; PADDING-BOTTOM: 3pt; BORDER-LEFT: #f0f0f0; WIDTH: 342.3pt; PADDING-TOP: 3pt; BORDER-BOTTOM: #f0f0f0; mso-background-themecolor: background1" vAlign=top width=456&gt;
&lt;P style="MARGIN: 3pt"&gt;Switch between Edit mode (with insertion point displayed) and Navigation mode in a datasheet. When using a form or report, press ESC to leave Navigation mode.&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: #f0f0f0; PADDING-RIGHT: 6pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 6pt; BACKGROUND: white; PADDING-BOTTOM: 3pt; BORDER-LEFT: #f0f0f0; WIDTH: 136.5pt; PADDING-TOP: 3pt; BORDER-BOTTOM: #f0f0f0; mso-background-themecolor: background1" vAlign=top width=182&gt;
&lt;P style="MARGIN: 3pt"&gt;F2&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 20"&gt;
&lt;TD class="" style="BORDER-RIGHT: #f0f0f0; PADDING-RIGHT: 6pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 6pt; BACKGROUND: white; PADDING-BOTTOM: 3pt; BORDER-LEFT: #f0f0f0; WIDTH: 342.3pt; PADDING-TOP: 3pt; BORDER-BOTTOM: #f0f0f0; mso-background-themecolor: background1" vAlign=top width=456&gt;
&lt;P style="MARGIN: 3pt"&gt;Toggle the Field List&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: #f0f0f0; PADDING-RIGHT: 6pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 6pt; BACKGROUND: white; PADDING-BOTTOM: 3pt; BORDER-LEFT: #f0f0f0; WIDTH: 136.5pt; PADDING-TOP: 3pt; BORDER-BOTTOM: #f0f0f0; mso-background-themecolor: background1" vAlign=top width=182&gt;
&lt;P style="MARGIN: 3pt"&gt;ALT + F8&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 21"&gt;
&lt;TD class="" style="BORDER-RIGHT: #f0f0f0; PADDING-RIGHT: 6pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 6pt; BACKGROUND: white; PADDING-BOTTOM: 3pt; BORDER-LEFT: #f0f0f0; WIDTH: 342.3pt; PADDING-TOP: 3pt; BORDER-BOTTOM: #f0f0f0; mso-background-themecolor: background1" vAlign=top width=456&gt;
&lt;P style="MARGIN: 3pt"&gt;Open the VBE Immediate window&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: #f0f0f0; PADDING-RIGHT: 6pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 6pt; BACKGROUND: white; PADDING-BOTTOM: 3pt; BORDER-LEFT: #f0f0f0; WIDTH: 136.5pt; PADDING-TOP: 3pt; BORDER-BOTTOM: #f0f0f0; mso-background-themecolor: background1" vAlign=top width=182&gt;
&lt;P style="MARGIN: 3pt"&gt;CTRL G&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 22; mso-yfti-lastrow: yes"&gt;
&lt;TD class="" style="BORDER-RIGHT: #f0f0f0; PADDING-RIGHT: 6pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 6pt; BACKGROUND: white; PADDING-BOTTOM: 3pt; BORDER-LEFT: #f0f0f0; WIDTH: 342.3pt; PADDING-TOP: 3pt; BORDER-BOTTOM: #f0f0f0; mso-background-themecolor: background1" vAlign=top width=456&gt;
&lt;P style="MARGIN: 3pt"&gt;Open VBE&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" style="BORDER-RIGHT: #f0f0f0; PADDING-RIGHT: 6pt; BORDER-TOP: #f0f0f0; PADDING-LEFT: 6pt; BACKGROUND: white; PADDING-BOTTOM: 3pt; BORDER-LEFT: #f0f0f0; WIDTH: 136.5pt; PADDING-TOP: 3pt; BORDER-BOTTOM: #f0f0f0; mso-background-themecolor: background1" vAlign=top width=182&gt;
&lt;P style="MARGIN: 3pt"&gt;ALT + F11&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P&gt;Here are a couple help article that provides far more references &lt;A href="http://office.microsoft.com/en-us/access/HP100913941033.aspx?pid=CH101326501033" mce_href="http://office.microsoft.com/en-us/access/HP100913941033.aspx?pid=CH101326501033"&gt;http://office.microsoft.com/en-us/access/HP100913941033.aspx?pid=CH101326501033&lt;/A&gt; and &lt;A href="http://office.microsoft.com/en-us/access/HA100919081033.aspx" mce_href="http://office.microsoft.com/en-us/access/HA100919081033.aspx"&gt;http://office.microsoft.com/en-us/access/HA100919081033.aspx&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;Sorry about the lack of grid lines or alternate row color--I will try to fix that when I have more time. Many thanks to all the Access team members that chipped in with comments.&lt;/P&gt;
&lt;P&gt;BTW - if you haven't provided feedback about what web data you want in Access on our &lt;A class="" href="http://blogs.msdn.com/clintcovington/archive/2007/02/20/web-service-discussion-and-sample-book-database-that-uses-amazon-s-web-services.aspx" mce_href="http://blogs.msdn.com/clintcovington/archive/2007/02/20/web-service-discussion-and-sample-book-database-that-uses-amazon-s-web-services.aspx"&gt;web service post&lt;/A&gt;--please do! This is your chance to provide us feedback about the next version. I can't promise what will make it into the schedule but your feedback on the topic is extemely helpful.&lt;/P&gt;
&lt;P&gt;Updated&amp;nbsp;nav pane shortcut 2/26--Clint.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1739932" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/clintcovington/archive/tags/Developer/default.aspx">Developer</category><category domain="http://blogs.msdn.com/clintcovington/archive/tags/Access+2007/default.aspx">Access 2007</category><category domain="http://blogs.msdn.com/clintcovington/archive/tags/Tips+and+Tricks/default.aspx">Tips and Tricks</category></item><item><title>Web service and sample book database that uses Amazon's Web Services</title><link>http://blogs.msdn.com/clintcovington/archive/2007/02/20/web-service-discussion-and-sample-book-database-that-uses-amazon-s-web-services.aspx</link><pubDate>Tue, 20 Feb 2007 22:33:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1729201</guid><dc:creator>Clint Covington</dc:creator><slash:comments>22</slash:comments><comments>http://blogs.msdn.com/clintcovington/comments/1729201.aspx</comments><wfw:commentRss>http://blogs.msdn.com/clintcovington/commentrss.aspx?PostID=1729201</wfw:commentRss><description>&lt;P&gt;Today’s guest writer is Access Program Manager Ric Lewis. Ric spent the last couple years&amp;nbsp;with the Indigo team and just took an Access PM&amp;nbsp;job. He is&amp;nbsp;looking for some customer feedback on interesting web services scenarios. To start the conversation—he created an interesting and useful sample book database that uses the Amazon web service.&lt;/P&gt;
&lt;P&gt;Clint&lt;/P&gt;
&lt;H3&gt;Media Players&lt;/H3&gt;
&lt;P&gt;For a few years now, there has been a slowly developing convergence of databases and Web Services. Perhaps one of the best examples of this is your standard media player.&lt;/P&gt;
&lt;P&gt;A media player is a specialized case of asset management (with the assets in this case being digital data). Of course, the biggest barrier to tracking assets in a database is manually entering the information. Remember the first time you ripped a CD and had to manually enter all the album and track info? Now we take for granted that when we rip a CD, our media player will call the Gracenote (or some other) CDDB web service and automatically fill in all the information for us.&lt;/P&gt;
&lt;P style="LINE-HEIGHT: normal; TEXT-ALIGN: center" align=center&gt;&lt;IMG title="CDDB web service request." height=125 alt="CDDB &amp;#13;&amp;#10;&amp;#13;&amp;#10;web service request." src="http://clintc.officeisp.net/Blogs/2007/2_WebServices/_WS-CDDB.jpg" width=252 mce_src="http://clintc.officeisp.net/Blogs/2007/2_WebServices/_WS-CDDB.jpg"&gt;&lt;/P&gt;
&lt;P&gt;Nowadays, most media players will even go the extra mile of calling Amazon or Wal-mart to grab a high quality cover-art pic.&lt;/P&gt;
&lt;P&gt;A media player is a great example of a widely used database-as-asset manager. And without you really noticing it, over the last few years, between calls to CDDBs and online-music stores, your media player has increasingly become a web application.&lt;/P&gt;
&lt;H3&gt;Databases and Web Services&lt;/H3&gt;
&lt;P&gt;&lt;B&gt;Web services&lt;/B&gt; are all about distributing information, and &lt;B&gt;databases&lt;/B&gt; are all about organizing and visualizing that data. Internally, we talk about Access databases being a landing pad for data. &lt;/SPAN&gt;Using ODBC Access databases connect in rich ways to a number of different data sources. &lt;/P&gt;
&lt;H3&gt;Access 2007 Sample Books Database&lt;/H3&gt;
&lt;P&gt;Until then, I’ve thrown together a hack-ish example of a book-asset management system in Access 2007 which calls through the Amazon web service to collect book information when you type in an ISBN number.&lt;/P&gt;
&lt;P&gt;&lt;IMG title="Books Detail form." height=346 alt="Books Details form." src="http://clintc.officeisp.net/Blogs/2007/2_WebServices/_WS-BookDetails.jpg" width=394&gt;&lt;/P&gt;
&lt;P&gt;Installation instructions:&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt 0.75in; TEXT-INDENT: -0.25in"&gt;&lt;SPAN&gt;&lt;SPAN style="mso-list: Ignore"&gt;-&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;Download the &lt;A href="http://clintc.officeisp.net/Blogs/2007/2_WebServices/AmazonDemoAddinSetup.zip" mce_href="http://clintc.officeisp.net/Blogs/2007/2_WebServices/AmazonDemoAddinSetup.zip"&gt;zip file &lt;/A&gt;file (right click on zip and choose Save Target As).&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt 0.75in; TEXT-INDENT: -0.25in"&gt;&lt;SPAN&gt;&lt;SPAN style="mso-list: Ignore"&gt;-&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;Unzip it.&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt 0.75in; TEXT-INDENT: -0.25in"&gt;&lt;SPAN&gt;&lt;SPAN style="mso-list: Ignore"&gt;-&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;Run setup.exe (install for “Just Me”)&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 0pt 0.75in; TEXT-INDENT: -0.25in"&gt;&lt;SPAN&gt;&lt;SPAN style="mso-list: Ignore"&gt;-&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;Copy the msaccess.exe.config file into \Program Files\Office12&lt;/P&gt;
&lt;P style="MARGIN: 0in 0in 10pt 0.75in; TEXT-INDENT: -0.25in"&gt;&lt;SPAN&gt;&lt;SPAN style="mso-list: Ignore"&gt;-&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;Open the Books.accdb file&lt;/P&gt;
&lt;P&gt;You’ll also want to make sure you’ve got macros fully enabled in Access. Then just hit “New Book” (wait a few seconds if it’s the first time), type in an ISBN (ISBN-10 only, AmazonWS doesn’t like ISBN-13), tab out of the ISBN field, and watch your data get filled in! &lt;/P&gt;
&lt;P&gt;In a later post, I’ll talk a bit more about the behind-the-scenes of how this app was developed, and share out the Visual Studio project for the add-in. Download it, play with it, break it (that shouldn’t be too hard) and let your brain start spinning up about the possibilities.&lt;/P&gt;
&lt;P&gt;The program should “just work” on Vista, but on WinXP you’d certainly need WCF installed, which is included in the &lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyId=10CC340B-F857-4A14-83F5-25634C3BF043&amp;amp;displaylang=en" mce_href="http://www.microsoft.com/downloads/details.aspx?FamilyId=10CC340B-F857-&amp;#13;&amp;#10;&amp;#13;&amp;#10;4A14-83F5-25634C3BF043&amp;amp;displaylang=en"&gt;.NET 3.0 runtime&lt;/A&gt;. &lt;/P&gt;
&lt;H3&gt;Moving Forward&lt;/H3&gt;
&lt;P&gt;As part of investigating many areas for future work we are researching Web Services. &lt;/SPAN&gt;The best way is to always start with identifying useful customer scenarios. &lt;B&gt;What scenarios would you find interesting connecting to web data?&lt;/B&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1729201" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/clintcovington/archive/tags/Developer/default.aspx">Developer</category><category domain="http://blogs.msdn.com/clintcovington/archive/tags/Access+14/default.aspx">Access 14</category><category domain="http://blogs.msdn.com/clintcovington/archive/tags/Samples/default.aspx">Samples</category></item><item><title>Tips and tricks from the Access team - part 1</title><link>http://blogs.msdn.com/clintcovington/archive/2007/02/19/tips-and-tricks-part-1-new-db-navigation-pane-import-export-wss-and-more.aspx</link><pubDate>Tue, 20 Feb 2007 07:44:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1722029</guid><dc:creator>Clint Covington</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/clintcovington/comments/1722029.aspx</comments><wfw:commentRss>http://blogs.msdn.com/clintcovington/commentrss.aspx?PostID=1722029</wfw:commentRss><description>&lt;P&gt;I have been working on a three part series of non-obvious tips&amp;nbsp;and tricks for using Access 2007. The other series will be on designing forms and reports and my favorite keyboard shortcuts. I put together a rough draft of&amp;nbsp;this series and sent it around to the Access team. Fortunately, many team members responded with some good additions. &lt;/P&gt;
&lt;P&gt;Enjoy and have fun building great applications!&lt;/P&gt;
&lt;P&gt;Clint&lt;/P&gt;
&lt;H3&gt;Open Last Database&lt;/H3&gt;
&lt;P&gt;Office Button | Access Options | Advanced Tab in the Advances section there’s a new option to have Access automatically open the last opened database on boot. –Scott (developer lead)&lt;/P&gt;
&lt;H3&gt;New Database Settings&lt;/H3&gt;
&lt;P&gt;It is possible to customize the default database settings for new databases. Our UA team and Allen Browne have nice write-ups about it—so I won’t repeat it.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://office.microsoft.com/en-us/access/HA100378371033.aspx?pid=CH100948231033#blanktemplate" mce_href="http://office.microsoft.com/en-us/access/HA100378371033.aspx?&amp;#13;&amp;#10;&amp;#13;&amp;#10;pid=CH100948231033#blanktemplate"&gt;http://office.microsoft.com/en-us/access/HA100378371033.aspx?pid=CH100948231033#blanktemplate&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://allenbrowne.com/ser-43.html#dbtemplate" mce_href="http://allenbrowne.com/ser-&amp;#13;&amp;#10;&amp;#13;&amp;#10;43.html#dbtemplate"&gt;http://allenbrowne.com/ser-43.html#dbtemplate&lt;/A&gt;&lt;/P&gt;
&lt;H3&gt;Table and Field Templates&lt;/H3&gt;
&lt;P&gt;Table and field templates are quick ways to create tables and new fields with a number of property settings already set. The field templates have a number of core field types and fields taken from common schemas.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;It is possible to override and extend the fields in the field templates task pane and the tables that get created from the Create | Table menu.&lt;/P&gt;
&lt;P&gt;The fields and tables are created based on the ACCFL files found in the drive:\Program Files\Microsoft Office\Templates\1033\Access directory. These files are XML files based on the same format if you exported a table as XML and XSD. Any schema files stored in the directory named ACCFL will show up in the fields task pane. Unfortunately, you can’t add additional tables or rename existing tables (painful cut).&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;However, if you are always creating Order tables and never Issues—you might want to change Issues to Orders. Export your Orders table to XML/XSD. Rename the XSD to Issues. ACCFL and save it to the directory. Next time you create an Issues table it will be an Orders table.&lt;/P&gt;
&lt;P&gt;Here is a &lt;A class="" href="http://office.microsoft.com/en-us/access/HA102006861033.aspx?pid=CH100645691033#3" mce_href="http://office.microsoft.com/en-us/access/HA102006861033.aspx?pid=CH100645691033#3"&gt;link &lt;/A&gt;to&amp;nbsp;a UA&amp;nbsp;article on the subject.&lt;/P&gt;
&lt;H3&gt;New ADP&lt;/H3&gt;
&lt;P&gt;However, I frequently see questions about how to create a new ADP. It is a bit buried in the new getting started interface. For the users that need to create new ADP files, here are the steps:&lt;/P&gt;
&lt;P class=MsoListParagraph style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l1 level1 lfo2"&gt;&lt;SPAN&gt;&lt;SPAN style="mso-list: Ignore"&gt;1.&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;Click on the new Database in the Getting Started screen.&lt;/P&gt;
&lt;P class=MsoListParagraph style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l1 level1 lfo2"&gt;&lt;SPAN&gt;&lt;SPAN style="mso-list: Ignore"&gt;2.&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;Click on the folder icon next to the file path.&lt;/P&gt;
&lt;P class=MsoListParagraph style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l1 level1 lfo2"&gt;&lt;SPAN&gt;&lt;SPAN style="mso-list: Ignore"&gt;3.&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;In the files of type choose Access Data Project.&lt;/P&gt;
&lt;P class=MsoListParagraph style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l1 level1 lfo2"&gt;&lt;SPAN&gt;&lt;SPAN style="mso-list: Ignore"&gt;4.&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;Name the file and click Create&lt;/P&gt;
&lt;P&gt;&lt;IMG title="New file dialog with option for ADP." style="WIDTH: 666px; HEIGHT: 372px" height=372 alt="New file &amp;#13;&amp;#10;&amp;#13;&amp;#10;dialog with option for ADP." src="http://clintc.officeisp.net/Blogs/2007/2_Tips/_NewADP.jpg" width=666 mce_src="http://clintc.officeisp.net/Blogs/2007/2_Tips/_NewADP.jpg"&gt;&lt;/P&gt;
&lt;P&gt;Here is a &lt;A class="" href="http://office.microsoft.com/en-us/access/HA101679531033.aspx?pid=CH102098441033#3" mce_href="http://office.microsoft.com/en-us/access/HA101679531033.aspx?pid=CH102098441033#3"&gt;link&lt;/A&gt; to a UA article on New ADPs for more information. &lt;/P&gt;
&lt;H3&gt;Navigation Pane&lt;/H3&gt;
&lt;P&gt;There is a hidden menu in the navigation pane that is quite useful. Right click on the navigation pane title for this menu:&lt;/P&gt;
&lt;P&gt;&lt;IMG title="Navigation pane context menu." style="WIDTH: 208px; HEIGHT: 213px" height=213 alt="Navigation pane &amp;#13;&amp;#10;&amp;#13;&amp;#10;context menu." src="http://clintc.officeisp.net/Blogs/2007/2_Tips/_NavPaneContextMenu.jpg" width=208 mce_src="http://clintc.officeisp.net/Blogs/2007/2_Tips/_NavPaneContextMenu.jpg"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;My two favorite options in this menu is the Search Bar and the Sort | Custom Sort options. The search bar performs a Like *value* filter on the object name. This is really handy if you have a naming convention and want to quickly narrow down the displayed list. The Custom Sort option allows you to sort the objects in a custom order.&lt;/P&gt;
&lt;P&gt;Another thing, if you have focus in the navigation pane CTRL F will automatically turn on the search bar. You can use the down arrow to select items and the enter key to open the object. It makes it pretty easy to find and open objects with the keyboard, especially if the object has a unique string in its name.&lt;/P&gt;
&lt;P&gt;&lt;IMG title="Navigation pane search box." style="WIDTH: 207px; HEIGHT: 112px" height=112 alt="Navigation pane &amp;#13;&amp;#10;&amp;#13;&amp;#10;search box." src="http://clintc.officeisp.net/Blogs/2007/2_Tips/_NavFilter.jpg" width=207 mce_src="http://clintc.officeisp.net/Blogs/2007/2_Tips/_NavFilter.jpg"&gt;&lt;/P&gt;
&lt;H3&gt;Filtering and Queries&lt;/H3&gt;
&lt;P&gt;As a user interactions designer, I’m convinced context will&amp;nbsp;continue to drive UI innovation. Contextual tabs in the ribbon are one example of some great work done in this space. Filtering is another place inside Access that being smart about context really improves the user experience. In the past, text in the context menu was Filter by Selection and Exclude Selection. Access 2007 I clarifies context through vocabulary. Selected next now shows up in the context menu to provide more clarity. Did you know that the right-click context filtering options change based on your selection? Give it a try—look at the right click menu when the first and last character is selected. Now try selecting the whole word. You will also notice the filter options change based on the data type.&lt;/P&gt;
&lt;P&gt;The new filtering UI in Access makes it really easy to quickly create complicated WHERE clauses in queries. Save As for queries will flatten the active filter into the where clause. Open your favorite query and filter a date column using the This Month filter. Click on the Office Button | Save As.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;Give the new query a name. &lt;/P&gt;
&lt;H3&gt;Copy and Paste From Excel&lt;/H3&gt;
&lt;P&gt;Many good lists start in Excel and need to transfer into Access. Here is a simple way to get data into Access quickly. &lt;/P&gt;
&lt;P class=MsoListParagraph style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1"&gt;&lt;SPAN&gt;&lt;SPAN style="mso-list: Ignore"&gt;1.&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;Copy the data from Excel.&lt;/P&gt;
&lt;P class=MsoListParagraph style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1"&gt;&lt;SPAN&gt;&lt;SPAN style="mso-list: Ignore"&gt;2.&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;Create a new table inside Access&lt;/P&gt;
&lt;P class=MsoListParagraph style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1"&gt;&lt;SPAN&gt;&lt;SPAN style="mso-list: Ignore"&gt;3.&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;Click on the Add New Field &lt;/P&gt;
&lt;P class=MsoListParagraph style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1"&gt;&lt;SPAN&gt;&lt;SPAN style="mso-list: Ignore"&gt;4.&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;CRTL V – just like that you get a table inside Access. The new Table Tools contextual ribbon allows you to make the most common schema changes without flipping into design.&amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;IMG title="Paste from Excel." style="WIDTH: 257px; HEIGHT: 103px" height=103 alt="Paste from Excel." src="http://clintc.officeisp.net/Blogs/2007/2_Tips/_pasteFromExcel.jpg" width=257 mce_src="http://clintc.officeisp.net/Blogs/2007/2_Tips/_pasteFromExcel.jpg"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;You should also notice the behavior of copy and paste from Excel to Access has been improved in other areas.&lt;/P&gt;
&lt;H3&gt;Import From Excel&lt;/H3&gt;
&lt;P&gt;When importing from Excel files you can now override the data-type for a field. Sorry, I missed setting the data-type on link. Hopefully, the Access team will do that feature in the next version.&lt;/P&gt;
&lt;H3&gt;Outlook Reminders for Saved Import and Export Operations&lt;/H3&gt;
&lt;P&gt;You might have noticed at the end of an import or export operation there is a victory dialog. There is an option asking you if you want to save the operation. You might notice at the bottom if you want to create an Outlook reminder. &lt;/P&gt;
&lt;P&gt;&lt;IMG title="Export victory dialog." style="WIDTH: 563px; HEIGHT: 413px" height=413 alt="Export victory dialog." src="http://clintc.officeisp.net/Blogs/2007/2_Tips/_ExportDialog.jpg" width=563 mce_src="http://clintc.officeisp.net/Blogs/2007/2_Tips/_ExportDialog.jpg"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;This feature was designed for people that need to publish a report every couple days. You can use the Outlook reminders feature to remind the user to perform the task on a scheduled basis. The task has a Run Export/Import command that will repeat the recorded operation. &lt;/P&gt;
&lt;P&gt;&lt;IMG title="Outlook task reminder." style="WIDTH: 452px; HEIGHT: 435px" height=435 alt="Outlook task reminder." src="http://clintc.officeisp.net/Blogs/2007/2_Tips/_SavedExport.jpg" width=452 mce_src="http://clintc.officeisp.net/Blogs/2007/2_Tips/_SavedExport.jpg"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Here is a &lt;A class="" href="http://office.microsoft.com/en-us/access/HA012258131033.aspx?pid=CH100645741033" mce_href=" http://office.microsoft.com/en-us/access/HA012258131033.aspx?pid=CH100645741033"&gt;link &lt;/A&gt;to a good UA topic on the subject. &lt;/P&gt;
&lt;H3&gt;SharePoint Performance&lt;/H3&gt;
&lt;P&gt;The team spent a bunch of time improving SharePoint performance but it still is influenced by the speed of the connection to the server, server performance, and size of the data. I have found working with SharePoint data offline and using the synchronize command a far better experience. &lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&gt;This works much faster unless you are working on data that everyone else is changing. The conflict resolver UI gives you the chance to override server changes or discard your own changes. &lt;/P&gt;
&lt;P&gt;In the future, Access should provide the option for merge changes. Oh well, something for vnext.&lt;/P&gt;
&lt;P&gt;SharePoint also has a flag called Cache List Data. This stores a copy of the list data in the database file. When the database opens the Access database engine only requests changes from the server. It is a nice performance win for the client and server. &lt;/P&gt;
&lt;P&gt;One last thing… If your list on SharePoint is getting really large—you might consider linking to a view and not the list. This works well for scenarios where you have archived data in a table that isn’t necessary for your view. There is a trick—you can’t bind to the view using the UI. Use the &lt;A href="http://office.microsoft.com/client/helppreview.aspx?AssetID=HV100448591033&amp;amp;QueryID=CNyAgGyw-0&amp;amp;respos=1&amp;amp;rt=2&amp;amp;ns=MSACCESS.DEV&amp;amp;lcid=1033&amp;amp;pid=CH101072601033" mce_href="http://office.microsoft.com/client/helppreview.aspx?AssetID=HV100448591033&amp;amp;QueryID=CNyAgGyw-&amp;#13;&amp;#10;&amp;#13;&amp;#10;0&amp;amp;respos=1&amp;amp;rt=2&amp;amp;ns=MSACCESS.DEV&amp;amp;lcid=1033&amp;amp;pid=CH101072601033"&gt;TransferSharePointList&lt;/A&gt; method to create the link table. It has a property for the view.&lt;/P&gt;
&lt;H3&gt;Templates&lt;/H3&gt;
&lt;P&gt;You just created the projects template and think,&lt;/P&gt;&lt;I&gt;“Wow, MS did a pretty good job designing this template. I would really use it if only they had named the tables and fields something different (Projects should be called tblSpecs for my purpose).” &lt;/I&gt;
&lt;P&gt;Name fix-up is helpful at renaming objects and field names in templates. I know, I know—-name fix-up has a terrible reputation. In this release we made a significant investment in the name fix-up code base. Why? Early on we made the decision to use name fix-up to create localized templates. Every template we ship has an internal structure of English names. When a localized template is instantiated Access uses the name map to rename all objects from their English name to the localized name. &lt;/P&gt;
&lt;P&gt;What does this mean to you instantiating a template? It means that if you instantiate the projects template and rename projects to specs, name fix-up will make sure all references to the project table gets fix-up to specs. Access 2007 fix-up references in embedded macros, labels on field names, and conditional formats. The code was extremely well tested because if name fix-up failed a localized template would be broken. This commitment to use name fix-up dramatically increased the amount of testing and overall reliability of the feature.&lt;/P&gt;
&lt;P&gt;Zac’s book on templates &lt;A href="http://www.mannpublishing.com/Catalog/BookDetail.aspx?BookID=50" mce_href="http://www.mannpublishing.com/Catalog/BookDetail.aspx?BookID=50"&gt;The Rational Guide To Microsoft Office Access 2007 Templates&lt;/A&gt; is the definitive guide. If you are thinking about building a template—this is the book to get.&lt;/P&gt;
&lt;H3&gt;Template Internals&lt;/H3&gt;
&lt;P&gt;Want to see what’s inside a template file, the gory details of what makes up the .accdt file format?&amp;nbsp; Just rename the package to .zip and double click to open.&amp;nbsp; Inside you’ll find all the different parts of the database represented in XML and TXT formats, along with resources like the picture Access displays on the template’s tile in Getting Started. (Zac—form and report program manager)&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1722029" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/clintcovington/archive/tags/Developer/default.aspx">Developer</category><category domain="http://blogs.msdn.com/clintcovington/archive/tags/Access+2007/default.aspx">Access 2007</category><category domain="http://blogs.msdn.com/clintcovington/archive/tags/Tips+and+Tricks/default.aspx">Tips and Tricks</category></item><item><title>Macro improvements in Access 2007</title><link>http://blogs.msdn.com/clintcovington/archive/2007/02/15/macros-in-access-2007.aspx</link><pubDate>Thu, 15 Feb 2007 11:01:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1681787</guid><dc:creator>Clint Covington</dc:creator><slash:comments>10</slash:comments><comments>http://blogs.msdn.com/clintcovington/comments/1681787.aspx</comments><wfw:commentRss>http://blogs.msdn.com/clintcovington/commentrss.aspx?PostID=1681787</wfw:commentRss><description>&lt;SPAN class=style1&gt;&lt;SPAN class=style2&gt;&lt;STRONG&gt;Access 2007 and Macros &lt;/STRONG&gt;&lt;BR&gt;One feature that might be surprising to many experienced developers is the re-invigoration of macros in Access 2007. We have done a bunch of work in this area that we think benefits end users and developers in some scenarios. If you are running Access 2007 you will notice macros are used extensively in our templates and the button wizard and switchboard manager creates embedded macros. &lt;/SPAN&gt;&lt;/SPAN&gt;
&lt;P&gt;&lt;SPAN class=style1&gt;&lt;SPAN class=style2&gt;&lt;STRONG&gt;History of Macros&lt;/STRONG&gt;&lt;BR&gt;Many people think macros were a predecessor to Visual Basic, but it turns out that they were introduced at the same time.&amp;nbsp; However, they have different goals.&amp;nbsp; A large majority of knowledge workers are intimidated and frightened by free-flowing code, but they are more comfortable with using a structured grid such as the macro designer.&amp;nbsp;We found that there are many scenarios where users are very successful "programming" using macros. Macros target a broader audience of Access users that don't have the skills to drop into VBA and write code. Yet, these users are very successful picking an action and setting a couple parameters. This is why many applications built by knowledge workers are loaded with all sorts of macros.&lt;BR&gt;&amp;nbsp;&lt;BR&gt;Unfortunately, the Access team has not focused on knowledge workers for a long time.&amp;nbsp; We have traditionally been more developer focused,&amp;nbsp;so our macros have not received much attention.&amp;nbsp; One of our goals for Access 12 has been making the product easier to use by a broader audience (while still delivering features relevant to developers).&amp;nbsp;We think there are many knowledge workers that are tracking information in Excel that could be more appropriately stored in a database.&amp;nbsp; As you can tell from previous posts, Access 2007 has more new knowledge worker features than previous releases. I also think there are some nice enhancements for developers building bigger applications.&lt;BR&gt;&amp;nbsp;&lt;BR&gt;There are a number of things we did to improve the macro experience. &lt;BR&gt;&amp;nbsp;&lt;BR&gt;&lt;STRONG&gt;Embedded Macros&lt;/STRONG&gt;&lt;BR&gt;Just like you can save a SQL Statement in the Row Source or Record Source property, you can now save a macro in any event property.&amp;nbsp; These are called Embedded Macros.&amp;nbsp; Similar to SQL Statements, you can use Save As to create a standalone macro that can be reused.&amp;nbsp; One nice thing about Embedded Macros is that you can copy/paste and "Open Form" button and just change the form name that it opens, and you are done.&amp;nbsp; &lt;BR&gt;&amp;nbsp;&lt;BR&gt;When you think about templates and renaming objects--name fix-up becomes really important for users that want to start with one of our templates and modify it to more closely reflect their business. In this case, it is far easier for Access to perform name fix-up operations on macros than try to fix-up code. Think of the scenario of renaming the Contacts table to Employees in the Issues template. Many customers will want to do that—It would be really hard for us to do all the right things if all the logic was expressed in code.&lt;BR&gt;&amp;nbsp;&lt;BR&gt;&lt;STRONG&gt;Macro Sandbox&lt;/STRONG&gt;&lt;BR&gt;The biggest thing that we added to the macro architecture was the concept of a "sandbox".&amp;nbsp; Certain actions can run even when a database is not trusted.&amp;nbsp; You can think&amp;nbsp;of these macros like expression or&amp;nbsp;formulas in Excel.&amp;nbsp; VBA can never be trusted, so it never runs in an un-trusted database, but you can now use macros to build simple applications that are fully-functional without having to trust the solution.&amp;nbsp; This was our goal for templates.&amp;nbsp; They will leverage these macro that are allowed even when the instantiated template is not trusted.&lt;BR&gt;&amp;nbsp;&lt;BR&gt;The Show All Actions button switches the contents of the drop-down list in the Actions column between all actions and only the actions that are allowed in databases that have been trusted. The yellow warning sign in the record selector indicates the action won’t execute unless the database is trusted.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://clintc.officeisp.net/Blogs/2006/30%20-%20Macros/Show%20All%20Actions.PNG" mce_href="http://clintc.officeisp.net/Blogs/2006/30%20-%20Macros/Show%20All%20Actions.PNG"&gt;&lt;IMG class=style4 height=211 alt="" src="http://clintc.officeisp.net/Blogs/2006/30%20-%20Macros/Show%20All%20Actions_Small.PNG" width=391 mce_src="http://clintc.officeisp.net/Blogs/2006/30%20-%20Macros/Show%20All%20Actions_Small.PNG"&gt;&lt;/A&gt;&lt;SPAN class=style1&gt;&lt;SPAN class=style2&gt;&lt;EM&gt;&lt;BR&gt;(Click image to enlarge)&lt;/EM&gt;&lt;BR&gt;&amp;nbsp;&lt;BR&gt;&lt;STRONG&gt;Variables and TempVars&lt;/STRONG&gt;&lt;BR&gt;We also introduced temporary variable that are accessible via VBA and macros. TempVars are designed to store variant data that is transient in nature. Think of them as global variables that work across the whole product—anywhere there is VBA or an expression. They are exposed as an enumerable&amp;nbsp;collection off the Application object. There are two properties Name and Value and two methods Remove and RemoveAll.&lt;BR&gt;&amp;nbsp;&lt;BR&gt;There are four new macro actions associated with TempVars:&lt;BR&gt;(1)&amp;nbsp; TempVars![Name]returns the variant value that was stored.&lt;BR&gt;(2)&amp;nbsp; SetTempVars(Name, Expression) allows macros to set a TempVar to a given value.&lt;BR&gt;(3)&amp;nbsp; RemoveTempVars(Name) removes the&amp;nbsp;TempVar from the store.&lt;BR&gt;(4)&amp;nbsp; RemoveAllTempVars empties the TempVars store.&lt;BR&gt;&amp;nbsp;&lt;BR&gt;Here is an example of TempVars in use in a macro:&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;A href="http://clintc.officeisp.net/Blogs/2006/30%20-%20Macros/TempVar.PNG" mce_href="http://clintc.officeisp.net/Blogs/2006/30%20-%20Macros/TempVar.PNG"&gt;&lt;IMG class=style4 height=115 alt="" src="http://clintc.officeisp.net/Blogs/2006/30%20-%20Macros/TempVar_small.PNG" width=547 mce_src="http://clintc.officeisp.net/Blogs/2006/30%20-%20Macros/TempVar_small.PNG"&gt;&lt;/A&gt;&lt;SPAN class=style1&gt;&lt;SPAN class=style2&gt;&lt;BR&gt;&lt;EM&gt;(Click image to enlarge)&lt;/EM&gt;&lt;BR&gt;&amp;nbsp;&lt;BR&gt;&lt;STRONG&gt;Error Handling&lt;/STRONG&gt;&lt;BR&gt;One of the key weaknesses of macros in the past is the inability to handle errors. Well, that is not longer true.&amp;nbsp; We added an OnError action that is similar to the On Error statement in VBA.&amp;nbsp;OnError has three different settings:&lt;BR&gt;&amp;nbsp;&lt;BR&gt;(1)&amp;nbsp; 'Next', which is equivalent to "On Error GoTo Next" in VBA, and allows you to keep on running the macro while ignoring AND suppressing all errors. &lt;BR&gt;(2)&amp;nbsp; 'Fail', which is similar to “On Error GoTo 0” in VBA, will revert error handling to the default behavior of having macros fail completely on hitting any errors executing actions. &lt;BR&gt;(3)&amp;nbsp; 'Macro Name' is directly related to the 'Macro name' parameter. This allows you specify a label on the macro to where the macro will jump if any errors are found. This is very similar to the "On Error GoTo &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;STATEMENT&gt;&lt;SPAN class=style1&gt;&lt;SPAN class=style2&gt;" in VBA. You can easily use this to put up your own error messages:&lt;BR&gt;&amp;nbsp;&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN class=style2&gt;OnError (Macro Name, "Error")&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN class=style2&gt;OpenForm (Form, "Form1", …)&lt;BR&gt;&amp;nbsp; &lt;BR&gt;Error:&amp;nbsp; MsgBox ("Error: Custom message", …)&lt;BR&gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&lt;BR&gt;&lt;STRONG&gt;Button Wizard&lt;/STRONG&gt;&lt;BR&gt;One frequent complain that we hear about Access 2003 is the lousy code the button wizard generates. &lt;BR&gt;For example, if you create a “Record Operations &amp;gt; Print Record” button, this is the VBA it generates:&lt;BR&gt;&amp;nbsp;&lt;BR&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class=style2&gt;&lt;SPAN class=style1&gt;&lt;SPAN class=style3&gt;Private Sub cmdPrintRecord_Click()&lt;BR&gt;On Error GoTo Err_cmdPrintRecord_Click&lt;BR&gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DoCmd.DoMenuItem acFormBar, acEditMenu, 8, , acMenuVer70&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DoCmd.PrintOut acSelection&lt;BR&gt;&amp;nbsp;&lt;BR&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class=style1&gt;&lt;SPAN class=style3&gt;&lt;/SPAN&gt;&lt;SPAN class=style2&gt;&lt;SPAN class=style3&gt;Exit_cmdPrintRecord_Click:&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Exit Sub&lt;BR&gt;&amp;nbsp;&lt;BR&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class=style3&gt;&lt;/SPAN&gt;&lt;SPAN class=style2&gt;&lt;SPAN class=style3&gt;Err_cmdPrintRecord_Click:&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MsgBox Err.Description&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Resume Exit_cmdPrintRecord_Click&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;End Sub&lt;/SPAN&gt;&lt;BR&gt;&amp;nbsp;&lt;BR&gt;How do you like the DoMenuItem action? Yeah, I have memorized what the 8 means…&lt;BR&gt;&amp;nbsp;&lt;BR&gt;Here is the equivalent embedded macro:&lt;BR&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class=style3&gt;&lt;/SPAN&gt;&lt;SPAN class=style2&gt;&lt;SPAN class=style3&gt;RunCommand (SelectRecord)&lt;/SPAN&gt;&lt;SPAN class=style1&gt;&lt;SPAN class=style3&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class=style1&gt;&lt;SPAN class=style3&gt;&lt;/SPAN&gt;&lt;SPAN class=style2&gt;&lt;SPAN class=style3&gt;RunCommand (PrintSelection)&lt;BR&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;BR&gt;All the commands in the button wizard will now generate safe macros that execute property in un-trusted databases. We even updated the icons in the wizard!&lt;BR&gt;&amp;nbsp;&lt;BR&gt;&lt;STRONG&gt;Macros and Developers&lt;/STRONG&gt;&lt;BR&gt;One thing I would be sure to emphasize is the fact that macros behind form controls keep their contents even via copy/paste, whereas VBA events are lost.&amp;nbsp; &lt;BR&gt;&amp;nbsp;&lt;BR&gt;As a developer, if you write VBA code to do the majority of the interesting work, consider creating a simple embedded RunCode macro on the buttons that call the VBA code as opposed to VBA events directly behind the buttons.&amp;nbsp; The embedded macro acts as the bridge between the UI and the VBA code.&amp;nbsp; That gives the full functionality of the UI designer with copy/paste as well as the robustness of the VBA programming model.&amp;nbsp; &lt;BR&gt;&amp;nbsp;&lt;BR&gt;The new Northwind sample was developed this way where many of the simple open form with a filter functionality is stored in embedded macros. When we needed to do the heavy lifting we used VBA. Turns out there is far less code and the code that is there is more interesting.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1681787" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/clintcovington/archive/tags/Developer/default.aspx">Developer</category><category domain="http://blogs.msdn.com/clintcovington/archive/tags/Access+2007/default.aspx">Access 2007</category></item><item><title>The runtime and developer extensions will be FREE!</title><link>http://blogs.msdn.com/clintcovington/archive/2007/01/30/the-runtime-and-developer-extensions-will-be-free.aspx</link><pubDate>Tue, 30 Jan 2007 19:35:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1557714</guid><dc:creator>Clint Covington</dc:creator><slash:comments>16</slash:comments><comments>http://blogs.msdn.com/clintcovington/comments/1557714.aspx</comments><wfw:commentRss>http://blogs.msdn.com/clintcovington/commentrss.aspx?PostID=1557714</wfw:commentRss><description>&lt;P&gt;This morning we are announcing that the developer extensions and runtime will be available for &lt;STRONG&gt;FREE&lt;/STRONG&gt;! In the past, Access developers had to purchase the &lt;A class="" href="http://www.microsoft.com/products/info/product.aspx?view=22&amp;amp;pcid=dff94dd8-3184-4d2b-8630-9eb7acac961e&amp;amp;crumb=catpage&amp;amp;catid=515c9859-958b-4433-b4f9-91f37258ca2f#HowToBuy" mce_href="http://www.microsoft.com/products/info/product.aspx?view=22&amp;amp;pcid=dff94dd8-3184-4d2b-8630-9eb7acac961e&amp;amp;crumb=catpage&amp;amp;catid=515c9859-958b-4433-b4f9-91f37258ca2f#HowToBuy"&gt;Visual Studio Tools for Microsoft Office System&lt;/A&gt;&amp;nbsp;in order to build and deploy runtime solutions. The product was costly at nearly $800 for the full version and $550 for the upgrade. This really is great news for Access developers.&lt;/P&gt;
&lt;P&gt;We are still working on the finishing touches--I don't have a definite release date but rest assured the team is working hard to finish the work.&lt;/P&gt;
&lt;P&gt;Here are a couple screen shots and the article. Enjoy!&lt;/P&gt;
&lt;P&gt;&lt;IMG title="Save As Template" style="WIDTH: 372px; HEIGHT: 345px" height=345 alt="Save As Template" src="http://clintc.officeisp.net/Blogs/2007/1_Runtime/SaveAsTemplate.jpg" width=372 mce_src="http://clintc.officeisp.net/Blogs/2007/1_Runtime/SaveAsTemplate.jpg"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;IMG title="Package Solution Wizard" style="WIDTH: 608px; HEIGHT: 458px" height=458 alt="Package Solution Wizard" src="http://clintc.officeisp.net/Blogs/2007/1_Runtime/PackageSolutionWizard.jpg" width=608 mce_src="http://clintc.officeisp.net/Blogs/2007/1_Runtime/PackageSolutionWizard.jpg"&gt;&lt;/P&gt;
&lt;P&gt;&lt;IMG title="Package Solution Wizard Page 2" style="WIDTH: 608px; HEIGHT: 458px" height=458 alt="Package Solution Wizard Page 2" src="http://clintc.officeisp.net/Blogs/2007/1_Runtime/PackageSolutionWizard_2.jpg" width=608 mce_src="http://clintc.officeisp.net/Blogs/2007/1_Runtime/PackageSolutionWizard_2.jpg"&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://msdn2.microsoft.com/en-us/office/bb229700.aspx"&gt;http://msdn2.microsoft.com/en-us/office/bb229700.aspx&lt;/A&gt;&lt;/P&gt;
&lt;H1&gt;Introducing the Access 2007 Developer Extensions and Runtime&lt;/H1&gt;
&lt;P&gt;&lt;BR&gt;Shortly after the release to the general public of Microsoft Office Access 2007, Microsoft will make available the Access 2007 Developer Extensions and the Access 2007 Runtime. For the first time, both programs will be available as FREE downloads.&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&lt;/P&gt;
&lt;H2&gt;Access 2007 Developer Extensions&lt;/H2&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;B&gt;Package Solution&lt;/B&gt;&lt;BR&gt;This is a wizard that will create a Windows Installer Package (MSI) to install your database, any supporting files, and optionally include the Access 2007 Runtime or prompt the user to download the Access 2007 Runtime. 
&lt;LI&gt;&lt;B&gt;Save As Template&lt;/B&gt;&lt;BR&gt;This allows creating database templates (ACCDTs) that can be featured in the Access 2007 Getting Started screen. 
&lt;LI&gt;&lt;B&gt;Source Code Control&lt;/B&gt;&lt;BR&gt;Integration with Microsoft Visual Source Safe or other source code control systems to allow check-in/check-out of queries, forms, reports, macros, modules, and data. You can also see the differences that have been made to your checked out objects.&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;The Access 2007 Developer Extensions will not include the &lt;B&gt;Property Scanner&lt;/B&gt; and the &lt;B&gt;Customer Startup Wizard&lt;/B&gt; that were included in previous versions.&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&lt;/P&gt;
&lt;H2&gt;Microsoft Office Access 2007 Runtime&lt;/H2&gt;
&lt;P&gt;Access 2007 provides a rich platform for developing database management solutions with easy to use customization tools. If no end user customization is required (including report modifications), you may choose to distribute those Access 2007 solutions so that they run without requiring a full installation of Access 2007. You must package and distribute your application with the Access 2007 Runtime. The Access 2007 Runtime is similar to previous runtimes in that all design-related UI is either removed or disabled. However, there is one major change: we will be offering the Access 2007 Runtime as a free download, just like we have done for the Snapshot Viewer in the past. You will not need to buy any special SKU in order to redistribute the Access 2007 Runtime. You can freely redistribute it or just point people to the download on Microsoft.com.&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&lt;/P&gt;
&lt;H2&gt;Download Locations&lt;/H2&gt;
&lt;P&gt;Links to the download locations will be posted on &lt;A onclick="javascript:Track('ctl00_ctl01|ctl00_ctl02',this);" href="http://office.microsoft.com/access"&gt;Office Online&lt;/A&gt; and the &lt;A onclick="javascript:Track('ctl00_ctl01|ctl00_ctl03',this);" href="http://msdn.microsoft.com/access"&gt;Access Developer Portal on MSDN&lt;/A&gt;, when available.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1557714" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/clintcovington/archive/tags/Developer/default.aspx">Developer</category><category domain="http://blogs.msdn.com/clintcovington/archive/tags/Access+2007/default.aspx">Access 2007</category></item><item><title>New SQL editing and versioning tool for Access</title><link>http://blogs.msdn.com/clintcovington/archive/2007/01/26/sql-editing-and-versioning-tool-for-access.aspx</link><pubDate>Fri, 26 Jan 2007 21:43:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1537751</guid><dc:creator>Clint Covington</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/clintcovington/comments/1537751.aspx</comments><wfw:commentRss>http://blogs.msdn.com/clintcovington/commentrss.aspx?PostID=1537751</wfw:commentRss><description>&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;&amp;nbsp;I just got an email from Andrew Wrigley, an member of the UK Access users group, about a new tool he has developed for editing SQL. You all might find this interesting--Access SQL editing tools are so lame. I haven't used it but the screen shots look super interesting.&lt;/SPAN&gt;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;&lt;EM&gt;Wingspan Swift SQL is a SQL Editing and Versioning tool for Microsoft Access.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;It brings SQL editing out of the dark ages and into the 21st century and makes up for Visual Source Safe's lack of versioning for individual Access queries.&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/EM&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;&lt;o:p&gt;&lt;EM&gt;&amp;nbsp;&lt;/EM&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;&lt;EM&gt;It formats SQL strings to make them readable by humans, Find and Replace, 'intellisense' for table and query field names, you can add comments to SQL, you can test changes without overwriting the current SQL of your query, store multiple versions of each query and much, much, more.&lt;o:p&gt;&lt;/o:p&gt;&lt;/EM&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;&lt;o:p&gt;&lt;EM&gt;&amp;nbsp;&lt;/EM&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;&lt;EM&gt;You can review it (video tutorials, etc) at:&lt;o:p&gt;&lt;/o:p&gt;&lt;/EM&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;&lt;o:p&gt;&lt;EM&gt;&amp;nbsp;&lt;/EM&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;&lt;A href="http://www.wingspan.info/Products/SwiftSQL/" mce_href="http://www.wingspan.info/Products/SwiftSQL/"&gt;&lt;EM&gt;http://www.wingspan.info/Products/SwiftSQL/&lt;/EM&gt;&lt;/A&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;&lt;o:p&gt;&lt;EM&gt;&amp;nbsp;&lt;/EM&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;&lt;EM&gt;It works with Access 2K +, and uses com Add-In technology to make itself available directly from Access' interface.&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;(I need to adapt it to the Ribbon, but it works fine in Access 2007).&lt;/EM&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;&lt;EM&gt;&lt;/EM&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;&lt;EM&gt;&lt;IMG style="WIDTH: 675px; HEIGHT: 480px" height=480 src="http://www.wingspan.info/Images/SwiftSql/StoryBoard/Launched.gif" width=675 mce_src="http://www.wingspan.info/Images/SwiftSql/StoryBoard/Launched.gif"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/EM&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1537751" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/clintcovington/archive/tags/Developer/default.aspx">Developer</category></item></channel></rss>