<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://msmvps.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>Tony's Microsoft Access Blog : Tips</title><link>http://msmvps.com/blogs/access/archive/tags/Tips/default.aspx</link><description>Tags: Tips</description><dc:language>en</dc:language><generator>CommunityServer 2008.5 SP2 (Build: 40407.4157)</generator><item><title>Is Nothing</title><link>http://msmvps.com/blogs/access/archive/2009/10/05/is-nothing.aspx</link><pubDate>Mon, 05 Oct 2009 11:09:04 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1729882</guid><dc:creator>Tony</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/access/rsscomments.aspx?PostID=1729882</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/access/commentapi.aspx?PostID=1729882</wfw:comment><comments>http://msmvps.com/blogs/access/archive/2009/10/05/is-nothing.aspx#comments</comments><description>&lt;p&gt;I’m working on some largish updates to the &lt;a href="http://www.autofeupdater.com/" target="_blank"&gt;Auto FE Updater&lt;/a&gt; and I wanted to ensure that the new routine which logs errors would properly handle the situation if there were errors in the error logging routine.&amp;#160; A great deal of searching a dimly remembered discussion brought me to fellow Access MVP Dirk GoldGar’s posting on this topic.&amp;#160; &lt;a href="http://www.microsoft.com/communities/newsgroups/en-us/default.aspx?dg=microsoft.public.access.modulesdaovba&amp;amp;tid=1d27fde5-f84d-48ea-81be-333f97390a71&amp;amp;cat=&amp;amp;lang=&amp;amp;cr=&amp;amp;sloc=&amp;amp;p=1" target="_blank"&gt;How to know when a Connection or Recordset is open in Programming&lt;/a&gt; &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;If Not rs Is Nothing Then     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; rs.Close: Set rs = Nothing      &lt;br /&gt;End If      &lt;br /&gt;If Not gblLogdb Is Nothing Then _      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; gblLogdb.Close      &lt;br /&gt;MsgBox &amp;quot;The following error occurred in procedure Log_NewSession of Module Log&amp;quot; &amp;amp; vbCrLf &amp;amp; vbCrLf &amp;amp; _      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Err.Description &amp;amp; vbCrLf &amp;amp; vbCrLf &amp;amp; Command() &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Note that the standard error handling routine, including the sub/function name and module name is created by &lt;a href="http://www.mztools.com" target="_blank"&gt;MZTools&lt;/a&gt;.&amp;#160; An excellent free utility which I use all the time.&lt;/p&gt;  &lt;p&gt;I was rather startled.&amp;#160; This isn’t even documented in Access 97 help.&amp;#160;&amp;#160; Allen Browne has a page on this general topic - &lt;a href="http://allenbrowne.com/vba-NothingEmpty.html" target="_blank"&gt;Nothing? Empty? Missing? Null?&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1729882" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/access/archive/tags/Tips/default.aspx">Tips</category><category domain="http://msmvps.com/blogs/access/archive/tags/VBA/default.aspx">VBA</category><category domain="http://msmvps.com/blogs/access/archive/tags/Auto+FE+Updater/default.aspx">Auto FE Updater</category></item><item><title>InStrRev</title><link>http://msmvps.com/blogs/access/archive/2009/09/23/instrrev.aspx</link><pubDate>Wed, 23 Sep 2009 21:32:04 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1726051</guid><dc:creator>Tony</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/access/rsscomments.aspx?PostID=1726051</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/access/commentapi.aspx?PostID=1726051</wfw:comment><comments>http://msmvps.com/blogs/access/archive/2009/09/23/instrrev.aspx#comments</comments><description>&lt;p&gt;I’ll be darned.&amp;#160; I had no idea &lt;a href="http://msdn.microsoft.com/en-us/library/t2ekk41a%28VS.80%29.aspx" target="_blank"&gt;InStrRev&lt;/a&gt; existed in VBA code.&amp;#160; It is new in Access 2000 so it’s been around for nine years.&amp;#160; &lt;/p&gt;  &lt;p&gt;I had to build this function myself in A2.0 or A97 to get the file name from a string which had the path and file.&amp;#160;&amp;#160; The code needed to find the right most occurrence of “\” back slash.&amp;#160; I’ve been happily using my function ever since.&amp;#160;&amp;#160; &lt;/p&gt;  &lt;p&gt;I actually learned something new about Access this year.&amp;#160; &amp;lt;smile&amp;gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1726051" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/access/archive/tags/Access/default.aspx">Access</category><category domain="http://msmvps.com/blogs/access/archive/tags/Tips/default.aspx">Tips</category><category domain="http://msmvps.com/blogs/access/archive/tags/VBA/default.aspx">VBA</category></item><item><title>Queries and the 3061 "Too few parameters. Expected 1." message</title><link>http://msmvps.com/blogs/access/archive/2009/09/22/queries-and-the-3061-quot-too-few-parameters-expected-1-quot-message.aspx</link><pubDate>Wed, 23 Sep 2009 04:32:14 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1725904</guid><dc:creator>Tony</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/access/rsscomments.aspx?PostID=1725904</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/access/commentapi.aspx?PostID=1725904</wfw:comment><comments>http://msmvps.com/blogs/access/archive/2009/09/22/queries-and-the-3061-quot-too-few-parameters-expected-1-quot-message.aspx#comments</comments><description>&lt;p&gt;Your query is working just fine referencing a form to select some records:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/access.metablogapi/2063.QueryFormParm_5F00_721B66EC.jpg"&gt;&lt;img title="QueryFormParm" style="border-top-width:0px;display:inline;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="115" alt="QueryFormParm" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/access.metablogapi/4743.QueryFormParm_5F00_thumb_5F00_73EBBCB3.jpg" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;but when you run it in code you get the dreaded 3061 &amp;quot;Too few parameters. Expected 1.&amp;quot; message.&lt;/p&gt;  &lt;p&gt;One option is to evaluate the Forms![Form name]![Field Name] expression as per the following examples.&lt;/p&gt;  &lt;p&gt;The below example is an execute query.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Set db = CurrentDb      &lt;br /&gt;Set qdf = db.QueryDefs(&amp;quot;LEMBatchesRpt Append to temp table&amp;quot;)       &lt;br /&gt;For i = 0 To qdf.Parameters.Count - 1       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; qdf.Parameters(i) = Eval(qdf.Parameters(i).Name)       &lt;br /&gt;Next i &lt;/p&gt;    &lt;p&gt;qdf.Execute dbFailOnError&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;The below example is used in my standard routine which copies the contents of a recordset into an Excel spreadsheet.&amp;#160; Due to the requirements of basing the openrecordset on a query to which I added a Where clause I created a temporary query and then did the parameter evaluation&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;strSQL = &amp;quot;SELECT * FROM [&amp;quot; &amp;amp; strQuery &amp;amp; &amp;quot;]&amp;quot;      &lt;br /&gt;If Len(strWhere) &amp;gt; 0 Then _       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; strSQL = strSQL &amp;amp; &amp;quot; WHERE &amp;quot; &amp;amp; strWhere &amp;amp; &amp;quot;;&amp;quot;       &lt;br /&gt;Set qdf = db.CreateQueryDef(&amp;quot;&amp;quot;, strSQL)       &lt;br /&gt;For i = 0 To qdf.Parameters.Count - 1       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; qdf.Parameters(i) = Eval(qdf.Parameters(i).Name)       &lt;br /&gt;Next i       &lt;br /&gt;Set rs = qdf.OpenRecordset(dbOpenSnapshot)&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;….&lt;/p&gt;    &lt;p&gt;&amp;#39; Insert recordset into cells starting at left hand side and second row      &lt;br /&gt;&amp;#39;&amp;#160; Using a copyfromRecordset is much, much faster than stuffing in the cells one at a time.       &lt;br /&gt;.range(&amp;quot;A2&amp;quot;).CopyFromRecordset rs &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;This is used in a generic routine behind the &lt;a href="http://www.granitefleet.com/ScreenShots/screen_ReportCrtieriaSelection.htm" target="_blank"&gt;very flexible reporting form in the Granite Fleet Manager&lt;/a&gt;.&amp;#160; When the user clicks on the Export Report to Excel command button I look at the record source of the report to fetch the query name.&amp;#160;&amp;#160; I then build the where clause and execute the above code.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1725904" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/access/archive/tags/Access/default.aspx">Access</category><category domain="http://msmvps.com/blogs/access/archive/tags/Tips/default.aspx">Tips</category><category domain="http://msmvps.com/blogs/access/archive/tags/VBA/default.aspx">VBA</category></item><item><title>An approach to sending text messages from within an Access application</title><link>http://msmvps.com/blogs/access/archive/2009/08/06/an-approach-to-sending-text-messages-from-within-an-access-application.aspx</link><pubDate>Thu, 06 Aug 2009 20:55:34 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1713914</guid><dc:creator>Tony</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/access/rsscomments.aspx?PostID=1713914</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/access/commentapi.aspx?PostID=1713914</wfw:comment><comments>http://msmvps.com/blogs/access/archive/2009/08/06/an-approach-to-sending-text-messages-from-within-an-access-application.aspx#comments</comments><description>&lt;p&gt;Steve Schapel, fellow Access MVP, answered a question about sending SMSs with a page on his website.&amp;#160; &lt;a href="http://accesstips.datamanagementsolutions.biz/ftp_sms.htm" target="_blank"&gt;An approach to sending text messages from within an Access application&lt;/a&gt;&amp;#160;&amp;#160; I can see this capability being quite useful in some consumer facing applications requiring last minute notifications.&amp;#160;&amp;#160; One of Steve’s applications deals with school sporting events so last minute SMSs are very handy.&lt;/p&gt;  &lt;p&gt;Now it is possible to send emails to the cell phone gateway email accounts.&amp;#160; An example might be &lt;a href="mailto:78013456789@text.yourcellco.com"&gt;78013456789@text.yourcellco.com&lt;/a&gt;.&amp;#160; However this requires asking the person what cell phone company they use as the domain to the right of the @ sign is cell phone company specific.&amp;#160;&amp;#160; Also you run a risk of the cell phone deciding that your emails are spams.&amp;#160;&amp;#160; I would assume this is less of a risk if you use a SMS service which you pay for.&lt;/p&gt;  &lt;p&gt;As an aside the SMS outfit that Steve has used with good success is in South Africa.&amp;#160; While Steve’s clients in are New Zealand.&amp;#160; I find it quite interesting that SMS service is reliable between continents.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1713914" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/access/archive/tags/Access/default.aspx">Access</category><category domain="http://msmvps.com/blogs/access/archive/tags/Tips/default.aspx">Tips</category></item><item><title>Steps to think about when doing a data MDB back up, compact or zip.</title><link>http://msmvps.com/blogs/access/archive/2009/06/18/steps-to-think-about-when-doing-a-data-mdb-back-up-compact-or-zip.aspx</link><pubDate>Thu, 18 Jun 2009 22:16:27 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1695816</guid><dc:creator>Tony</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/access/rsscomments.aspx?PostID=1695816</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/access/commentapi.aspx?PostID=1695816</wfw:comment><comments>http://msmvps.com/blogs/access/archive/2009/06/18/steps-to-think-about-when-doing-a-data-mdb-back-up-compact-or-zip.aspx#comments</comments><description>&lt;p&gt;I have a button on my &lt;a href="http://www.granitefleet.com/" target="_blank"&gt;Granite Fleet Manager&lt;/a&gt; app which allows the user to do a backup of the backend data MDB. I also have two other buttons which zip and email the backend data MDB to either themselves for backup purposes or to me for support purposes. &lt;/p&gt; &lt;p&gt;However any open forms or reports will lock the back end MDB file so a rename and compact won&amp;#39;t happen. &lt;p&gt;As I do not know which forms and reports the user might have left open when they click on any of the buttons I run through some code that closes all open forms and reports, then run the code doing the rename, compact back to the same file name and, if requested do the zip and email. &lt;p&gt;&amp;#39; close all forms and reports&lt;br /&gt;For Each frm In Forms&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DoCmd.Close acForm, frm.Name&lt;br /&gt;Next frm&lt;br /&gt;DoEvents&lt;br /&gt;For Each rpt In Reports&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DoCmd.Close acReport, rpt.Name&lt;br /&gt;Next rpt&lt;br /&gt;DoEvents &lt;p&gt;DoEvents seems to be necessary to give things time to close. But maybe not.. &lt;p&gt;Also note that I do keep a status form open during the above operation. I also do not have any list boxes or combo boxes with the row source set to a query or table referencing the data MDB on the form. And I don&amp;#39;t have any open recordset or database variables for &lt;a target="_blank"&gt;performance purposes&lt;/a&gt;. &lt;p&gt;You can double check that this code works by stopping the code just after the above and seeing if the ldb file on the data backend mdb no longer exists &lt;p&gt;Of course if there are other users in the back end then the rename won&amp;#39;t work of course. Also see my &lt;a href="http://www.granite.ab.ca/access/backup.htm" target="_blank"&gt;Backup, do you trust the users or sysadmins?&lt;/a&gt; tips page for more info.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1695816" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/access/archive/tags/Access/default.aspx">Access</category><category domain="http://msmvps.com/blogs/access/archive/tags/Tips/default.aspx">Tips</category><category domain="http://msmvps.com/blogs/access/archive/tags/backup/default.aspx">backup</category></item><item><title>Redimming an array 1,000,000 times takes 4.63 seconds</title><link>http://msmvps.com/blogs/access/archive/2009/05/21/redimming-an-array-1-000-000-times-takes-4-63-seconds.aspx</link><pubDate>Fri, 22 May 2009 02:31:30 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1692920</guid><dc:creator>Tony</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/access/rsscomments.aspx?PostID=1692920</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/access/commentapi.aspx?PostID=1692920</wfw:comment><comments>http://msmvps.com/blogs/access/archive/2009/05/21/redimming-an-array-1-000-000-times-takes-4-63-seconds.aspx#comments</comments><description>&lt;p&gt;The following question was asked at StackedOverflow.&lt;a href="http://stackoverflow.com/questions/890709/how-do-you-redimension-an-array-in-vba" target="_blank"&gt;How do you redimension an array in VBA?&lt;/a&gt;.&amp;nbsp; One response was some detailed code showing how to redim an array efficiently by doubling the number of elements.&amp;nbsp;&amp;nbsp; This took 0.41 seconds for a million records while redimming 1,000,000 took 4.63 records.&lt;/p&gt; &lt;p&gt;I don&amp;#39;t think I&amp;#39;ve ever had over 100 elements in an array.&amp;nbsp;&amp;nbsp; Maybe 1,000 once or twice. And now I&amp;#39;m not at all concerned about efficiency while redimming.&lt;/p&gt; &lt;p&gt;Note that I only occasionally visit that website to answer questions.&amp;nbsp; My biggest complaint is that you never know what comments or postings are new and haven&amp;#39;t been answered.&amp;nbsp; Very much unlike using a NNTP newsgroup reader rich client.&amp;nbsp;&amp;nbsp; But it&amp;#39;s interesting to poke about to see what&amp;#39;s new has been answered. &lt;/p&gt; &lt;p&gt;It&amp;#39;s also interesting to read what bull**it has been spouted by folks who view Access with a lot of disdain.&amp;nbsp; &lt;a href="http://stackoverflow.com/users/9787/david-w-fenton" target="_blank"&gt;David W. Fenton&lt;/a&gt; is doing a fine job of answering such comments.&amp;nbsp; &lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1692920" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/access/archive/tags/Access/default.aspx">Access</category><category domain="http://msmvps.com/blogs/access/archive/tags/Tips/default.aspx">Tips</category><category domain="http://msmvps.com/blogs/access/archive/tags/VBA/default.aspx">VBA</category></item><item><title>Access Demos, tutorials and basics</title><link>http://msmvps.com/blogs/access/archive/2009/04/26/access-demos-tutorials-and-basics.aspx</link><pubDate>Sun, 26 Apr 2009 21:35:19 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1691330</guid><dc:creator>Tony</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/access/rsscomments.aspx?PostID=1691330</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/access/commentapi.aspx?PostID=1691330</wfw:comment><comments>http://msmvps.com/blogs/access/archive/2009/04/26/access-demos-tutorials-and-basics.aspx#comments</comments><description>&lt;p&gt;Thanks to a posting by &lt;a href="https://mvp.support.microsoft.com/default.aspx/profile/bill.mosca" target="_blank"&gt;Bill Mosca&lt;/a&gt; Access (2007) Demo Videos can be found at &lt;a href="http://office.microsoft.com/en-us/access/CH100739911033.aspx" target="_blank"&gt;Access Demos&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Also see &lt;a href="http://www.accessmvp.com/Strive4Peace/Index.htm"&gt;Access Basics by Crystal&lt;/a&gt; fellow Access MVP.&amp;nbsp;&amp;nbsp; She also has some &lt;a href="http://www.accessmvp.com/Strive4Peace/Videos/Index.htm" target="_blank"&gt;Video Tutorials&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1691330" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/access/archive/tags/Access/default.aspx">Access</category><category domain="http://msmvps.com/blogs/access/archive/tags/Tips/default.aspx">Tips</category><category domain="http://msmvps.com/blogs/access/archive/tags/Access+2007/default.aspx">Access 2007</category></item><item><title>Some code to tame the Office Ribbon for Access (2007)</title><link>http://msmvps.com/blogs/access/archive/2009/04/26/some-code-to-tame-the-office-ribbon-for-access-2007.aspx</link><pubDate>Sun, 26 Apr 2009 21:18:50 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1691329</guid><dc:creator>Tony</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/access/rsscomments.aspx?PostID=1691329</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/access/commentapi.aspx?PostID=1691329</wfw:comment><comments>http://msmvps.com/blogs/access/archive/2009/04/26/some-code-to-tame-the-office-ribbon-for-access-2007.aspx#comments</comments><description>&lt;p&gt;Albert Kallal, fellow Access MVP just announced the following: &lt;p&gt;&amp;quot;The office ribbon is an amazing new interface.  &lt;p&gt;The problem with the ribbon is that takes a lot of code to change the ribbon at runtime.  &lt;p&gt;Solution: With my ribbon class you can enable, hide, change label text, or pictures of a button with great ease and very little code.  &lt;p&gt;This ribbon class allows you to use the simple &amp;quot;old style&amp;quot; syntax to enable, hide, or change the text of a button.&amp;nbsp; eg:  &lt;blockquote&gt; &lt;p&gt;meRib(&amp;quot;Button1&amp;quot;).enabled = true &lt;br /&gt;meRib(&amp;quot;Button1&amp;quot;).label = &amp;quot;this is the new text for button1 on the ribbon&amp;quot; &lt;br /&gt;meRib(&amp;quot;Button1&amp;quot;).picture = &amp;quot;HappyFace.png&amp;quot;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&lt;a href="http://www.members.shaw.ca/AlbertKallal/Ribbon/ribbon.htm" target="_blank"&gt;Some code to tame the Office Ribbon for Access (2007)&lt;/a&gt; &lt;p&gt;There may be some updates suggested by fellow MVPs so check back to that page on a regular basis.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1691329" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/access/archive/tags/Tips/default.aspx">Tips</category><category domain="http://msmvps.com/blogs/access/archive/tags/Access+2007/default.aspx">Access 2007</category></item><item><title>Overflow error 6</title><link>http://msmvps.com/blogs/access/archive/2009/04/25/overflow-error-6.aspx</link><pubDate>Sat, 25 Apr 2009 21:32:43 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1690984</guid><dc:creator>Tony</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/access/rsscomments.aspx?PostID=1690984</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/access/commentapi.aspx?PostID=1690984</wfw:comment><comments>http://msmvps.com/blogs/access/archive/2009/04/25/overflow-error-6.aspx#comments</comments><description>&lt;p&gt;A newsgroup poster had the following very standard lines of code &lt;blockquote&gt; &lt;p&gt;strSQL = &amp;quot;SELECT Mytable.Field1, Mytable.Field2, Mytable.Field3 FROM Mytable&amp;quot;&lt;br /&gt;SET rs = Currentdb.OpenRecordset(strSQL,dbOpenDynaset)&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;The error was Overflow error 6. &lt;p&gt;He then replied a day&amp;nbsp; later indicating that one of the variables in his code had been defined as an integer when it should&amp;#39;ve been a long.&amp;nbsp;&amp;nbsp; Now this is rather obscure although, once you think about it, quite understandable. &lt;p&gt;As a matter of course I always use Long fields for integers even if there will only ever be a few hundred records in the table.&amp;nbsp;&amp;nbsp; So I would like to think I would never have seen this message.&amp;nbsp; But you never know.&amp;nbsp; &lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1690984" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/access/archive/tags/Access/default.aspx">Access</category><category domain="http://msmvps.com/blogs/access/archive/tags/Tips/default.aspx">Tips</category><category domain="http://msmvps.com/blogs/access/archive/tags/VBA/default.aspx">VBA</category></item><item><title>A bizarre report problem</title><link>http://msmvps.com/blogs/access/archive/2009/04/20/a-bizarre-report-problem.aspx</link><pubDate>Tue, 21 Apr 2009 05:36:16 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1689345</guid><dc:creator>Tony</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/access/rsscomments.aspx?PostID=1689345</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/access/commentapi.aspx?PostID=1689345</wfw:comment><comments>http://msmvps.com/blogs/access/archive/2009/04/20/a-bizarre-report-problem.aspx#comments</comments><description>&lt;p&gt; So Jim phones me with a very strange report problem as per the below portion of the report.&amp;nbsp; It&amp;#39;s impossible to have the PM010-03B as a duplicate as that is a no duplicates allowed index in the table.&amp;nbsp;&amp;nbsp; Besides where is the data in the field to the left and the 0.0% amount on the right hand side which is represented by the circles?&lt;/p&gt; &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/access/CtrlEnterProblem_5F00_2.jpg"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="330" alt="CtrlEnterProblem" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/access/CtrlEnterProblem_5F00_thumb.jpg" width="481" border="0" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;The query on which the report is based doesn&amp;#39;t show that duplicate value.&lt;/p&gt; &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/access/CtrlEnterProblem3_5F00_2.jpg"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="104" alt="CtrlEnterProblem3" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/access/CtrlEnterProblem3_5F00_thumb.jpg" width="323" border="0" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Note that the X in 03AX in the first column and the XXXX as well as PM010-03A being twice was part of Jim&amp;#39;s testing trying to figure out the problem.&lt;/p&gt; &lt;p&gt;Here is the report in design view.&amp;nbsp;&amp;nbsp; Simple, right?&lt;/p&gt; &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/access/CtrlEnterProblem2_5F00_2.jpg"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="227" alt="CtrlEnterProblem2" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/access/CtrlEnterProblem2_5F00_thumb.jpg" width="525" border="0" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;While there is some code behind the form it had nothing to do with these fields.&amp;nbsp; Commenting out the code made no difference.&lt;/p&gt; &lt;p&gt;The fields did not have the Hide Duplicates property set to Yes.&lt;/p&gt; &lt;p&gt;So we added some labels to various sections on the report.&amp;nbsp; Only one record and one set of labels were printing and yet we had the duplicate line.&amp;nbsp; Stranger and stranger.&lt;/p&gt; &lt;p&gt;Now we added a constant to the actActivityDescription control so it looked like &amp;quot;=[actActivityDescription]&amp;amp;&amp;quot;&amp;nbsp;&amp;nbsp; testing&amp;quot;.&amp;nbsp; Still only printed one line but this time the &amp;quot;testing&amp;quot; was only on the second line.&amp;nbsp;&amp;nbsp; Getting even weirder.&lt;/p&gt; &lt;p&gt;Suddenly the light bulb went on.&lt;/p&gt; &lt;p&gt;Somehow the user entered the PM010-03B MOD in the activity description on the form, hit Ctrl+Enter and then re-entered PM010-03B MOD on the second line.&amp;nbsp;&amp;nbsp; But all the user could see was one line so you can&amp;#39;t blame them.&lt;/p&gt; &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/access/CtrlEnterProblem4_5F00_4.jpg"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="145" alt="CtrlEnterProblem4" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/access/CtrlEnterProblem4_5F00_thumb_5F00_1.jpg" width="318" border="0" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Truly bizarre.&amp;nbsp;&amp;nbsp; I doubt I&amp;#39;ll ever see this one again.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1689345" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/access/archive/tags/Access/default.aspx">Access</category><category domain="http://msmvps.com/blogs/access/archive/tags/Tips/default.aspx">Tips</category></item><item><title>Updating backend MDB tables, fields, relationships and indexes</title><link>http://msmvps.com/blogs/access/archive/2009/04/10/updating-backend-mdb-tables-fields-relationships-and-indexes.aspx</link><pubDate>Fri, 10 Apr 2009 22:00:01 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1686757</guid><dc:creator>Tony</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/access/rsscomments.aspx?PostID=1686757</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/access/commentapi.aspx?PostID=1686757</wfw:comment><comments>http://msmvps.com/blogs/access/archive/2009/04/10/updating-backend-mdb-tables-fields-relationships-and-indexes.aspx#comments</comments><description>&lt;p&gt;Short posting &lt;p&gt;I like using the &lt;a href="http://home.gci.net/~mike-noel/CompareEM-LITE/CompareEM.htm" target="_blank"&gt;Compare&amp;#39;Em&lt;/a&gt; utility which creates the necessary VBA code to create/update tables, fields, relationships and indexes.&amp;nbsp; It works by comparing your last version of the BE MDB with the latest development version of the BE MDB.&amp;nbsp;&amp;nbsp;&amp;nbsp; While I don&amp;#39;t need the Pro version nevertheless I paid the $10 for it.&amp;nbsp;&amp;nbsp; It does have it&amp;#39;s quirks about which I&amp;#39;ve emailed the author.&lt;/p&gt; &lt;p&gt;Long posting&lt;/p&gt; &lt;p&gt;I have a one record table in the front end and back end MDB with the FE and BE version number.&amp;nbsp;&amp;nbsp; Whenever I open the FE MDB I run code which compares the version numbers in the current FE MDB and BE MDB.&amp;nbsp; If different the code then executes subroutines based on the version on the BE.&amp;nbsp; As each version of the is updated I update the version field to the successfully updated version.&amp;nbsp; I also run the code if the user switches from one BE MDB to another.&lt;/p&gt; &lt;p&gt;I also execute queries in the midst of the above created VBA code to clean up data as required.&amp;nbsp; For example I recently created a service techs table in the &lt;a href="http://www.granitefleet.com/" target="_blank"&gt;Granite Fleet Manager&lt;/a&gt;.&amp;nbsp; In the past the service techs fields was just a string field on the service order table.&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&amp;#39; Append records to ServiceRecords table&lt;br /&gt;strSQL = &amp;quot;INSERT INTO ServiceTech ( stServiceTech ) &amp;quot; &amp;amp; _&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;quot; IN &amp;#39;&amp;quot; &amp;amp; strDatabasePathandName &amp;amp; &amp;quot;&amp;#39; &amp;quot; &amp;amp; _&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;quot;SELECT srServicePerson FROM ServiceRecords &amp;quot; &amp;amp; _&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;quot; IN &amp;#39;&amp;quot; &amp;amp; strDatabasePathandName &amp;amp; &amp;quot;&amp;#39; &amp;quot; &amp;amp; _&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;quot;GROUP BY srServicePerson &amp;quot; &amp;amp; _&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;quot;HAVING (srServicePerson Is Not Null);&amp;quot;&lt;br /&gt;CurrentDb.Execute strSQL, dbFailOnError&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;Note the IN statement which allows you to update tables in MDBs which aren&amp;#39;t linked.&amp;nbsp;&amp;nbsp; Of course I had to then update the service order with the autonumber ID in the above just created service techs table and then delete the field from the service order table.&lt;/p&gt; &lt;p&gt;As you well imagine there are many variations of John Smith in the various service orders.&amp;nbsp;&amp;nbsp; John, John S, John S., and so forth.&amp;nbsp; So I gave the users a form to clean up the data.&amp;nbsp;&amp;nbsp; (The High Rate record was for testing a high rate of pay and invoicing to ensure there was lots of room on various forms and reports.)&lt;/p&gt; &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/access/ServiceTechsToMerge_5F00_2.jpg"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="426" alt="ServiceTechsToMerge" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/access/ServiceTechsToMerge_5F00_thumb.jpg" width="312" border="0" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Mechanics aren&amp;#39;t paid for their typing or spelling.&amp;nbsp; &amp;lt;smile&amp;gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1686757" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/access/archive/tags/Access/default.aspx">Access</category><category domain="http://msmvps.com/blogs/access/archive/tags/Tips/default.aspx">Tips</category><category domain="http://msmvps.com/blogs/access/archive/tags/Granite+Fleet+Manager/default.aspx">Granite Fleet Manager</category></item><item><title>Which control has the focus?</title><link>http://msmvps.com/blogs/access/archive/2009/04/10/which-control-has-the-focus.aspx</link><pubDate>Fri, 10 Apr 2009 21:19:47 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1686749</guid><dc:creator>Tony</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/access/rsscomments.aspx?PostID=1686749</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/access/commentapi.aspx?PostID=1686749</wfw:comment><comments>http://msmvps.com/blogs/access/archive/2009/04/10/which-control-has-the-focus.aspx#comments</comments><description>&lt;p&gt;Sometimes when you&amp;#39;re tabbing around a form the focus disappears.&lt;strong&gt;&amp;nbsp; &lt;/strong&gt;&lt;a href="http://datagnostics.com/index.html" target="_blank"&gt;Dirk Goldgar&lt;/a&gt;, &lt;a href="https://mvp.support.microsoft.com/profile=5FBD55CD-95CE-46F2-9E74-B3FC3B08D5C5" target="_blank"&gt;fellow Access MVP&lt;/a&gt;, has a very useful and simple solution to determining which control has the focus in a &lt;a href="http://groups.google.ca/group/microsoft.public.access/msg/a574a4786367627c?hl=en" target="_blank"&gt;newsgroup posting&lt;/a&gt;.&amp;nbsp;&amp;nbsp; &lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&amp;quot;If you want to know where the focus is at some point when it seems to have &lt;br /&gt;disappeared, press Ctrl+G to bring up the Immediate Window, and enter the &lt;br /&gt;statement &lt;/p&gt;&lt;/blockquote&gt; &lt;blockquote&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ?Screen.ActiveControl.Name &lt;/p&gt;&lt;/blockquote&gt; &lt;blockquote&gt; &lt;p&gt;After you press enter, the name of the active control should be displayed on &lt;br /&gt;the next line. &amp;quot;&lt;/p&gt;&lt;/blockquote&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1686749" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/access/archive/tags/Access/default.aspx">Access</category><category domain="http://msmvps.com/blogs/access/archive/tags/Tips/default.aspx">Tips</category></item><item><title>What is the best way to understand the tables,queries, relationships,etc?</title><link>http://msmvps.com/blogs/access/archive/2009/03/17/what-is-the-best-way-to-understand-the-tables-queries-relationships-etc.aspx</link><pubDate>Tue, 17 Mar 2009 20:28:48 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1678804</guid><dc:creator>Tony</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/access/rsscomments.aspx?PostID=1678804</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/access/commentapi.aspx?PostID=1678804</wfw:comment><comments>http://msmvps.com/blogs/access/archive/2009/03/17/what-is-the-best-way-to-understand-the-tables-queries-relationships-etc.aspx#comments</comments><description>&lt;p&gt;KrispyData asked the following question in the newsgroups &lt;blockquote&gt; &lt;p&gt;What is the best way to understand the tables,queries, relationships,etc.&amp;nbsp; I &lt;br /&gt;am new to Access and taking over an entire database.&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;Philip Herlihy had an excellent reply well worth reading.&amp;nbsp;&amp;nbsp; Jeff Boyce, fellow Access MVP, also had some good comments.&lt;strong&gt;&amp;nbsp; &lt;/strong&gt;I&amp;#39;m sure the discussion will continue for a few days so keep checking back to the thread.&amp;nbsp;&amp;nbsp; &lt;p&gt;&lt;a href="http://groups.google.ca/group/microsoft.public.access.gettingstarted/browse_thread/thread/330a0df3ffbcc7ab/9258ae6a0a2ac0d1" target="_blank"&gt;Any tips on working with a database that you did not create?&lt;/a&gt; &lt;p&gt;Note that KrispyData&amp;#39;s original posting did not somehow make it to Google Groups.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1678804" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/access/archive/tags/Tips/default.aspx">Tips</category><category domain="http://msmvps.com/blogs/access/archive/tags/Software+Development/default.aspx">Software Development</category></item><item><title>Hiding 70 controls based on a value</title><link>http://msmvps.com/blogs/access/archive/2009/03/02/hiding-70-controls-based-on-a-value.aspx</link><pubDate>Tue, 03 Mar 2009 03:34:43 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1675323</guid><dc:creator>Tony</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/access/rsscomments.aspx?PostID=1675323</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/access/commentapi.aspx?PostID=1675323</wfw:comment><comments>http://msmvps.com/blogs/access/archive/2009/03/02/hiding-70-controls-based-on-a-value.aspx#comments</comments><description>&lt;p&gt;At the blog entry &lt;a href="http://msmvps.com/blogs/access/archive/2009/03/02/1648273.aspx" target="_blank"&gt;Getting a list of control names on a form&lt;/a&gt; Nate posted the following comment:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;Thanks for the great tip!&amp;nbsp; It doesn&amp;#39;t seem to include labels and command buttons, but it is still a great help.&amp;nbsp; I have a form where I am hiding 70 controls based on a value, so this saved me some real time.&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;Thanks for the kind words.&amp;nbsp; &lt;/p&gt; &lt;p&gt;But a better method might be to use the control&amp;#39;s tag property.&amp;nbsp;&amp;nbsp; See &lt;a href="http://www.granite.ab.ca/access/locking_fields_on_a_form.htm" target="_blank"&gt;Locking fields on a form in Microsoft Access&lt;/a&gt; for more details.&amp;nbsp; One nice thing about the tag property as that you can use Shift + click to select multiple controls to set the property.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1675323" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/access/archive/tags/Access/default.aspx">Access</category><category domain="http://msmvps.com/blogs/access/archive/tags/Tips/default.aspx">Tips</category><category domain="http://msmvps.com/blogs/access/archive/tags/VBA/default.aspx">VBA</category></item><item><title>Using record selector on a form to select multiple records</title><link>http://msmvps.com/blogs/access/archive/2009/02/22/using-record-selector-on-a-form-to-select-multiple-records.aspx</link><pubDate>Mon, 23 Feb 2009 06:32:26 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1673241</guid><dc:creator>Tony</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/access/rsscomments.aspx?PostID=1673241</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/access/commentapi.aspx?PostID=1673241</wfw:comment><comments>http://msmvps.com/blogs/access/archive/2009/02/22/using-record-selector-on-a-form-to-select-multiple-records.aspx#comments</comments><description>&lt;p&gt;A fellow Access MVP asked if there was a way of using the record selector to select multiple records and perform an action on them.&amp;nbsp; Tom Wickerath, also a fellow Access MVP, responded with &lt;a href="http://support.microsoft.com/?id=294202" target="_blank"&gt;How to enumerate selected form records in Access 2003 and in Access 2002&lt;/a&gt;.&amp;nbsp;&amp;nbsp; I&amp;#39;d never seen the forms SelTop or SelHeight properties before so was quite intrigued.&amp;nbsp;&amp;nbsp; So I had to find a form in the &lt;a href="http://www.granitefleet.com/" target="_blank"&gt;Granite Fleet Manager&lt;/a&gt; where I could implement this functionality.&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/p&gt; &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/access/BulkMoverMove_5F00_2.jpg"&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/access/BulkMoverMultipleLocations_5F00_2.jpg"&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/access/BulkMoverMove_5F00_2.jpg"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="210" alt="BulkMoverMove" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/access/BulkMoverMove_5F00_thumb.jpg" width="709" border="0" /&gt;&lt;/a&gt;&lt;/a&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;The code was fairly simple to implement.&amp;nbsp; This gives us some more UI options which allow us to make Access continuous forms operate a bit like Excel worksheets in some simple respects.&lt;/p&gt; &lt;p&gt;Should the user be intrigued by the bulk move button and they didn&amp;#39;t select any records they will get the following message.&lt;/p&gt; &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/access/BulkMoverMoveMessage_5F00_2.jpg"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="98" alt="BulkMoverMoveMessage" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/access/BulkMoverMoveMessage_5F00_thumb.jpg" width="568" border="0" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h3&gt;Other UI Enhancements&lt;/h3&gt; &lt;p&gt;Now this form allows the user to return the equipment to the main shop so I designed the UI with two radio buttons labeled Move and Return.&amp;nbsp; You will note the new location field is disabled and some command button captions were changed.&lt;/p&gt; &lt;p&gt;&lt;a href="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/access/BulkMoverReturn_5F00_2.jpg"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="123" alt="BulkMoverReturn" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/access/BulkMoverReturn_5F00_thumb.jpg" width="703" border="0" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;It&amp;#39;s possible for equipment to be issued to multiple temporary locations inadvertently. I created an additional All or Multiple Locations set of radio buttons along with the red diamond symbol.&amp;nbsp;&amp;nbsp; This allows the users to very quickly locate all such anomalous data and correct it immediately.&amp;nbsp;&amp;nbsp; &lt;/p&gt; &lt;p&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="145" alt="BulkMoverMultipleLocations" src="http://msmvps.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/access/BulkMoverMultipleLocations_5F00_thumb.jpg" width="722" border="0" /&gt;&lt;/p&gt; &lt;p&gt;The red diamond is the letter u in the WingDings font.&amp;nbsp; I chose the diamond as it has the most &amp;quot;colour&amp;quot; of any WingDings font entries and is a neutral symbol.&lt;/p&gt; &lt;p&gt;Now I&amp;#39;m not very happy with how the All and Multiple Locations set of radio buttons takes up so much room vertically.&amp;nbsp; And it doesn&amp;#39;t fit in well with the rest of the UI on that form or with other forms.&amp;nbsp;&amp;nbsp; But that was the best I could think of at the time. &lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1673241" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/access/archive/tags/Access/default.aspx">Access</category><category domain="http://msmvps.com/blogs/access/archive/tags/Tips/default.aspx">Tips</category><category domain="http://msmvps.com/blogs/access/archive/tags/VBA/default.aspx">VBA</category></item><item><title>Why Do So Many Programmers Use One Character Index Variables?</title><link>http://msmvps.com/blogs/access/archive/2008/12/28/why-do-so-many-programmers-use-one-character-index-variables.aspx</link><pubDate>Mon, 29 Dec 2008 05:56:58 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1657952</guid><dc:creator>Tony</dc:creator><slash:comments>4</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/access/rsscomments.aspx?PostID=1657952</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/access/commentapi.aspx?PostID=1657952</wfw:comment><comments>http://msmvps.com/blogs/access/archive/2008/12/28/why-do-so-many-programmers-use-one-character-index-variables.aspx#comments</comments><description>&lt;p&gt;&lt;a href="http://blogs.msdn.com/alfredth/archive/2008/12/23/why-do-so-many-programmers-use-one-character-index-variables.aspx" target="_blank"&gt;Why Do So Many Programmers Use One Character Index Variables&lt;/a&gt; has a very good point for those of us of a certain age accompanied by greying hair, bifocals and ...&amp;nbsp;&amp;nbsp; And yes I did learn Fortran as a teenager at the local college.&amp;nbsp; &lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;Although it was actually Watfiv, a student version of Fortran.&amp;nbsp; How did Watfiv get it&amp;#39;s name?&amp;nbsp; Well, the first student version of the Fortran compiler was created by Waterloo University and thus called Watfor.&amp;nbsp; Clearly the next version must be five so Watfiv it was named.&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;I must admit that just a week or four ago I used i as an index variable myself in a loop of some sort.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1657952" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/access/archive/tags/Tips/default.aspx">Tips</category><category domain="http://msmvps.com/blogs/access/archive/tags/VBA/default.aspx">VBA</category></item><item><title>A very interesting solution for Code 39 barcode</title><link>http://msmvps.com/blogs/access/archive/2008/12/26/a-very-interesting-solution-for-code-39-barcode.aspx</link><pubDate>Sat, 27 Dec 2008 05:53:07 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1657812</guid><dc:creator>Tony</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/access/rsscomments.aspx?PostID=1657812</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/access/commentapi.aspx?PostID=1657812</wfw:comment><comments>http://msmvps.com/blogs/access/archive/2008/12/26/a-very-interesting-solution-for-code-39-barcode.aspx#comments</comments><description>&lt;p&gt;Jim at a client found the following a very interesting solution for 3 of 9 bar code which was done as VBA code by James Mercantile. &lt;a href="http://mc-computing.com/Databases/MSAccess/Code/mod_BarCode_Generator_Code39.txt"&gt;Barcode Generator for Code 3 of 9, Code 39, and Mil-spec Logmars.&lt;/a&gt;&amp;nbsp;&amp;nbsp; The VBA code reads the size of the control and creates white and dark lines accordingly.&amp;nbsp;&amp;nbsp; The advantage is that unlike with some free fonts you can have the control as tall as desired so it&amp;#39;s much easier for the folks on the floor to hit the bar code especially from a distance.&amp;nbsp;&amp;nbsp; &lt;/p&gt; &lt;p&gt;While searching for the original source of the above VBA Code and it&amp;#39;s author I also came across &lt;a href="http://everything2.com/e2node/three%2520of%2520nine"&gt;Code 39 barcode encoding&lt;/a&gt; and &lt;a href="http://www.idautomation.com/code39faq.html"&gt;Code 39 Barcode FAQ and Tutorial&lt;/a&gt;.&amp;nbsp; More techie stuff for the technical explanation of how the 3 of 9 bar code works.&lt;/p&gt; &lt;p&gt;The &lt;a target="_blank"&gt;Using bar codes within a Microsoft Access application&lt;/a&gt; has been updated.&lt;/p&gt; &lt;p&gt;To James Mercantile thanks.&amp;nbsp; A very interesting solution.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1657812" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/access/archive/tags/Access/default.aspx">Access</category><category domain="http://msmvps.com/blogs/access/archive/tags/Tips/default.aspx">Tips</category><category domain="http://msmvps.com/blogs/access/archive/tags/VBA/default.aspx">VBA</category></item><item><title>The case of the form which took 30 seconds to open</title><link>http://msmvps.com/blogs/access/archive/2008/12/23/the-case-of-the-form-which-took-30-seconds-to-open.aspx</link><pubDate>Tue, 23 Dec 2008 22:36:16 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1657604</guid><dc:creator>Tony</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/access/rsscomments.aspx?PostID=1657604</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/access/commentapi.aspx?PostID=1657604</wfw:comment><comments>http://msmvps.com/blogs/access/archive/2008/12/23/the-case-of-the-form-which-took-30-seconds-to-open.aspx#comments</comments><description>&lt;p&gt;The client had two transaction file forms which took 30 seconds to open while a similar form took 3 or 4 seconds to open. I went through many of the items on my &lt;a href="http://granite.ab.ca/access/performancefaq.htm" target="_blank"&gt;Microsoft Access Performance FAQ&lt;/a&gt;&amp;nbsp; page and none made a significant difference. &lt;blockquote&gt; &lt;p&gt;The list of items Included &amp;quot;Subdatasheet Name property set to [Auto] should be [None]. &amp;quot; so I&amp;#39;m forced to conclude that while that tip may make a difference when using datasheet view it isn&amp;#39;t helpful when using forms.&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;There are 740K records in the largest two tables of the app. The MDB is about 250 Mb in size. &lt;p&gt;To simulate their environment I placed the BE on a spare older laptop . I also opened the BE in another instance of Access as performance significantly decreases with the second user into the database. I was then able to get performance times to approximate the client reports. &lt;blockquote&gt; &lt;p&gt;Note that just opening the form wirelessly caused performance to decrease by a factor of four or five. Although Access frequently crashed. Note that I&amp;#39;m running the 54 Mbps wireless networking version so this number quite surprised me. I&amp;#39;m thinking that the encryption might be the bottle neck there.&amp;nbsp; And is the bottleneck at the consumer grade WAP that I own or in the wireless networking device or the CPU doing the decryption?&amp;nbsp;&amp;nbsp; &lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;In this case the problem was in the form load event somewhere as I determined by putting debug.print at beginning and end of form load. For example: &lt;p&gt;Debug.Print &amp;quot;BuildAndApplyFilter - &amp;quot; &amp;amp; strFilter &amp;amp; vbTab &amp;amp; Now &lt;p&gt;Note that you must put the debug.print at the very end of the routines you want to test as well. Otherwise you don&amp;#39;t realize that the last line in the routine is the one that&amp;#39;s causing the slowdown. &amp;lt;sigh&amp;gt;&amp;nbsp; Ironically that line was&amp;nbsp; commented a year or three ago &amp;quot;&amp;#39;Note: This sub also calls BuildAndApplyFilter - a small performance hit.&amp;quot; Yeah, well, it&amp;#39;s a small performance hit when the BE is local. A significant performance hit when on the network. &lt;p&gt;I then sprinkled debug.prints in the VBA code as appropriate to narrow things down. &lt;p&gt;Turns out the problem was due to a form filter based on an Inactive boolean field on a master Job table which had 792 records. Indexing that boolean field fixed this particular performance problem.&amp;nbsp;&amp;nbsp; &lt;p&gt;Now given that this forms recordset automatically opens only the last two weeks worth of transactions that field really isn&amp;#39;t necessary as a filter.&amp;nbsp; The users may not be that likely to close a job within two weeks of the last time transaction against it.&amp;nbsp; And even if it is closed well, so what.&amp;nbsp; Maybe it&amp;#39;s a bit misleading to have some transactions entered yesterday, the job is closed today and now those transactions don&amp;#39;t appear on the form.&amp;nbsp; You could argue this case both ways.&amp;nbsp; &amp;lt;smile&amp;gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1657604" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/access/archive/tags/Access/default.aspx">Access</category><category domain="http://msmvps.com/blogs/access/archive/tags/Tips/default.aspx">Tips</category><category domain="http://msmvps.com/blogs/access/archive/tags/Software+Development/default.aspx">Software Development</category><category domain="http://msmvps.com/blogs/access/archive/tags/Jet/default.aspx">Jet</category></item><item><title>Standard NotInList VBA code</title><link>http://msmvps.com/blogs/access/archive/2008/11/30/standard-notinlist-vba-code.aspx</link><pubDate>Sun, 30 Nov 2008 23:18:19 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1655442</guid><dc:creator>Tony</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/access/rsscomments.aspx?PostID=1655442</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/access/commentapi.aspx?PostID=1655442</wfw:comment><comments>http://msmvps.com/blogs/access/archive/2008/11/30/standard-notinlist-vba-code.aspx#comments</comments><description>&lt;p&gt;I finally got around to creating a &lt;a href="http://granite.ab.ca/access/notinlist.htm" target="_blank"&gt;Using NotInList in a combo box&lt;/a&gt; page at my website.&amp;nbsp;&amp;nbsp; I keep forgetting to make up same sample code and re use it as I don&amp;#39;t care for the MS sample code in the Access help.&amp;nbsp; A bit too verbose and it doesn&amp;#39;t show how to deal with adding records to tables and then opening up a form.&amp;nbsp; So here&amp;#39;s the code I just setup as a sample.&amp;nbsp; Critique away.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1655442" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/access/archive/tags/Access/default.aspx">Access</category><category domain="http://msmvps.com/blogs/access/archive/tags/Tips/default.aspx">Tips</category><category domain="http://msmvps.com/blogs/access/archive/tags/VBA/default.aspx">VBA</category></item><item><title>Using pictures on a form and report</title><link>http://msmvps.com/blogs/access/archive/2008/11/30/using-pictures-on-a-form-and-report.aspx</link><pubDate>Sun, 30 Nov 2008 22:23:36 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1655440</guid><dc:creator>Tony</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/access/rsscomments.aspx?PostID=1655440</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/access/commentapi.aspx?PostID=1655440</wfw:comment><comments>http://msmvps.com/blogs/access/archive/2008/11/30/using-pictures-on-a-form-and-report.aspx#comments</comments><description>&lt;p&gt;The following question was asked in the comp.databases.ms-access newsgroup.&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;I&amp;#39;d like to add a picture in a report&amp;#39;s detail section where the path to the picture is from a table.&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;Incredibly easy.&amp;nbsp; The same code works on a form as well.&amp;nbsp; Using the Toolbox drop an image control on the reports detail section.&amp;nbsp;&amp;nbsp; Note that you will have to follow the dialog and actually insert an image.&amp;nbsp; But then go to the Picture property on the Format tab in the property sheet and delete the actual file.&amp;nbsp; You will probably want to set the Size Mode from clip to zoom. And rename the control to something meaningful. &lt;p&gt;Then in the report detail section in the On Print event you want to add the following lines of code  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; If &amp;lt;logic if file available to view&amp;gt; Then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Me.PhotoImage.Picture = PhotoFilePath&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Me.PhotoImage.Picture = &amp;quot;&amp;quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; End If  &lt;p&gt;PhotoFilePath being whatever logic you want to use to figure out the file that you want printed.  &lt;p&gt;You don&amp;#39;t want to do this logic in the Format event as Microsoft has told us, via Stephen Lebans, that using that event can lead to memory leak problems.&amp;nbsp; Or you can use BMP images.&amp;nbsp;&amp;nbsp; Which is rather impractical. &lt;blockquote&gt; &lt;p&gt;The reason for extensive bloating in Access when JPG or other graphic files are permanently embedded in forms or reports is that Access converts those file formats to BMP format.&amp;nbsp;&amp;nbsp; This made sense back in Access 2.0 days is viewing a JPG file was very slow as it requires lots of CPU cycles.&amp;nbsp; 80386 computers running Windows 3.1 were rather slow at that.&amp;nbsp; BMP format meant that you basically read the large file directly into the graphics card memory.&amp;nbsp;&amp;nbsp; In Access 2007 the Access product group have updated that logic so the BMP file format isn&amp;#39;t created any more.&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;Shameless plug:&amp;nbsp; I have a number of reports in the &lt;a href="http://granitefleet.com/" target="_blank"&gt;Granite Fleet Manager&lt;/a&gt; which print a &amp;quot;primary&amp;quot; and a number of &amp;quot;secondary&amp;quot; photo&amp;#39;s for each unit.&amp;nbsp;&amp;nbsp; See &lt;a href="http://granitefleet.com/ScreenShots/screen_MainMenu.htm" target="_blank"&gt;Granite Fleet manager Main Menu&lt;/a&gt; a screen shot and &lt;a title="Service Order Details (with Photo)" href="http://granitefleet.com/_files/Service%20Order%20Details%20(with%20Photo).pdf"&gt;Service Order Details (with Photo)&lt;/a&gt; for a sample report.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1655440" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/access/archive/tags/Access/default.aspx">Access</category><category domain="http://msmvps.com/blogs/access/archive/tags/Tips/default.aspx">Tips</category><category domain="http://msmvps.com/blogs/access/archive/tags/VBA/default.aspx">VBA</category><category domain="http://msmvps.com/blogs/access/archive/tags/Granite+Fleet+Manager/default.aspx">Granite Fleet Manager</category></item></channel></rss>