<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;DUEERHczcCp7ImA9WxBUF0Q.&quot;"><id>tag:blogger.com,1999:blog-6658257106003248170</id><updated>2010-03-05T07:00:05.988-07:00</updated><title>Views from an Advantage Evangelist</title><subtitle type="html">My perspective on Advantage Database Server and other programming topics.</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://blog.advantageevangelist.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://blog.advantageevangelist.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/6658257106003248170/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Chris</name><uri>http://www.blogger.com/profile/09097498077009855123</uri><email>noreply@blogger.com</email></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>246</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/ViewsFromAnAdvantageEvangelist" /><feedburner:info uri="viewsfromanadvantageevangelist" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;DUEERHcyeip7ImA9WxBUF0Q.&quot;"><id>tag:blogger.com,1999:blog-6658257106003248170.post-8856919007682195637</id><published>2010-03-05T07:00:00.000-07:00</published><updated>2010-03-05T07:00:05.992-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-03-05T07:00:05.992-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Screencasts" /><category scheme="http://www.blogger.com/atom/ns#" term="Advantage 10" /><title>Version 10 Unicode Demo</title><content type="html">&lt;p&gt;&lt;a title="Advantage 10 - Unicode Demonstration" href="http://devzone.advantagedatabase.com/dz/Screencasts/V10_Demos/Unicode/UnicodeDemo.html" target="_blank"&gt;&lt;img title="UnicodeDemo" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; margin-left: 0px; margin-right: 0px; border-right-width: 0px" height="182" alt="UnicodeDemo" src="http://lh3.ggpht.com/_pJ4HkzTKiOA/S5Ca-HLO2HI/AAAAAAAAD4o/EGHnFKIBW7g/UnicodeDemo%5B1%5D.jpg?imgmax=800" width="242" align="right" border="0" /&gt;&lt;/a&gt; With the Advantage Version 10 Beta fast approaching I will be publishing a series of short demonstrations of the new features and functionality available in version 10. The first demonstration is on Unicode. In this demonstration you will see how to manipulate Unicode data within an Advantage table. You can also see how to set collation sequences to ensure that the data is sorted correctly.&lt;/p&gt;  &lt;p&gt;This demo includes a brief introduction to Unicode and information about how it is implemented in Advantage. The bulk of the demonstration is actual manipulation of Unicode data from within ARC and in a Delphi 2010 application. Click on the image to view the demo.&lt;/p&gt;  &lt;p&gt;You can also download the demo in WMV format using this &lt;a title="Advantage 10 - Unicode Demonstration ( WMV Format )" href="http://devzone.advantagedatabase.com/dz/Screencasts/V10_Demos/Unicode/UnicodeDemo.wmv" target="_blank"&gt;link&lt;/a&gt;.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6658257106003248170-8856919007682195637?l=blog.advantageevangelist.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?a=mbHgyo8e7Uc:9bLoEEzJ6rc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?a=mbHgyo8e7Uc:9bLoEEzJ6rc:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?i=mbHgyo8e7Uc:9bLoEEzJ6rc:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?a=mbHgyo8e7Uc:9bLoEEzJ6rc:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?i=mbHgyo8e7Uc:9bLoEEzJ6rc:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?a=mbHgyo8e7Uc:9bLoEEzJ6rc:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?i=mbHgyo8e7Uc:9bLoEEzJ6rc:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ViewsFromAnAdvantageEvangelist/~4/mbHgyo8e7Uc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.advantageevangelist.com/feeds/8856919007682195637/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6658257106003248170&amp;postID=8856919007682195637&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6658257106003248170/posts/default/8856919007682195637?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6658257106003248170/posts/default/8856919007682195637?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ViewsFromAnAdvantageEvangelist/~3/mbHgyo8e7Uc/version-10-unicode-demo.html" title="Version 10 Unicode Demo" /><author><name>Chris</name><uri>http://www.blogger.com/profile/09097498077009855123</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="03929810096958434633" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://blog.advantageevangelist.com/2010/03/version-10-unicode-demo.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Dk8FQX86eSp7ImA9WxBUFk8.&quot;"><id>tag:blogger.com,1999:blog-6658257106003248170.post-97706885752735838</id><published>2010-03-03T07:00:00.000-07:00</published><updated>2010-03-03T07:00:10.111-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-03-03T07:00:10.111-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Events" /><title>Upcoming Events</title><content type="html">&lt;p&gt;The Advantage Technical Summit is now open for &lt;a href="http://marketing.ianywhere.com/forms/ADSTechnicalSummit" target="_blank"&gt;registration&lt;/a&gt;. This is a great opportunity to learn more about Advantage Database Server and get all the latest information about Version 10. The training will be conducted in Boise Idaho on April 28th and 29th. Sessions run from 8am – 5pm both days. We provide lunch and dinner for all attendees. You can get more information about the summit &lt;a title="Advantage Technical Summit" href="http://www.sybase.com/detail?id=1067146" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Sybase DevDays are a series of one day events held around the country. Each event will include a keynote, lunch and four Advantage specific sessions. Mike Hagman and I will be giving you an in-depth look at Version 10. The sessions include: an overview of version 10, demonstrations of the new features, a performance showcase and an interactive question and answer session. We will be visiting the following cities.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://sybasedeveloperdays2010.com/forms/DeveloperDays2010CityInfoEnglish#Boston" target="_blank"&gt;Boston, MA&lt;/a&gt; – May 3rd &lt;/li&gt;    &lt;li&gt;&lt;a href="http://sybasedeveloperdays2010.com/forms/DeveloperDays2010CityInfoEnglish#New_York" target="_blank"&gt;New York, NY&lt;/a&gt; – May 4th &lt;/li&gt;    &lt;li&gt;&lt;a href="http://sybasedeveloperdays2010.com/forms/DeveloperDays2010CityInfoEnglish#Houston" target="_blank"&gt;Houston, TX&lt;/a&gt; – May 6th &lt;/li&gt;    &lt;li&gt;&lt;a href="http://sybasedeveloperdays2010.com/forms/DeveloperDays2010CityInfoEnglish#Los_Angeles" target="_blank"&gt;Los Angeles, CA&lt;/a&gt; – May 11th &lt;/li&gt;    &lt;li&gt;&lt;a href="http://sybasedeveloperdays2010.com/forms/DeveloperDays2010CityInfoEnglish#San_Francisco" target="_blank"&gt;San Francisco, CA&lt;/a&gt; – May 12th &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;General information and registration is available &lt;a title="Sybase Developer Days 2010" href="http://sybasedeveloperdays2010.com/forms/DeveloperDays2010English" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6658257106003248170-97706885752735838?l=blog.advantageevangelist.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?a=t8GPrrX-Kek:35bknvarCNE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?a=t8GPrrX-Kek:35bknvarCNE:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?i=t8GPrrX-Kek:35bknvarCNE:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?a=t8GPrrX-Kek:35bknvarCNE:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?i=t8GPrrX-Kek:35bknvarCNE:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?a=t8GPrrX-Kek:35bknvarCNE:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?i=t8GPrrX-Kek:35bknvarCNE:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ViewsFromAnAdvantageEvangelist/~4/t8GPrrX-Kek" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.advantageevangelist.com/feeds/97706885752735838/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6658257106003248170&amp;postID=97706885752735838&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6658257106003248170/posts/default/97706885752735838?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6658257106003248170/posts/default/97706885752735838?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ViewsFromAnAdvantageEvangelist/~3/t8GPrrX-Kek/upcoming-events.html" title="Upcoming Events" /><author><name>Chris</name><uri>http://www.blogger.com/profile/09097498077009855123</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="03929810096958434633" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://blog.advantageevangelist.com/2010/03/upcoming-events.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEcESXY7fip7ImA9WxBUFEg.&quot;"><id>tag:blogger.com,1999:blog-6658257106003248170.post-5033984959906460042</id><published>2010-03-01T07:00:00.000-07:00</published><updated>2010-03-01T07:00:08.806-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-03-01T07:00:08.806-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="FAQ" /><title>FAQs – February 2010</title><content type="html">&lt;h3&gt;User Licenses and Replication&lt;/h3&gt;  &lt;p&gt;Replication consumes a user license on each of the subscriber machines. If the subscriber has the maximum number of users connected then the replication will receive a 7003 error. Changes will continue to be added to the replication queue but they will not be sent to the subscriber(s) until the error is resolved.&lt;/p&gt;  &lt;h3&gt;Advantage VCL Components not on Pallet&lt;/h3&gt;  &lt;p&gt;After installing the Advantage Components they do not show up in Delphi 20xx. When using Delphi 2005 and newer you must install the &lt;a href="http://devzone.advantagedatabase.com/dz/content.aspx?key=20&amp;amp;Release=13&amp;amp;Product=10&amp;amp;Platform=6" target="_blank"&gt;Advantage Delphi Components&lt;/a&gt; and not the &lt;a href="http://devzone.advantagedatabase.com/dz/content.aspx?key=20&amp;amp;Release=13&amp;amp;Product=11&amp;amp;Platform=6" target="_blank"&gt;Advantage TDataSet Descendant&lt;/a&gt;. The TDataSet Descendant works with Delphi version 7 and older.&lt;/p&gt;  &lt;p&gt;Version 9.10.0.15 of the Advantage Delphi Components supports Delphi 2010.&lt;/p&gt;  &lt;h3&gt;Where Do I Put 32-bit Advantage DLLs on a 64-bit System&lt;/h3&gt;  &lt;p&gt;Advantage clients load the Advantage DLLs from the system directory if they are not in the applications local path. This is true of the various development environments as well. The system path for Windows is C:\Windows\System32. This path is the same for both 32-bit and 64-bit versions of Windows.&lt;/p&gt;  &lt;p&gt;However, on a 64-bit version of Windows the System32 directory actually contains 64-bit DLLs. 32-bit DLLs need to be placed in the C:\Windows\SysWOW64 directory. This is the default system path for 32-bit applications which are running within the 32-bit emulator. &lt;/p&gt;  &lt;h3&gt;DLL Caching&lt;/h3&gt;  &lt;p&gt;By default the Advantage Database Server caches DLLs that are used for Advantage External Procedures (AEPs). This allows for dynamic updating of AEPs and backing up of the AEP DLLs. The cache setting is set in the data dictionary using the ADS_DD_DISABLE_DLL_CACHING property. This property is persisted even after you disconnect, for more information see the &lt;a title="Advantage Concepts - DLL Caching" href="http://devzone.advantagedatabase.com/dz/webhelp/Advantage9.1/advantage_concepts/advantage_functionality/dll_caching.htm" target="_blank"&gt;help file&lt;/a&gt;. You can change this property using the ACE API or using the sp_ModifyDatabase system procedure. Below is an example of using the system procedure to ensure DLL Caching is enabled.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;EXECUTE PROCEDURE sp_ModifyDatabase( 'DISABLE_DLL_CACHING', 'false' )&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;When debugging AEPs you may want to turn off DLL caching to ensure that the latest version of you AEP is being used. However, if you ship your database with DLL caching disabled you will not be able to dynamically update AEP files. You may also get errors when backing up the database since the AEP DLL may be loaded by the server. With DLL caching enabled a copy of the AEP is loaded allowing you to copy or modify the original AEP file.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6658257106003248170-5033984959906460042?l=blog.advantageevangelist.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?a=XeZJbvPfaSg:roQd2zMtAuE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?a=XeZJbvPfaSg:roQd2zMtAuE:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?i=XeZJbvPfaSg:roQd2zMtAuE:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?a=XeZJbvPfaSg:roQd2zMtAuE:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?i=XeZJbvPfaSg:roQd2zMtAuE:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?a=XeZJbvPfaSg:roQd2zMtAuE:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?i=XeZJbvPfaSg:roQd2zMtAuE:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ViewsFromAnAdvantageEvangelist/~4/XeZJbvPfaSg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.advantageevangelist.com/feeds/5033984959906460042/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6658257106003248170&amp;postID=5033984959906460042&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6658257106003248170/posts/default/5033984959906460042?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6658257106003248170/posts/default/5033984959906460042?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ViewsFromAnAdvantageEvangelist/~3/XeZJbvPfaSg/faqs-february-2010.html" title="FAQs – February 2010" /><author><name>Chris</name><uri>http://www.blogger.com/profile/09097498077009855123</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="03929810096958434633" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://blog.advantageevangelist.com/2010/03/faqs-february-2010.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DU8FRHkzeip7ImA9WxBUEk8.&quot;"><id>tag:blogger.com,1999:blog-6658257106003248170.post-7956447832707631407</id><published>2010-02-26T07:00:00.000-07:00</published><updated>2010-02-26T16:43:35.782-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-02-26T16:43:35.782-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Events" /><title>Progression Webcast Q&amp;A</title><content type="html">&lt;p&gt;Yesterday we did our first of three webcasts on the upcoming release of Advantage version 10. I would like to thank everyone that attended our live webcast. If you missed the webcast yesterday you can see a replay &lt;a title="Advantage Database Server 10 | Pure &amp;amp; Simple Webcast Series" href="http://www.sybase.com/detail?id=1067357" target="_blank"&gt;here&lt;/a&gt;. You can register for the webcasts using this &lt;a title="Advantage Database Server 10 | Pure &amp;amp; Simple" href="http://marketing.ianywhere.com/forms/Advantage10PS" target="_blank"&gt;form&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;We had a hand full of questions during the webcast. I have listed these questions and answers below.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;When will the Version 10 Beta be available?&lt;/strong&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;blockquote&gt;   &lt;p&gt;The Advantage 10 beta is scheduled to be released in late March or early April.&lt;/p&gt; &lt;/blockquote&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;When will Version 10 be available?&lt;/strong&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;blockquote&gt;   &lt;p&gt;We normally do a six to eight week beta test cycle. Our current plan is to release Advantage 10 in the second quarter of 2010. We expect it to be available by the end of June.&lt;/p&gt; &lt;/blockquote&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;Will Advantage support Hibernate?&lt;/strong&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;blockquote&gt;   &lt;p&gt;We are investigating several ORM solutions for a future version of Advantage. Hibernate is one option we have looked at. If you need this functionality you should vote for Hibernate support on our &lt;a title="Advantage Feedback - Hibernate-Support(java)" href="http://feedback.advantagedatabase.com/forums/2671-general/suggestions/93429-hibernate-support-java-?ref=title" target="_blank"&gt;feedback site&lt;/a&gt;&amp;#160; &lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;J.D. Mullin, the Advantage R&amp;amp;D manager, has some additional comments about his blog about &lt;a title="J.D. Was Here - Object-Relational Mapping (ORM) Technology" href="http://jdmullin.blogspot.com/2010/01/object-relational-mapping-orm.html" target="_blank"&gt;ORM&lt;/a&gt;.&lt;/p&gt; &lt;/blockquote&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;Why does the .dat file need to be stored on the client (as opposed to the server only)?&lt;/strong&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;blockquote&gt;   &lt;p&gt;Both the server and client need to have access to the Unicode functions and collation sequences when manipulating Unicode data. These functions and collations were intentionally left as separate files so they don’t have to be distributed by developers using only ASCII character sets. The Unicode collations are stored in the icudt401.dat file which must be installed on the server and all clients.&lt;/p&gt; &lt;/blockquote&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;We still have users with a mix of DOS based programs and Windows based programs sharing a common ADS database. Upgrading users from 8 to 9 caused significant differences. Will there be more with v10. In particular we noted that reindexing ADS files with v9 Windows generates different indexes when called from a DOS program+adsdosip.exe as the transport layer.&lt;/strong&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;blockquote&gt;   &lt;p&gt;We do not expect there to be any significant differences in behavior between Advantage 9 and 10. Your applications should work the same with either version. By participating in the beta program you can identify any issues and provide feedback to the R&amp;amp;D team. This will allow us to provide the best possible migration path when the server is released. &lt;/p&gt;    &lt;p&gt;You should always review the &amp;quot;Effects of Upgrading&amp;quot; section of the help file for useful information when changing the version of Advantage that you are using.&lt;/p&gt; &lt;/blockquote&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;Will Advantage be using UTF-8 or UTF-16?&lt;/strong&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;blockquote&gt;   &lt;p&gt;Advantage will store Unicode characters in the tables with UTF-16 encoding. However, you can apply any encoding you need once the data has been retrieved from the server.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;The next webcast in the series will be on March 25th at 10AM EST and 2PM EST, I hope to see you there.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6658257106003248170-7956447832707631407?l=blog.advantageevangelist.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?a=_Jd7aXs85Ug:dGXuWYc8WnQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?a=_Jd7aXs85Ug:dGXuWYc8WnQ:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?i=_Jd7aXs85Ug:dGXuWYc8WnQ:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?a=_Jd7aXs85Ug:dGXuWYc8WnQ:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?i=_Jd7aXs85Ug:dGXuWYc8WnQ:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?a=_Jd7aXs85Ug:dGXuWYc8WnQ:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?i=_Jd7aXs85Ug:dGXuWYc8WnQ:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ViewsFromAnAdvantageEvangelist/~4/_Jd7aXs85Ug" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.advantageevangelist.com/feeds/7956447832707631407/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6658257106003248170&amp;postID=7956447832707631407&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6658257106003248170/posts/default/7956447832707631407?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6658257106003248170/posts/default/7956447832707631407?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ViewsFromAnAdvantageEvangelist/~3/_Jd7aXs85Ug/progression-webcast-q.html" title="Progression Webcast Q&amp;amp;A" /><author><name>Chris</name><uri>http://www.blogger.com/profile/09097498077009855123</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="03929810096958434633" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://blog.advantageevangelist.com/2010/02/progression-webcast-q.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkEFSX47fSp7ImA9WxBUEEg.&quot;"><id>tag:blogger.com,1999:blog-6658257106003248170.post-6460985953285813533</id><published>2010-02-24T07:00:00.000-07:00</published><updated>2010-02-24T16:36:58.005-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-02-24T16:36:58.005-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Events" /><category scheme="http://www.blogger.com/atom/ns#" term="Advantage 10" /><title>Pure and Simple Webcast Series</title><content type="html">&lt;p&gt;Tomorrow is the first in a three part series on Advantage version 10. You will have two opportunities to view the presentation and ask questions live. The first webcast is at 10AM EST and the second will be at 2PM EST. The description for tomorrow's webcast is below:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;strong&gt;Advantage Database Server 10 | Pure and Simple&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;Over the past 15 years, the Advantage Database Server has become the heart of many data management applications with millions of deployments worldwide. Spring of 2010 will be significant for Advantage developers and users alike. Advantage Database Server 10 will be unveiled featuring key performance and usability enhancement and progression enablement like never before. Join us for this 3-part webcast series taking a close look at how Advantage Database Server 10 can impact your business for the greater good, pure and simple.&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;Webcast 1: Progression&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;Advantage grows as you grow. V10 supports current technologies allowing you to stay ahead in the market including support for Windows 7, Visual Studio 2010, Delphi 2010, entity .NET framework, Unicode, and now 64-bit clients to round out our already popular 64-bit servers.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;You can register for the webcast using this &lt;a title="Advantage 10 Pure and Simple" href="http://marketing.ianywhere.com/forms/Advantage10PS" target="_blank"&gt;link&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;If you cannot attend tomorrow you can view a recording of the webcast next week. I'll post a link as soon as it is available.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6658257106003248170-6460985953285813533?l=blog.advantageevangelist.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?a=-shT72VZCdI:LxKQhZ5AVj0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?a=-shT72VZCdI:LxKQhZ5AVj0:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?i=-shT72VZCdI:LxKQhZ5AVj0:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?a=-shT72VZCdI:LxKQhZ5AVj0:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?i=-shT72VZCdI:LxKQhZ5AVj0:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?a=-shT72VZCdI:LxKQhZ5AVj0:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?i=-shT72VZCdI:LxKQhZ5AVj0:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ViewsFromAnAdvantageEvangelist/~4/-shT72VZCdI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.advantageevangelist.com/feeds/6460985953285813533/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6658257106003248170&amp;postID=6460985953285813533&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6658257106003248170/posts/default/6460985953285813533?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6658257106003248170/posts/default/6460985953285813533?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ViewsFromAnAdvantageEvangelist/~3/-shT72VZCdI/pure-and-simple-webcast-series.html" title="Pure and Simple Webcast Series" /><author><name>Chris</name><uri>http://www.blogger.com/profile/09097498077009855123</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="03929810096958434633" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://blog.advantageevangelist.com/2010/02/pure-and-simple-webcast-series.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ak8MSXc4fSp7ImA9WxBUEk8.&quot;"><id>tag:blogger.com,1999:blog-6658257106003248170.post-5844473023722803366</id><published>2010-02-17T07:00:00.000-07:00</published><updated>2010-02-26T17:01:28.935-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-02-26T17:01:28.935-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Programming" /><title>Copying Tables (Part Deux)</title><content type="html">&lt;p&gt;In &lt;a title="Advantage Evangelist - Copying Tables" href="http://blog.advantageevangelist.com/2010/02/copying-tables.html" target="_blank"&gt;Copying Tables&lt;/a&gt; I discussed the different ways you can copy data from one table to another table using both SQL and the Advantage API. In this post I am going to highlight some differences between the two approaches.&lt;/p&gt;  &lt;p&gt;First I want to mention one API I did not discuss in my first post was &lt;a title="Advantage Client Engine - AdsCopyTableStructure" href="http://devzone.advantagedatabase.com/dz/webhelp/Advantage9.1/mergedProjects/ace/api1/adscopytablestructure.htm" target="_blank"&gt;AdsCopyTableStructure&lt;/a&gt;. This function creates a new structure with the same structure as the given table. No data is copied from the original table with this function. You can accomplish the same thing with an SELECT INTO statement by setting a filter condition that returns no records.&lt;/p&gt;  &lt;p&gt;Now back to the main topic of this post, the different functionality of the API and SQL. SQL offers some more flexibility because it allows for creating a new table with a different structure than the original table. This is done by specifying columns in the Select List of a SELECT . . . INTO statement. The new table will be created with the specified columns in the specified order. This allows you to reorganize your columns or simply copy some of the columns from a table.&lt;/p&gt;  &lt;p&gt;You can also combine the results from several tables into a single table, think views. You can use all of your normal SQL syntax to create joins and have the results dumped into a physical table. This can be done &amp;quot;on the fly&amp;quot;. You can get similar functionality with the API by using a view handle instead of a table handle. Additionally SQL allows you to create temporary tables whereas the API only creates physical tables. &lt;/p&gt;  &lt;div style="border-right: gray 1px solid; padding-right: 4px; border-top: gray 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: gray 1px solid; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: gray 1px solid; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; background-color: #f4f4f4"&gt;   &lt;div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;     &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: green"&gt;// Create Table with records in a specific order&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #0000ff"&gt;SELECT&lt;/span&gt; * &lt;span style="color: #0000ff"&gt;INTO&lt;/span&gt; EmployeeByHireDate &lt;span style="color: #0000ff"&gt;FROM&lt;/span&gt; Employee&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #0000ff"&gt;ORDER&lt;/span&gt; &lt;span style="color: #0000ff"&gt;BY&lt;/span&gt; DateOfHire&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;  &lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: green"&gt;// Create a table using a joined resultset&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #0000ff"&gt;SELECT&lt;/span&gt; c.CustID, c.CustNum, c.LastName, c.FirstName, c.CustomerSince, &lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;       cm.Name &lt;span style="color: #0000ff"&gt;as&lt;/span&gt; CompanyName, cm.SalesRep &lt;span style="color: #0000ff"&gt;INTO&lt;/span&gt; CustomerList&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #0000ff"&gt;FROM&lt;/span&gt; Customer c &lt;span style="color: #0000ff"&gt;INNER&lt;/span&gt; &lt;span style="color: #0000ff"&gt;JOIN&lt;/span&gt; Company cm &lt;span style="color: #0000ff"&gt;ON&lt;/span&gt; c.CompanyID = cm.CompanyID&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;  &lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: green"&gt;// Create a temporary table based  on a physical table&lt;/span&gt; &lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #0000ff"&gt;SELECT&lt;/span&gt; * &lt;span style="color: #0000ff"&gt;INTO&lt;/span&gt; #Dept102 &lt;span style="color: #0000ff"&gt;FROM&lt;/span&gt; Employee&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #0000ff"&gt;WHERE&lt;/span&gt; Department = 102&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;The ACE API includes one function that cannot be done with an SQL command, converting a table. &lt;a title="Advantage Client Engine - AdsConvertTable" href="http://devzone.advantagedatabase.com/dz/webhelp/Advantage9.1/mergedProjects/ace/api2/adsconverttable.htm" target="_blank"&gt;AdsConvertTable&lt;/a&gt; converts the specified table between the supported Advantage formats: DBF/NTX, DBF/CDX, DBF/VFP and ADT. Like the other table copying APIs AdsConvertTable can respect or ignore filters. Allowing you to create a new table in the specified format with a portion of the records from the source table. &lt;/p&gt;

&lt;p&gt;I use this function a lot when re-creating issues sent in by customers. I usually have data that I can use to test but often it is in ADT tables. By using AdsConvertTable I can quickly convert the data to DBF or VFP tables to help resolve the issue. As with the other API calls this function is fairly straightforward.&lt;/p&gt;

&lt;div style="border-right: gray 1px solid; padding-right: 4px; border-top: gray 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: gray 1px solid; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: gray 1px solid; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; background-color: #f4f4f4"&gt;
  &lt;div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;
    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #0000ff"&gt;uint&lt;/span&gt; lRetVal = ACE.AE_SUCCESS;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #0000ff"&gt;IntPtr&lt;/span&gt; hConnect;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #0000ff"&gt;IntPtr&lt;/span&gt; hTable;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&amp;#160;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #008000"&gt;// connect to a directory of free tables&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;lRetVal = ACE.AdsConnect60(&lt;span style="color: #006080"&gt;&amp;quot;C:\\Data&amp;quot;&lt;/span&gt;, ACE.ADS_REMOTE_SERVER, &lt;span style="color: #006080"&gt;&amp;quot;&amp;quot;&lt;/span&gt;, &lt;span style="color: #006080"&gt;&amp;quot;&amp;quot;&lt;/span&gt;,&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;                            ACE.ADS_DEFAULT, hConnect);&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (lRetVal != ACE.AE_SUCCESS)&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;{    &lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;    &lt;span style="color: #008000"&gt;// Handle error here&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;}&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&amp;#160;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #008000"&gt;// Open the table to be converted&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;lRetVal = ACE.AdsOpenTable(cnADS.ConnectionHandle, &lt;span style="color: #006080"&gt;&amp;quot;C:\\Data\\MyTable.ADT&amp;quot;&lt;/span&gt;,&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;                           sCurrentTable, ACE.ADS_ADT, ACE.ADS_ANSI,&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;                           ACE.ADS_PROPRIETARY_LOCKING, ACE.ADS_IGNORERIGHTS,&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;                           ACE.ADS_DEFAULT, &lt;span style="color: #0000ff"&gt;out&lt;/span&gt; hTable);&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (lRetVal != ACE.AE_SUCCESS)&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;{&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;    &lt;span style="color: #008000"&gt;// Handle error&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;}&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&amp;#160;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #008000"&gt;// Convert the table to a VFP table&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;lRetVal = ACE.AdsConvertTable(hTable, ACE.ADS_IGNOREFILTERS, &lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;                              &lt;span style="color: #006080"&gt;&amp;quot;C:\\Data\\MyTable.DBF&amp;quot;&lt;/span&gt;, ACE.ADS_VFP);&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (lRetVal != ACE.AE_SUCCESS)&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;{&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;    &lt;span style="color: #008000"&gt;// Handle error&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;}&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Although the sample code above is in C# the ACE API can be accessed from virtually every Advantage client. In fact, you can call AdsCopyTable, AdsCopyTableStructure, AdsCopyTableContents and AdsConvertTable directly from a TAdsTable component in Delphi. There is also a &lt;a title="Advantage TDataSet Descendant - TAdsBatchMove" href="http://devzone.advantagedatabase.com/dz/webhelp/Advantage9.1/mergedProjects/ade/sec7/tadsbatchmove.htm" target="_blank"&gt;TAdsBatchMove&lt;/a&gt; component which can be used when moving large amounts of records between tables.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6658257106003248170-5844473023722803366?l=blog.advantageevangelist.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?a=5qdBKzvIVb8:BDZUG8xZQFA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?a=5qdBKzvIVb8:BDZUG8xZQFA:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?i=5qdBKzvIVb8:BDZUG8xZQFA:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?a=5qdBKzvIVb8:BDZUG8xZQFA:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?i=5qdBKzvIVb8:BDZUG8xZQFA:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?a=5qdBKzvIVb8:BDZUG8xZQFA:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?i=5qdBKzvIVb8:BDZUG8xZQFA:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ViewsFromAnAdvantageEvangelist/~4/5qdBKzvIVb8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.advantageevangelist.com/feeds/5844473023722803366/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6658257106003248170&amp;postID=5844473023722803366&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6658257106003248170/posts/default/5844473023722803366?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6658257106003248170/posts/default/5844473023722803366?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ViewsFromAnAdvantageEvangelist/~3/5qdBKzvIVb8/copying-tables-part-deux.html" title="Copying Tables (Part Deux)" /><author><name>Chris</name><uri>http://www.blogger.com/profile/09097498077009855123</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="03929810096958434633" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://blog.advantageevangelist.com/2010/02/copying-tables-part-deux.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkIDQHY5cSp7ImA9WxBVE0s.&quot;"><id>tag:blogger.com,1999:blog-6658257106003248170.post-2154585409029321577</id><published>2010-02-15T07:00:00.000-07:00</published><updated>2010-02-16T15:49:31.829-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-02-16T15:49:31.829-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Programming" /><category scheme="http://www.blogger.com/atom/ns#" term="SQL" /><title>Copying Tables</title><content type="html">&lt;p&gt;There are a few ways to quickly copy tables using Advantage. You can copy the contents of one table to another table using SQL or using the Advantage API. These methods are very efficient since the operations are performed entirely on the server. You can use either method to create a new table and copy the data. You can also copy data from one table to another with or without a filter. &lt;/p&gt;  &lt;p&gt;SQL is probably the simplest way to copy the contents of one table to another. There is no real programming involved you can simply use the SQL window in Advantage Data Architect (ARC). The following examples demonstrate copying the contents of a table to a new table and an existing table.&lt;/p&gt;  &lt;div style="border-right: gray 1px solid; padding-right: 4px; border-top: gray 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: gray 1px solid; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: gray 1px solid; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; background-color: #f4f4f4"&gt;   &lt;div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;     &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: green"&gt;// Copy the contents from a table into a new table&lt;/span&gt; &lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #0000ff"&gt;SELECT&lt;/span&gt; * &lt;span style="color: #0000ff"&gt;INTO&lt;/span&gt; Employee_b &lt;span style="color: #0000ff"&gt;FROM&lt;/span&gt; Employee&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&amp;#160;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: green"&gt;// Copy the contents from a table into an existing table&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;INSERT &lt;span style="color: #0000ff"&gt;INTO&lt;/span&gt; Employee_c &lt;span style="color: #0000ff"&gt;SELECT&lt;/span&gt; * &lt;span style="color: #0000ff"&gt;FROM&lt;/span&gt; Employee&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&amp;#160;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: green"&gt;// Copy a portion of the records using a WHERE clause&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #0000ff"&gt;SELECT&lt;/span&gt; * &lt;span style="color: #0000ff"&gt;INTO&lt;/span&gt; Finance_Employees &lt;span style="color: #0000ff"&gt;FROM&lt;/span&gt; Employee&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;  &lt;span style="color: #0000ff"&gt;WHERE&lt;/span&gt; Department = 102&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;  &lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;INSERT &lt;span style="color: #0000ff"&gt;INTO&lt;/span&gt; Finance_Employees &lt;span style="color: #0000ff"&gt;SELECT&lt;/span&gt; * &lt;span style="color: #0000ff"&gt;FROM&lt;/span&gt; Employee&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;  &lt;span style="color: #0000ff"&gt;WHERE&lt;/span&gt; Department = 102&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;There are two Advantage API calls that copy tables; &lt;a title="Advantage Client Engine - AdsCopyTable" href="http://devzone.advantagedatabase.com/dz/webhelp/Advantage9.1/mergedProjects/ace/api1/adscopytable.htm" target="_blank"&gt;AdsCopyTable&lt;/a&gt; and &lt;a title="Advantage Client Engine - AdsCopyTableContents" href="http://devzone.advantagedatabase.com/dz/webhelp/Advantage9.1/mergedProjects/ace/api1/adscopytablecontents.htm" target="_blank"&gt;AdsCopyTableContents&lt;/a&gt;. AdsCopyTable creates a new table with the same structure and data as the original. AdsCopyTableContents copies the records from the first table to another table with the same structure. &lt;/p&gt;

&lt;p&gt;You can limit the records that are copied by specifying a filter, scope or both on the table to be copied. You must then set the filter option to respect filters or respect scopes. ADS_IGNOREFILTERS ignores all filters and scopes, ADS_RESPECTSCOPES respects scopes and ignores filters and ADS_RESPECTFILTERS respects filters and scopes.&lt;/p&gt;

&lt;p&gt;The following code is a C# example of using these functions. There are C examples and &lt;a title="Advantage TDataSet Descendant - TAdsTable/TAdsQuery.AdsCopyTable" href="http://devzone.advantagedatabase.com/dz/webhelp/Advantage9.1/mergedProjects/ade/extend/adscopytable.htm" target="_blank"&gt;Delphi&lt;/a&gt; examples available in the help file. I left out the error checking for brevity, however, you should always check the return value of any ACE call. To get access to the ACE namespace add using AdvantageClientEngine at the top of your cs file.&lt;/p&gt;

&lt;div style="border-right: gray 1px solid; padding-right: 4px; border-top: gray 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: gray 1px solid; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: gray 1px solid; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; background-color: #f4f4f4"&gt;
  &lt;div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;
    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #0000ff"&gt;uint&lt;/span&gt; lRetVal = ACE.AE_SUCCESS;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #0000ff"&gt;IntPtr&lt;/span&gt; hConnect;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #0000ff"&gt;IntPtr&lt;/span&gt; hSourceTable;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #0000ff"&gt;IntPtr&lt;/span&gt; hDestinationTable;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #008000"&gt;// connect to a directory of free tables&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;lRetVal = ACE.AdsConnect60(&lt;span style="color: #006080"&gt;&amp;quot;C:\\Data&amp;quot;&lt;/span&gt;, ACE.ADS_REMOTE_SERVER, &lt;span style="color: #006080"&gt;&amp;quot;&amp;quot;&lt;/span&gt;, &lt;span style="color: #006080"&gt;&amp;quot;&amp;quot;&lt;/span&gt;, &lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;                            ACE.ADS_DEFAULT, hConnect);&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (lRetVal != ACE.AE_SUCCESS)&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;{&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;    &lt;span style="color: #008000"&gt;// Error occurred&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;    &lt;span style="color: #008000"&gt;// use AdsGetLastError to retrieve the error message&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;}&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&amp;#160;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #008000"&gt;// Open the source table&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;lRetVal = ACE.AdsOpenTable(hConnect, &lt;span style="color: #006080"&gt;&amp;quot;C:\\Data\\Table1.adt&amp;quot;&lt;/span&gt;, &lt;span style="color: #006080"&gt;&amp;quot;&amp;quot;&lt;/span&gt;, ACE.ADS_ADT, ACE.ADS_ANSI,&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;                           ACE.ADS_PROPRIETARY_LOCKING, ACE.ADS_IGNORERIGHTS, &lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;                           ACE.ADS_DEFAULT, &lt;span style="color: #0000ff"&gt;out&lt;/span&gt; hSourceTable);&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&amp;#160;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #008000"&gt;// Create a new table with the same structure as the source table&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;lRetVal = ACE.AdsCopyTable(hSourceTable, ACE.ADS_RESPECTFILTERS, &lt;span style="color: #006080"&gt;&amp;quot;C:\\Data\\Backup\\TableCopy.adt&amp;quot;&lt;/span&gt;);&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&amp;#160;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&amp;#160;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #008000"&gt;// Open the destination table&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;lRetVal = ACE.AdsOpenTable(hConnect, &lt;span style="color: #006080"&gt;&amp;quot;C:\\Data\Backup\\Table2&amp;quot;&lt;/span&gt;, &lt;span style="color: #006080"&gt;&amp;quot;&amp;quot;&lt;/span&gt;, ACE.ADS_ADT, ACE.ADS_ANSI,&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;                           ACE.ADS_PROPRIETARY_LOCKING, ACE.ADS_IGNORERIGHTS, &lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;                           ACE.ADS_DEFAULT, &lt;span style="color: #0000ff"&gt;out&lt;/span&gt; hDestinationTable);&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&amp;#160;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #008000"&gt;// Copy the contents from source to destination&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;lRetVal = ACE.AdsCopyTableContents(hSourceTable, hDestinationTable, ACE.ADS_RESPECTFILTERS);&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Here is a simple function that will return the error message for a given error code.&lt;/p&gt;

&lt;div style="border-right: gray 1px solid; padding-right: 4px; border-top: gray 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: gray 1px solid; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: gray 1px solid; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; background-color: #f4f4f4"&gt;
  &lt;div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;
    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&lt;span style="color: #0000ff"&gt;private&lt;/span&gt; &lt;span style="color: #0000ff"&gt;string&lt;/span&gt; GetAdsError(&lt;span style="color: #0000ff"&gt;uint&lt;/span&gt; uiErrCode)&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;{&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;    &lt;span style="color: #0000ff"&gt;char&lt;/span&gt;[] ucBuf;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;    &lt;span style="color: #0000ff"&gt;ushort&lt;/span&gt; usBufLen = ACE.ADS_MAX_ERROR_LEN;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&amp;#160;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;    ucBuf = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; &lt;span style="color: #0000ff"&gt;char&lt;/span&gt;[usBufLen];&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;    ACE.AdsGetErrorString(uiErrCode, ucBuf, &lt;span style="color: #0000ff"&gt;ref&lt;/span&gt; usBufLen);&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;    &lt;span style="color: #0000ff"&gt;return&lt;/span&gt; &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; &lt;span style="color: #0000ff"&gt;string&lt;/span&gt;(ucBuf, 0, (&lt;span style="color: #0000ff"&gt;int&lt;/span&gt;)usBufLen);&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;}&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6658257106003248170-2154585409029321577?l=blog.advantageevangelist.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?a=XFUohgH1gVs:eCXX0aN5KyU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?a=XFUohgH1gVs:eCXX0aN5KyU:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?i=XFUohgH1gVs:eCXX0aN5KyU:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?a=XFUohgH1gVs:eCXX0aN5KyU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?i=XFUohgH1gVs:eCXX0aN5KyU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?a=XFUohgH1gVs:eCXX0aN5KyU:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?i=XFUohgH1gVs:eCXX0aN5KyU:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ViewsFromAnAdvantageEvangelist/~4/XFUohgH1gVs" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.advantageevangelist.com/feeds/2154585409029321577/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6658257106003248170&amp;postID=2154585409029321577&amp;isPopup=true" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6658257106003248170/posts/default/2154585409029321577?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6658257106003248170/posts/default/2154585409029321577?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ViewsFromAnAdvantageEvangelist/~3/XFUohgH1gVs/copying-tables.html" title="Copying Tables" /><author><name>Chris</name><uri>http://www.blogger.com/profile/09097498077009855123</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="03929810096958434633" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total><feedburner:origLink>http://blog.advantageevangelist.com/2010/02/copying-tables.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUIDQH0zeCp7ImA9WxBVE0U.&quot;"><id>tag:blogger.com,1999:blog-6658257106003248170.post-6675742136332234801</id><published>2010-02-08T07:00:00.000-07:00</published><updated>2010-02-16T22:12:51.380-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-02-16T22:12:51.380-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Books" /><title>Book Review – Rocket Surgery Made Easy</title><content type="html">&lt;p&gt;&lt;a href="http://www.amazon.com/gp/product/0321657292?ie=UTF8&amp;amp;tag=viewfromanadv-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=0321657292"&gt;&lt;img title="RocketSurgery_Krug[2]" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; margin: 0px 0px 0px 5px; border-right-width: 0px" height="162" alt="RocketSurgery_Krug[2]" src="http://lh3.ggpht.com/_pJ4HkzTKiOA/S3t4egvFxTI/AAAAAAAAD4g/7_S8uh9GmWs/RocketSurgery_Krug25.jpg?imgmax=800" width="115" align="right" border="0" /&gt;&lt;/a&gt;&lt;img style="margin: 0px; border-top-style: none! important; border-right-style: none! important; border-left-style: none! important; border-bottom-style: none! important" height="1" alt="" src="http://www.assoc-amazon.com/e/ir?t=viewfromanadv-20&amp;amp;l=as2&amp;amp;o=1&amp;amp;a=0321657292" width="1" border="0" /&gt;I read Steve Krug's first book &lt;a title="Book Review - Don&amp;#39;t Make me Think" href="http://blog.advantageevangelist.com/2008/05/book-review-don-make-me-think.html" target="_blank"&gt;Don't Make Me Think&lt;/a&gt; last year, which is a very good discussion of web design and how to make your web site more usable. So when his new book Rocket Surgery Made Easy came out I picked up a copy right away. This book discusses usability testing, in particular do it yourself usability testing. The book is short ( ~150 pages ) but contains a lot of practical advice on usability testing. You can see the table of contents using this &lt;a title="Rocket Surgery Made Easy - Table of Contents" href="http://www.sensible.com/rocketsurgery/RSME-TOC.pdf" target="_blank"&gt;link&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;The book is divided into three sections; finding usability problems, fixing usability problems and the road ahead. The bulk of the book discusses how to find usability problems. Not surprisingly Steve's method for finding usability problems is by doing usability testing. Although the book focuses mostly on web sites it applies to any user interface.&lt;/p&gt;  &lt;p&gt;Chapter one gives a great overview of the types of usability testing that can be done. It emphasizes that many usability tests can be done by anyone. This do-it-yourself usability testing can be done by just about anyone on a very limited budget and it brings great reward.&lt;/p&gt;  &lt;p&gt;Chapter two provides a link to an actual usability test conducted by Steve. Watching this test is a very compelling argument since it really looks quite simple. It is a 25 minute video which you can view &lt;a title="Demo Usability Test" href="http://www.peachpit.com/promotions/promotion.aspx?promo=137602" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;The next six chapters break down the how-to of a usability test. Chapter three discusses the frequency of usability tests. His recommendation is once a month. If you are doing agile development then you should do a usability test every sprint. Basically test as early in the development cycle as possible.&lt;/p&gt;  &lt;p&gt;Chapter four discusses what to test. Basically this is anything that works as designed. This fits really well with agile development since you have testable things with every sprint. With &amp;quot;traditional&amp;quot; development it may be more difficult to identify items that are ready to test but by keeping to a regular testing schedule developers will get things ready to test.&lt;/p&gt;  &lt;p&gt;Chapters five through seven discuss how to find testers, writing test scenarios and a set of useful checklists. There is a lot of good information in these chapters but essentially anyone can be a tester. Two big recommendations are to use your current customers and to never use the same tester twice. The checklists are also a great guideline to ensure that the tests are done the same way every time. &lt;/p&gt;  &lt;p&gt;I really enjoyed chapter eight which discusses how to be a test moderator.&amp;#160; There is some excellent advice on keeping the user on task without telling them what to do. This is crucial since your trying to find out if your web page or application is intuitive. Users should be able to work their way through a task without someone telling them what to do.&lt;/p&gt;  &lt;p&gt;Chapter nine discusses who should be involved in the usability test. Basically it should be open to anyone who has an interest in the project that is being evaluated. However, the observers need to be separate from the test participant. The test should be conducted with a participant and a moderator in the room. Everyone else watches from another room using screen sharing software. Although recordings of usability tests are valuable watching the test live is the best choice.&lt;/p&gt;  &lt;p&gt;The next section chapters ten through thirteen discuss how to go about fixing the problems identified by the usability tests. Chapter ten gives some good advice for conducting the wrap up meeting which is done after a set of tests has been completed. This is the time to identify the biggest usability issues. Chapter twelve is a list of some of the most common usability problems.&lt;/p&gt;  &lt;p&gt;Chapter eleven discusses doing &amp;quot;the least you can do&amp;quot;. Basically you should make the smallest changes that make the most impact. A full redesign is rarely needed and even more rarely accomplished. By making small changes you can quickly overcome many of the most problematic usability issues. Additionally small changes are easier to implement, quicker to complete and easy to measure. &lt;/p&gt;  &lt;p&gt;Chapter thirteen discusses some of the roadblocks to making changes to improve usability. This chapter contains some interesting observations on why things don't get fixed. Although they sound very well thought out and reasonable they really don't hold up under close scrutiny. If you have a serious usability problem in your product shouldn't that have the highest priority. That clever new feature might be fantastic but it doesn't do much good if your users can't use it properly.&lt;/p&gt;  &lt;p&gt;The last section of the book discusses some additional resources and provides a good summary of do-it-yourself usability testing. Chapter fourteen discusses desktop sharing software. Chapter fifteen is a list of additional reading on usability testing, some of which might make my crowded reading list. Chapter sixteen sums up all of Steve's maxims of usability testing.&lt;/p&gt;  &lt;p&gt;The bottom line; I enjoy Steve's light hearted approach to writing. He presents his material in a very entertaining fashion and keeps it brief and to the point. If you have considered doing usability testing on your project but are scared of the cost this provides some great advice for getting good feedback on a budget. This book is a quick read and makes you believe in the value of usability testing and is a convincing argument for working it into your schedule.&lt;/p&gt;  &lt;p&gt;Steve Krug did a presentation at the Business of Software conference on &amp;quot;The Least You Can Do About Usability&amp;quot; in 2008. You can view the video on the Business of Software &lt;a title="Steve Krug on the least you can do about usability" href="http://network.businessofsoftware.org/video/steve-krug-on-the-least-you" target="_blank"&gt;web site&lt;/a&gt;.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6658257106003248170-6675742136332234801?l=blog.advantageevangelist.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?a=nGvsiZAHlpw:QASXgZP1L_I:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?a=nGvsiZAHlpw:QASXgZP1L_I:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?i=nGvsiZAHlpw:QASXgZP1L_I:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?a=nGvsiZAHlpw:QASXgZP1L_I:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?i=nGvsiZAHlpw:QASXgZP1L_I:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?a=nGvsiZAHlpw:QASXgZP1L_I:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?i=nGvsiZAHlpw:QASXgZP1L_I:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ViewsFromAnAdvantageEvangelist/~4/nGvsiZAHlpw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.advantageevangelist.com/feeds/6675742136332234801/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6658257106003248170&amp;postID=6675742136332234801&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6658257106003248170/posts/default/6675742136332234801?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6658257106003248170/posts/default/6675742136332234801?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ViewsFromAnAdvantageEvangelist/~3/nGvsiZAHlpw/book-review-rocket-surgery-made-easy.html" title="Book Review – Rocket Surgery Made Easy" /><author><name>Chris</name><uri>http://www.blogger.com/profile/09097498077009855123</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="03929810096958434633" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://blog.advantageevangelist.com/2010/02/book-review-rocket-surgery-made-easy.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkUMSH8-cCp7ImA9WxBWFEw.&quot;"><id>tag:blogger.com,1999:blog-6658257106003248170.post-4280129562080353351</id><published>2010-02-05T07:00:00.000-07:00</published><updated>2010-02-05T16:58:09.158-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-02-05T16:58:09.158-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Programming" /><category scheme="http://www.blogger.com/atom/ns#" term="User Interface" /><title>Who Does the Testing</title><content type="html">&lt;p&gt;As I discussed in my &lt;a title="The Power of Testing" href="http://blog.advantageevangelist.com/2010/02/power-of-testing.html" target="_blank"&gt;last post&lt;/a&gt; there are many types of testing, but who should be doing the testing? This depends on what type of test is being conducted. Unit tests, regression tests and integration tests can be automated in many cases. They were probably written by the developers during development or by the QA department.&lt;/p&gt;  &lt;p&gt;Automated tests are extremely good at demonstrating that the features and functionality work correctly. They can also be used to measure performance. By always running the same tests regressions can be identified quickly and we can be assured that existing features continue to work as new features are added.&lt;/p&gt;  &lt;p&gt;However, there are many tests that simply cannot be automated, especially if your application contains a lot of UI elements. Sure there are programs that click buttons in a specific sequence and can &amp;quot;observe&amp;quot; the results. But, this isn't the same as a person interacting with the product. When a real person is clicking the buttons they an also evaluate how good the workflow is, how easy it is to move through the steps of the task and most importantly provide &lt;em&gt;qualitative&lt;/em&gt; feedback.&lt;/p&gt;  &lt;p&gt;These types of testers are a rare find. A good QA person needs to be someone who enjoys working on repetitive tasks or at the very least configuring several complex environments. The tester needs to be able to evaluate not only that the software is performing correctly but that it is doing the job in a usable way. Joel Spolsky has some advice on choosing &lt;a title="Joel On Software - Why testers?" href="http://www.joelonsoftware.com/items/2010/01/26.html" target="_blank"&gt;testers&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;If your program has a significant user interface you should include some Usability Testing into your schedule. These tests should be conducted in a semi-controlled environment with little direction. A user should be given a task to complete with the software and the session should be observed and/or recorded. This allows the developer(s) to see how easy their interface is to use. It can also identify places where additional error handling or explanation is necessary.&lt;/p&gt;  &lt;p&gt;These kinds of tests should not be conducted by the engineer who built the interface. Let's face it, the interface that I build may make perfect sense to me because I know what it is supposed to do and how it does it. Using the form may not be as obvious to someone else working with the product. A sequence of actions to perform a task that is quite natural to me may be frustrating for many users. Jeff Atwood made a similar point in his article &amp;quot;&lt;a title="Coding Horror - Open Source Software, Self Service Software" href="http://www.codinghorror.com/blog/archives/001215.html" target="_blank"&gt;Open Source Software, Self Service Software&lt;/a&gt;&amp;quot; when discussing self-service checkout.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;There are certain rituals to using the self-service checkout machines. And we know that. We programmers fundamentally grok the hoops that the self-service checkout machines make customers jump through. They are, after all, devices designed by our fellow programmers. Every item has to be scanned, then carefully and individually placed in the bagging area which doubles as a scale to verify the item was moved there. One at time. In strict sequence. Repeated exactly the same every time. We live this system every day; it's completely natural for a programmer. But it isn't natural for average people. I've seen plenty of customers in front of me struggle with self-service checkout machines, puzzled by the workings of this mysterious device that seems so painfully &lt;i&gt;obvious&lt;/i&gt; to a programmer. I get frustrated to the point that I almost want to rush over and help them myself. Which would defeat the purpose of a.. self-service device.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;I related to this example right away. It seems very natural to me to do things step by step since that is the way we have to write programs. Most people don't break tasks down into these small chunks. A good tester can identify where these steps seem onerous which allows the developers to streamline the task. &lt;/p&gt;  &lt;p&gt;Finally if you need some convincing on hiring testers take a look at &lt;a title="Joel on Software" href="http://www.joelonsoftware.com/articles/fog0000000067.html" target="_blank"&gt;Top Five (Wrong) Reasons You Don't Have Testers&lt;/a&gt;.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6658257106003248170-4280129562080353351?l=blog.advantageevangelist.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?a=8dfOVzu8qmc:UQTkTY328z0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?a=8dfOVzu8qmc:UQTkTY328z0:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?i=8dfOVzu8qmc:UQTkTY328z0:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?a=8dfOVzu8qmc:UQTkTY328z0:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?i=8dfOVzu8qmc:UQTkTY328z0:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?a=8dfOVzu8qmc:UQTkTY328z0:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?i=8dfOVzu8qmc:UQTkTY328z0:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ViewsFromAnAdvantageEvangelist/~4/8dfOVzu8qmc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.advantageevangelist.com/feeds/4280129562080353351/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6658257106003248170&amp;postID=4280129562080353351&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6658257106003248170/posts/default/4280129562080353351?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6658257106003248170/posts/default/4280129562080353351?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ViewsFromAnAdvantageEvangelist/~3/8dfOVzu8qmc/who-does-testing.html" title="Who Does the Testing" /><author><name>Chris</name><uri>http://www.blogger.com/profile/09097498077009855123</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="03929810096958434633" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://blog.advantageevangelist.com/2010/02/who-does-testing.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0EEQnY4cSp7ImA9WxBWEk0.&quot;"><id>tag:blogger.com,1999:blog-6658257106003248170.post-2736761960322978724</id><published>2010-02-03T07:00:00.000-07:00</published><updated>2010-02-03T07:00:03.839-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-02-03T07:00:03.839-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Programming" /><category scheme="http://www.blogger.com/atom/ns#" term="Troubleshooting" /><title>The Power of Testing</title><content type="html">&lt;p&gt;Testing is an often dreaded but very necessary part of the development process. It can be a tedious task but it can really pay off in the long run. I think this (de)Motivational poster sums it up nicely.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_pJ4HkzTKiOA/S2iRyUbC4nI/AAAAAAAAD4Y/VJX8kg_T3z4/s1600-h/Testing18.jpg"&gt;&lt;img title="Testing1" style="border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px" height="324" alt="Testing1" src="http://lh5.ggpht.com/_pJ4HkzTKiOA/S2iRy1_h13I/AAAAAAAAD4c/GniTQCyT-NU/Testing1_thumb4.jpg?imgmax=800" width="404" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;I realize that there isn't time to test everything. Like all programming tasks they need to be added into the schedule. Therefore, you need to choose the tests that best suit your situation. Here are a few examples.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Unit Testing &lt;/li&gt;    &lt;li&gt;Regression Testing &lt;/li&gt;    &lt;li&gt;Integration Testing &lt;/li&gt;    &lt;li&gt;Usability Testing &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Unit testing was brought to the forefront with the concept of Test-driven Development (TTD). TTD encourages developers to write a unit test first then create the method. This ensures that every method has a test written for it. If you are trying to apply this to an existing project it can be a very large task. For new projects there are many tools available which which help automate the process.&lt;/p&gt;  &lt;p&gt;Creating unit tests for every function can be a time consuming process and needs to be balanced with generating the code that actually does the work. This can be further complicated since you need a positive and negative test in many cases. You need to ensure your function returns the correct results for valid input as well as proper handling of invalid input. Achieving the right amount of unit tests can be a somewhat daunting task.&lt;/p&gt;  &lt;p&gt;Two types of tests which are almost always used are regression and integration tests. Regression testing ensures that changes to the code don't break any existing functionality. This is a step up from unit level tests in that it demonstrates that all of the units work together properly. Testing of new features is generally referred to as Integration Testing since it tests the addition of new features with the old. &lt;/p&gt;  &lt;p&gt;When you are developing a program that will be used by people frequently Usability Testing is a valuable tool. Many people think that this can be a very time consuming and expensive type of testing to do. However, it doesn't have to be. You can conduct informal usability tests by simply grabbing someone in the hall and asking them to look at a form or web page that you just completed. If they can use the form then your on the right track. &lt;/p&gt;  &lt;p&gt;Other simple usability tests can be conducted in a few hours using screen sharing software and a little help from your customers. This allows your developers to watch a user work with the program and identify good and bad aspects of the interface. I believe this kind of feedback is invaluable, it will lead to improvements and is well worth the time investment.&lt;/p&gt;  &lt;p&gt;There are many other categories of tests that can be run and ultimately the level of tests you perform is going to depend on many factors. Although testing is very important delivering a product to market is just as important. Do enough testing to ensure that your product will work correctly and effectively then get it out to your best testers; your customers.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6658257106003248170-2736761960322978724?l=blog.advantageevangelist.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?a=vd6ShafBd0k:nd45PEQ5c1c:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?a=vd6ShafBd0k:nd45PEQ5c1c:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?i=vd6ShafBd0k:nd45PEQ5c1c:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?a=vd6ShafBd0k:nd45PEQ5c1c:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?i=vd6ShafBd0k:nd45PEQ5c1c:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?a=vd6ShafBd0k:nd45PEQ5c1c:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?i=vd6ShafBd0k:nd45PEQ5c1c:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ViewsFromAnAdvantageEvangelist/~4/vd6ShafBd0k" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.advantageevangelist.com/feeds/2736761960322978724/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6658257106003248170&amp;postID=2736761960322978724&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6658257106003248170/posts/default/2736761960322978724?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6658257106003248170/posts/default/2736761960322978724?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ViewsFromAnAdvantageEvangelist/~3/vd6ShafBd0k/power-of-testing.html" title="The Power of Testing" /><author><name>Chris</name><uri>http://www.blogger.com/profile/09097498077009855123</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="03929810096958434633" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://blog.advantageevangelist.com/2010/02/power-of-testing.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CE8FQXg8cCp7ImA9WxBWEE4.&quot;"><id>tag:blogger.com,1999:blog-6658257106003248170.post-8209983121144611625</id><published>2010-02-01T07:00:00.000-07:00</published><updated>2010-02-01T07:00:10.678-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-02-01T07:00:10.678-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="FAQ" /><title>FAQs – January 2010</title><content type="html">&lt;h3&gt;Client Communication Errors&lt;/h3&gt;  &lt;p&gt;Clients can get disconnected from Advantage in many ways. The network connection could fail, the client could loose power or the user could simply close the program abnormally. If the server detects that the client has been disconnected it will log a &lt;a title="Advantage Error Guide - 7020 User Logged Out" href="http://devzone.advantagedatabase.com/dz/webhelp/Advantage9.1/mergedProjects/adserror/err7xxx/7020_user_logged_out.htm" target="_blank"&gt;7020&lt;/a&gt; error.&lt;/p&gt;  &lt;p&gt;However, there are some communication errors that can generate an error on the server. In rare cases a &lt;a title="Advantage Error Guide - 9094 Cursor is still active" href="http://devzone.advantagedatabase.com/dz/webhelp/Advantage9.1/mergedProjects/adserror/err9xxx/9094_the_operation_cannot_be_performed_on_the_statement_because_the_cursor_is_still_active.htm" target="_blank"&gt;9094&lt;/a&gt; error, which will also generate a crash dump file, can be caused by a client communication failure. This should be resolved in version 9.10.0.20 which added a new error code 7213 which does not generate a crash dump file. This error is logged when the client gets a temporary or non-fatal communication error when sending a request to the server. &lt;/p&gt;  &lt;p&gt;Two knowledge base articles that address this issue have been posted: &lt;a href="http://devzone.advantagedatabase.com/dz/Content.aspx?Key=17&amp;amp;RefNo=100113-2242"&gt;7213 Error Logged in the Advantage Error Log&lt;/a&gt; and &lt;a href="http://devzone.advantagedatabase.com/dz/Content.aspx?Key=17&amp;amp;RefNo=100111-2241"&gt;Error 9094 Logged and Dump File Generated&lt;/a&gt;&lt;/p&gt;  &lt;h3&gt;&amp;quot;Empty&amp;quot; Date Fields in VFP Tables&lt;/h3&gt;  &lt;p&gt;When a date field is empty in a Visual FoxPro (VFP) table the Advantage ODBC Driver will return 12/30/1899 as the date. This is the default return value when an Xbase field contains an empty value. &lt;/p&gt;  &lt;p&gt;You can avoid this situation in one of two ways. VFP allows fields to be created to support NULLs. When the field is created this way Advantage will return NULL if a value has not been defined. &lt;/p&gt;  &lt;p&gt;Alternately you can check the field for an empty value by using the EMPTY() function. This is available as both an SQL scalar function as well as a filter expression. The EMPTY() function will return true if the field contains the Xbase empty value for the given field type.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;SELECT * FROM MyTable WHERE EMPTY(MyDate) = TRUE&lt;/p&gt; &lt;/blockquote&gt;  &lt;h3&gt;Can a Server Replicate to Itself?&lt;/h3&gt;  &lt;p&gt;Yes, an Advantage server with replication enabled can replicate to itself. You simply have to create another database on the server and configure it as the subscriber. This could be very useful in keeping an up to the minute backup of your data. Create the second database on another drive within the server so if the primary drive failed you would have a current backup immediately available.&lt;/p&gt;  &lt;p&gt;You could also replicate to an external drive or to a Network Attached Storage (NAS) device for an additional measure of security.&lt;/p&gt;  &lt;h3&gt;Creating a Mini-Dump for a Specific Error Code&lt;/h3&gt;  &lt;p&gt;Advantage automatically creates a crash dump file whenever a 9000 class error occurs. These files assist the R&amp;amp;D team in determining what is going on with the server when the error occurred. Generally this allows us to quickly determine the problem and recommend solutions.&lt;/p&gt;  &lt;p&gt;You can also create a mini-dump when you want more information about why a specific error code is being generated. This is done by adding some additional keys to the registry. Create registry entries named MINIDUMPERROR, MINIDUMPFILE, and MINIDUMPLINE in the ADS registry location of HKLM\SYSTEM\CurrentControlSet\Services\Advantage\Configuration. &lt;/p&gt;  &lt;p&gt;To generate the log file just find the Error Number, File Name and Error Line you wish to create the dump for in the Advantage Error Log (ADS_ERR.adt). Then do whatever operation that caused the error again. Advantage should generate a file named adsdump*.gz on the root of the C drive, or the location configured in the error log path.&lt;/p&gt;  &lt;p&gt;For more information about this process see this knowledge base &lt;a title="Minidump Cheat Sheet" href="http://devzone.advantagedatabase.com/dz/Content.aspx?Key=17&amp;amp;RefNo=091119-2229" target="_blank"&gt;article&lt;/a&gt;.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6658257106003248170-8209983121144611625?l=blog.advantageevangelist.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?a=nFP8ibOPuKs:5us9HMvMh1Y:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?a=nFP8ibOPuKs:5us9HMvMh1Y:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?i=nFP8ibOPuKs:5us9HMvMh1Y:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?a=nFP8ibOPuKs:5us9HMvMh1Y:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?i=nFP8ibOPuKs:5us9HMvMh1Y:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?a=nFP8ibOPuKs:5us9HMvMh1Y:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?i=nFP8ibOPuKs:5us9HMvMh1Y:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ViewsFromAnAdvantageEvangelist/~4/nFP8ibOPuKs" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.advantageevangelist.com/feeds/8209983121144611625/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6658257106003248170&amp;postID=8209983121144611625&amp;isPopup=true" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6658257106003248170/posts/default/8209983121144611625?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6658257106003248170/posts/default/8209983121144611625?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ViewsFromAnAdvantageEvangelist/~3/nFP8ibOPuKs/faqs-january-2010.html" title="FAQs – January 2010" /><author><name>Chris</name><uri>http://www.blogger.com/profile/09097498077009855123</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="03929810096958434633" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total><feedburner:origLink>http://blog.advantageevangelist.com/2010/02/faqs-january-2010.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUEESHo8fSp7ImA9WxBXF0o.&quot;"><id>tag:blogger.com,1999:blog-6658257106003248170.post-425052704189531377</id><published>2010-01-29T07:00:00.000-07:00</published><updated>2010-01-29T07:00:09.475-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-01-29T07:00:09.475-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="New Technologies" /><category scheme="http://www.blogger.com/atom/ns#" term="Gadgets" /><title>The Apple iPad</title><content type="html">&lt;p&gt;I am always amazed at how good a show Apple puts on. They do a spectacular job at releasing just enough information and rumor to whip everyone into a frenzy. Take the iPad announcement this week it has generated a avalanche of blog posts and tweets (twitters?) over the past two days. It ranked second on Twitter to Haiti on the 27th when it was announced. What would it be like to generate that kind of interest in your product?&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_pJ4HkzTKiOA/S2J4-AbmWuI/AAAAAAAAD4A/PgCWrrLA_mU/s1600-h/ipad4.jpg"&gt;&lt;img title="ipad" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; margin-left: 0px; margin-right: 0px; border-right-width: 0px" height="240" alt="ipad" src="http://lh4.ggpht.com/_pJ4HkzTKiOA/S2J4_GUZo2I/AAAAAAAAD4E/kCZV_GdW0_s/ipad_thumb2.jpg?imgmax=800" width="191" align="right" border="0" /&gt;&lt;/a&gt; So, I'll admit it I am interested in this new device. I have really enjoyed using my &lt;a title="The Best Cell Phone Ever?" href="http://blog.advantageevangelist.com/2009/06/best-cell-phone-ever.html" target="_blank"&gt;iPhone&lt;/a&gt; and I must admit the &lt;a title="Apple iPad" href="http://www.apple.com/ipad/" target="_blank"&gt;iPad&lt;/a&gt; looks like a really cool and fun device. Apple's multi-touch interface is the most intuitive interface that I have ever used. It is very easy to learn and it makes the device easy to use for just about everyone. It is so quick to learn how to navigate around and use the applications. I believe that this device will be very well received and Apple will sell millions of them.&lt;/p&gt;  &lt;p&gt;The iPad is essentially a giant iPod Touch, which will be great for surfing the Web and watching movies but not so good at fitting in your pocket. The standard applications like calendar, contacts and photos have all been enhanced to make use of the larger screen size. It also adds the capability to read books. I think this is a great selling feature and it will appeal to a wide audience.&lt;/p&gt;  &lt;p&gt;Since I already have an iPhone and a &lt;a href="http://blog.advantageevangelist.com/2010/01/amazon-kindle.html" target="_blank"&gt;Kindle&lt;/a&gt; I don't see this as a necessary device for me. The iPhone is more portable, provides Internet access virtually everywhere and is my phone. I also think reading on an electronic ink screen instead of an LCD is much easier on the eyes. I really enjoy reading on my Kindle and I find it almost exactly the same as reading ink on paper. &lt;/p&gt;  &lt;p&gt;If I didn't already have the other devices I would be much more interested in purchasing an iPad. I really like the instant on capability and it is large enough to comfortably surf the web. Books are also a great feature and I must admit the product video made the photo browser look really fun. &lt;/p&gt;  &lt;p&gt;For all of the good/great things about the iPad I do see some drawbacks. It runs the iPhone OS which means no multi-tasking. On a device this big I would want to be able to have a few apps open at the same time. There are no cameras on the iPad, which I found surprising since this would be a perfect video chat device. It may be a bit awkward as a camera or camcorder though.&lt;/p&gt;  &lt;p&gt;I found a couple of great articles on Gizmodo discussing the iPad. The best one &amp;quot;&lt;a title="Wilson Rothman from Gizmodo" href="http://gizmodo.com/5458531/the-ipad-is-the-gadget-we-never-knew-we-needed" target="_blank"&gt;The iPad is the Gadget We Never Knew We Needed&lt;/a&gt;&amp;quot; has some great points and is well worth the read. For the downside to the iPad take a look at &amp;quot;&lt;a title="Adam Frucci on Gizmodo" href="http://gizmodo.com/5458382/8-things-that-suck-about-the-ipad" target="_blank"&gt;8 Things That Suck About the iPad&lt;/a&gt;&amp;quot;. Stephen Fry also had some great points in his &lt;a href="http://www.stephenfry.com/2010/01/28/ipad-about/" target="_blank"&gt;article&lt;/a&gt;. I thought his comment to naysayers was quite good:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;There are many issues you could have with the iPad. No multitasking, still no Flash. No camera, no GPS. They all fall away the minute you use it. I cannot emphasize enough this point: “Hold your judgment until you’ve spent five minutes with it”. No YouTube film, no promotional video, no keynote address, no list of features can even hint at the extraordinary feeling you get from actually using and interacting with one of these magical objects.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;I would love to have a chance to use the iPad but I am sure it would make me really want to have one. I think this first generation will be good but will have its share of issues. However, I wouldn't turn one down if it was offered to me. I'm just not sure I'm ready to spend $500 on a device that has some glaring limitations. For now I would rather surf the web with my laptop at home or on my iPhone when I am mobile.&lt;/p&gt;  &lt;p&gt;All that said I am sure Apple will sell millions of these and they are always very good at responding to their critics. I bet the next generation iPad will be a must have.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6658257106003248170-425052704189531377?l=blog.advantageevangelist.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?a=PH9neuPm548:_o6Kaot1HLQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?a=PH9neuPm548:_o6Kaot1HLQ:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?i=PH9neuPm548:_o6Kaot1HLQ:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?a=PH9neuPm548:_o6Kaot1HLQ:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?i=PH9neuPm548:_o6Kaot1HLQ:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?a=PH9neuPm548:_o6Kaot1HLQ:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?i=PH9neuPm548:_o6Kaot1HLQ:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ViewsFromAnAdvantageEvangelist/~4/PH9neuPm548" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.advantageevangelist.com/feeds/425052704189531377/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6658257106003248170&amp;postID=425052704189531377&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6658257106003248170/posts/default/425052704189531377?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6658257106003248170/posts/default/425052704189531377?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ViewsFromAnAdvantageEvangelist/~3/PH9neuPm548/apple-ipad.html" title="The Apple iPad" /><author><name>Chris</name><uri>http://www.blogger.com/profile/09097498077009855123</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="03929810096958434633" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://blog.advantageevangelist.com/2010/01/apple-ipad.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0YMRng_eSp7ImA9WxBXF0w.&quot;"><id>tag:blogger.com,1999:blog-6658257106003248170.post-7250497942298622597</id><published>2010-01-27T17:24:00.001-07:00</published><updated>2010-01-28T15:53:07.641-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-01-28T15:53:07.641-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Events" /><title>January Advantage News</title><content type="html">&lt;p&gt;The January edition of the Advantage Newsletter was sent out today. If you didn't get one you can view it &lt;a title="Advantage Database January Newsletter" href="http://www.sybase.com/detail?id=1067089" target="_blank"&gt;here&lt;/a&gt; or you can &lt;a title="Advantage Newsletter Subscription" href="http://www.sybase.com/newsletter_advantage" target="_blank"&gt;sign-up&lt;/a&gt; and get it right when it is published. You can see a complete archive of the newsletter &lt;a title="Advantage Newsletter Archive" href="http://www.sybase.com/detail_list?id=9796&amp;amp;pageNum=1&amp;amp;multi=true&amp;amp;show=30254&amp;amp;show2=-1&amp;amp;timeframe=-1" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Some of the exciting things announced in the newsletter include&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Advantage Database Server 10 | Pure &amp;amp; Simple webcast series – this three part series will introduce you to all the new features and improvements for the latest version of Advantage. This series begins in February and you can sign up &lt;a title="Webcast Registration" href="http://marketing.ianywhere.com/forms/Advantage10PS?elq=f503d31501314585a93f58bf7a573121" target="_blank"&gt;here&lt;/a&gt;. &lt;/li&gt;    &lt;li&gt;The next Advantage Technical Summit will be held in Boise, Idaho on April 28th and 29th. This is a great opportunity to learn more about Advantage and network with other Advantage users. More information about this event will be sent out soon. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Keep watching for more event announcements. &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6658257106003248170-7250497942298622597?l=blog.advantageevangelist.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?a=kZ2M3z0gUWI:-VGBOOFR0A8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?a=kZ2M3z0gUWI:-VGBOOFR0A8:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?i=kZ2M3z0gUWI:-VGBOOFR0A8:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?a=kZ2M3z0gUWI:-VGBOOFR0A8:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?i=kZ2M3z0gUWI:-VGBOOFR0A8:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?a=kZ2M3z0gUWI:-VGBOOFR0A8:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?i=kZ2M3z0gUWI:-VGBOOFR0A8:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ViewsFromAnAdvantageEvangelist/~4/kZ2M3z0gUWI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.advantageevangelist.com/feeds/7250497942298622597/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6658257106003248170&amp;postID=7250497942298622597&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6658257106003248170/posts/default/7250497942298622597?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6658257106003248170/posts/default/7250497942298622597?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ViewsFromAnAdvantageEvangelist/~3/kZ2M3z0gUWI/january-advantage-news.html" title="January Advantage News" /><author><name>Chris</name><uri>http://www.blogger.com/profile/09097498077009855123</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="03929810096958434633" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://blog.advantageevangelist.com/2010/01/january-advantage-news.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUIARng-eSp7ImA9WxBXGE0.&quot;"><id>tag:blogger.com,1999:blog-6658257106003248170.post-2996398946198792957</id><published>2010-01-13T07:00:00.000-07:00</published><updated>2010-01-29T16:25:47.651-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-01-29T16:25:47.651-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Books" /><title>My 2010 Reading List</title><content type="html">&lt;p&gt;As I mentioned in my first book review of the year I am going back to basics. I thought it was time to review some of the basic database theory along with solid design principals. With that in mind here are the titles that I have identified so far.&lt;/p&gt;  &lt;p&gt;Database Stuff&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.amazon.com/gp/product/0201752840?ie=UTF8&amp;amp;tag=viewfromanadv-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=0201752840"&gt;Database Design for Mere Mortals&lt;/a&gt;&lt;img style="margin: 0px; border-top-style: none! important; border-right-style: none! important; border-left-style: none! important; border-bottom-style: none! important" height="1" alt="" src="http://www.assoc-amazon.com/e/ir?t=advantageevangelist-20&amp;amp;l=as2&amp;amp;o=1&amp;amp;a=0201752840" width="1" border="0" /&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.amazon.com/gp/product/0126445516?ie=UTF8&amp;amp;tag=viewfromanadv-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=0126445516"&gt;Data Modeling Essentials&lt;/a&gt;&lt;img style="margin: 0px; border-top-style: none! important; border-right-style: none! important; border-left-style: none! important; border-bottom-style: none! important" height="1" alt="" src="http://www.assoc-amazon.com/e/ir?t=advantageevangelist-20&amp;amp;l=as2&amp;amp;o=1&amp;amp;a=0126445516" width="1" border="0" /&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.amazon.com/gp/product/0596100124?ie=UTF8&amp;amp;tag=viewfromanadv-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=0596100124"&gt;Database in Depth: Relational Theory for Practitioners&lt;/a&gt;&lt;img style="margin: 0px; border-top-style: none! important; border-right-style: none! important; border-left-style: none! important; border-bottom-style: none! important" height="1" alt="" src="http://www.assoc-amazon.com/e/ir?t=advantageevangelist-20&amp;amp;l=as2&amp;amp;o=1&amp;amp;a=0596100124" width="1" border="0" /&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.amazon.com/gp/product/0596523068?ie=UTF8&amp;amp;tag=advantageevangelist-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=0596523068"&gt;SQL and Relational Theory: How to Write Accurate SQL Code&lt;/a&gt;&lt;img style="margin: 0px; border-top-style: none! important; border-right-style: none! important; border-left-style: none! important; border-bottom-style: none! important" height="1" alt="" src="http://www.assoc-amazon.com/e/ir?t=advantageevangelist-20&amp;amp;l=as2&amp;amp;o=1&amp;amp;a=0596523068" width="1" border="0" /&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.amazon.com/gp/product/0596008945?ie=UTF8&amp;amp;tag=advantageevangelist-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=0596008945"&gt;The Art of SQL&lt;/a&gt;&lt;img style="margin: 0px; border-top-style: none! important; border-right-style: none! important; border-left-style: none! important; border-bottom-style: none! important" height="1" alt="" src="http://www.assoc-amazon.com/e/ir?t=advantageevangelist-20&amp;amp;l=as2&amp;amp;o=1&amp;amp;a=0596008945" width="1" border="0" /&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;User interface design and usability&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.amazon.com/gp/product/0465051367?ie=UTF8&amp;amp;tag=viewfromanadv-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=0465051367"&gt;Emotional Design: Why We Love (or Hate) Everyday Things&lt;/a&gt;&lt;img style="margin: 0px; border-top-style: none! important; border-right-style: none! important; border-left-style: none! important; border-bottom-style: none! important" height="1" alt="" src="http://www.assoc-amazon.com/e/ir?t=advantageevangelist-20&amp;amp;l=as2&amp;amp;o=1&amp;amp;a=0465051367" width="1" border="0" /&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.amazon.com/gp/product/0465002285?ie=UTF8&amp;amp;tag=advantageevangelist-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=0465002285"&gt;The Design of Future Things&lt;/a&gt;&lt;img style="margin: 0px; border-top-style: none! important; border-right-style: none! important; border-left-style: none! important; border-bottom-style: none! important" height="1" alt="" src="http://www.assoc-amazon.com/e/ir?t=advantageevangelist-20&amp;amp;l=as2&amp;amp;o=1&amp;amp;a=0465002285" width="1" border="0" /&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.amazon.com/gp/product/0470084111?ie=UTF8&amp;amp;tag=advantageevangelist-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=0470084111"&gt;About Face 3: The Essentials of Interaction Design&lt;/a&gt;&lt;img style="margin: 0px; border-top-style: none! important; border-right-style: none! important; border-left-style: none! important; border-bottom-style: none! important" height="1" alt="" src="http://www.assoc-amazon.com/e/ir?t=advantageevangelist-20&amp;amp;l=as2&amp;amp;o=1&amp;amp;a=0470084111" width="1" border="0" /&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.amazon.com/gp/product/0321657292?ie=UTF8&amp;amp;tag=advantageevangelist-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=0321657292"&gt;Rocket Surgery Made Easy: The Do-It-Yourself Guide to Finding and Fixing Usability Problems&lt;/a&gt;&lt;img style="margin: 0px; border-top-style: none! important; border-right-style: none! important; border-left-style: none! important; border-bottom-style: none! important" height="1" alt="" src="http://www.assoc-amazon.com/e/ir?t=advantageevangelist-20&amp;amp;l=as2&amp;amp;o=1&amp;amp;a=0321657292" width="1" border="0" /&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.amazon.com/gp/product/0201702258?ie=UTF8&amp;amp;tag=advantageevangelist-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=0201702258"&gt;Writing Effective Use Cases&lt;/a&gt;&lt;img style="margin: 0px; border-top-style: none! important; border-right-style: none! important; border-left-style: none! important; border-bottom-style: none! important" height="1" alt="" src="http://www.assoc-amazon.com/e/ir?t=advantageevangelist-20&amp;amp;l=as2&amp;amp;o=1&amp;amp;a=0201702258" width="1" border="0" /&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Miscellaneous&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.amazon.com/gp/product/0201657880?ie=UTF8&amp;amp;tag=advantageevangelist-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=0201657880"&gt;Programming Pearls (2nd Edition)&lt;/a&gt;&lt;img style="margin: 0px; border-top-style: none! important; border-right-style: none! important; border-left-style: none! important; border-bottom-style: none! important" height="1" alt="" src="http://www.assoc-amazon.com/e/ir?t=advantageevangelist-20&amp;amp;l=as2&amp;amp;o=1&amp;amp;a=0201657880" width="1" border="0" /&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.amazon.com/gp/product/0201118890?ie=UTF8&amp;amp;tag=advantageevangelist-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=0201118890"&gt;More Programming Pearls: Confessions of a Coder&lt;/a&gt;&lt;img style="margin: 0px; border-top-style: none! important; border-right-style: none! important; border-left-style: none! important; border-bottom-style: none! important" height="1" alt="" src="http://www.assoc-amazon.com/e/ir?t=advantageevangelist-20&amp;amp;l=as2&amp;amp;o=1&amp;amp;a=0201118890" width="1" border="0" /&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.amazon.com/gp/product/1430219483?ie=UTF8&amp;amp;tag=advantageevangelist-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=1430219483"&gt;Coders at Work&lt;/a&gt;&lt;img style="margin: 0px; border-top-style: none! important; border-right-style: none! important; border-left-style: none! important; border-bottom-style: none! important" height="1" alt="" src="http://www.assoc-amazon.com/e/ir?t=advantageevangelist-20&amp;amp;l=as2&amp;amp;o=1&amp;amp;a=1430219483" width="1" border="0" /&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.amazon.com/gp/product/0596519788?ie=UTF8&amp;amp;tag=advantageevangelist-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=0596519788"&gt;The Productive Programmer (Theory in Practice (O'Reilly))&lt;/a&gt;&lt;img style="margin: 0px; border-top-style: none! important; border-right-style: none! important; border-left-style: none! important; border-bottom-style: none! important" height="1" alt="" src="http://www.assoc-amazon.com/e/ir?t=advantageevangelist-20&amp;amp;l=as2&amp;amp;o=1&amp;amp;a=0596519788" width="1" border="0" /&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.amazon.com/gp/product/0201734850?ie=UTF8&amp;amp;tag=advantageevangelist-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=0201734850"&gt;Peer Reviews in Software: A Practical Guide&lt;/a&gt;&lt;img style="margin: 0px; border-top-style: none! important; border-right-style: none! important; border-left-style: none! important; border-bottom-style: none! important" height="1" alt="" src="http://www.assoc-amazon.com/e/ir?t=advantageevangelist-20&amp;amp;l=as2&amp;amp;o=1&amp;amp;a=0201734850" width="1" border="0" /&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;A fairly ambitious list but I hope to get through them all this year. Stay tuned for book reviews as I get them read.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6658257106003248170-2996398946198792957?l=blog.advantageevangelist.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?a=noK1rcve-Pw:8Jtvz16CfV8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?a=noK1rcve-Pw:8Jtvz16CfV8:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?i=noK1rcve-Pw:8Jtvz16CfV8:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?a=noK1rcve-Pw:8Jtvz16CfV8:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?i=noK1rcve-Pw:8Jtvz16CfV8:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?a=noK1rcve-Pw:8Jtvz16CfV8:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?i=noK1rcve-Pw:8Jtvz16CfV8:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ViewsFromAnAdvantageEvangelist/~4/noK1rcve-Pw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.advantageevangelist.com/feeds/2996398946198792957/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6658257106003248170&amp;postID=2996398946198792957&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6658257106003248170/posts/default/2996398946198792957?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6658257106003248170/posts/default/2996398946198792957?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ViewsFromAnAdvantageEvangelist/~3/noK1rcve-Pw/my-2010-reading-list.html" title="My 2010 Reading List" /><author><name>Chris</name><uri>http://www.blogger.com/profile/09097498077009855123</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="03929810096958434633" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://blog.advantageevangelist.com/2010/01/my-2010-reading-list.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DU4GRHg6cSp7ImA9WxBXGE0.&quot;"><id>tag:blogger.com,1999:blog-6658257106003248170.post-1490967778250660826</id><published>2010-01-11T07:00:00.000-07:00</published><updated>2010-01-29T16:32:05.619-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-01-29T16:32:05.619-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Books" /><title>Book Review – Beginning Database Design</title><content type="html">&lt;p&gt;&lt;a href="http://www.amazon.com/gp/product/1590597699?ie=UTF8&amp;amp;tag=advantageevangelist-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=1590597699"&gt;&lt;img style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; margin: 0px 0px 0px 5px; border-right-width: 0px" height="160" src="http://lh5.ggpht.com/_pJ4HkzTKiOA/S2Nujz7qybI/AAAAAAAAD4U/IXZ7avYWyWs/BeginningDatabaseDesignChurcher_thum.jpg?imgmax=800" width="130" align="right" border="0" /&gt;&lt;/a&gt;I wanted to take some time and go back to some database basics so I looked for some introductory books on database design. I decided on Beginning Database Design From Novice to Professional by Clare Churcher. This is a well written book with decent examples but a bit too introductory for a database programmer. I think it would be a very good book for someone who is looking to move from spreadsheets into databases though.&lt;/p&gt;  &lt;p&gt;The book is relatively short at 240 pages. It contains twelve chapters along with a conclusion and index. It is truly aimed at the casual computer user who has a need to track data. Most of the examples pertain to education and research. Each of the examples are well thought out and clearly demonstrate the concepts she is discussing.&lt;/p&gt;  &lt;p&gt;I thought her approach to introducing the material was well organized. She made some excellent points in her first chapter &amp;quot;What can go wrong&amp;quot;, it demonstrated the importance of good design quickly. Chapter 2 is a brief introduction into the development process. I was happy to see some discussion of use cases in this chapter. I think this is a very important step in the design and development process.&lt;/p&gt;  &lt;p&gt;Chapter 3 examines use cases more thoroughly showing how the process of working with the users and identifying how they will use the data is a fundamental requirement for designing a good database. Chapters 4 and 5 dive into creating a data model. This includes considerations of data types and logical grouping of data. These chapters also spend a lot of time discussing data relationships.&lt;/p&gt;  &lt;p&gt;Chapters 6 discusses looking at data as classes. This provides a good way to demonstrate when it is appropriate to create subclasses that have some common data but also include specific information of their own. Chapters 7 through 9 discuss the relational database model. This is where all of the concepts introduced in the first half of the book come together. There is a lot of discussion about primary keys, normalization and constraints. Each of these concepts include simple and effective examples.&lt;/p&gt;  &lt;p&gt;Chapter 10 is a very quick overview of SQL queries. It demonstrates how to create simple queries to get the data out of the database. If you have worked with SQL before you won't see anything new here. Chapter 11 discusses some user interface issues. I liked how she brought the UI design back to the use cases she discussed in the beginning of the book. All of the UI examples were done in MS Access and are very simple.&lt;/p&gt;  &lt;p&gt;The book concludes with some discussion of object-oriented databases and using data within a spreadsheet. Probably very useful for a casual computer user but not something a programmer really needs. The conclusion does a good job of summarizing the material in the book as well as offering recommendations for more information.&lt;/p&gt;  &lt;p&gt;The bottom line: this book is well written for its intended audience casual users to possibly IT professionals. As a database programmer you will want to invest in something more focused on a programmer's prospective. &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6658257106003248170-1490967778250660826?l=blog.advantageevangelist.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?a=jBxu81XzzjM:Gu5FH70i87E:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?a=jBxu81XzzjM:Gu5FH70i87E:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?i=jBxu81XzzjM:Gu5FH70i87E:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?a=jBxu81XzzjM:Gu5FH70i87E:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?i=jBxu81XzzjM:Gu5FH70i87E:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?a=jBxu81XzzjM:Gu5FH70i87E:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?i=jBxu81XzzjM:Gu5FH70i87E:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ViewsFromAnAdvantageEvangelist/~4/jBxu81XzzjM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.advantageevangelist.com/feeds/1490967778250660826/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6658257106003248170&amp;postID=1490967778250660826&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6658257106003248170/posts/default/1490967778250660826?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6658257106003248170/posts/default/1490967778250660826?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ViewsFromAnAdvantageEvangelist/~3/jBxu81XzzjM/book-review-beginning-database-design.html" title="Book Review – Beginning Database Design" /><author><name>Chris</name><uri>http://www.blogger.com/profile/09097498077009855123</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="03929810096958434633" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://blog.advantageevangelist.com/2010/01/book-review-beginning-database-design.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkcHSH47eCp7ImA9WxBXF0k.&quot;"><id>tag:blogger.com,1999:blog-6658257106003248170.post-5990982312367869854</id><published>2010-01-08T07:00:00.000-07:00</published><updated>2010-01-28T22:47:19.000-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-01-28T22:47:19.000-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Gadgets" /><title>Amazon Kindle</title><content type="html">&lt;p&gt;&lt;a href="http://lh6.ggpht.com/_pJ4HkzTKiOA/S2J2YLjz-wI/AAAAAAAAD3w/nigce-2_giI/s1600-h/kindle2_front%5B4%5D.jpg"&gt;&lt;img title="kindle2_front" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; margin-left: 0px; margin-right: 0px; border-right-width: 0px" height="240" alt="kindle2_front" src="http://lh3.ggpht.com/_pJ4HkzTKiOA/S2J2Yj7G_5I/AAAAAAAAD30/u5g3p6ZiA78/kindle2_front_thumb%5B2%5D.jpg?imgmax=800" width="240" align="right" border="0" /&gt;&lt;/a&gt; I was fortunate enough to get a Kindle 2 for Christmas this year. I guess my wife was listening when I kept talking about how cool and useful I thought the device would be. So far I haven't been disappointed it is everything I expected and I am really enjoying the device.&lt;/p&gt;  &lt;p&gt;The best feature is how easy it is to read on the device. The electronic ink screen is almost like reading from ink and paper it doesn't strain your eyes at all. I also love the wireless delivery of books to the device. I have been using the Kindle application for my iPhone for a few months and all the books I had downloaded to my iPhone I had instant access to them on my new Kindle. It even keeps track of where I am at in books between the two devices.&lt;/p&gt;  &lt;p&gt;Another great feature is the ability to download previews of books. This is like browsing a book in the bookstore, you usually get a couple of chapters. If you like the book there is a link to get the rest of the book downloaded directly to the device. There are also lots of free books available from Amazon. Many of them are classics but if you check you can usually find some good bargains. I was able to get Magic Kingdom for Sale, Sold! for free.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_pJ4HkzTKiOA/S2J2Y5tjqkI/AAAAAAAAD34/SYmkRYwNcYU/s1600-h/Latitude%20Jacket%5B4%5D.jpg"&gt;&lt;img title="Latitude Jacket" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; margin-left: 0px; margin-right: 0px; border-right-width: 0px" height="171" alt="Latitude Jacket" src="http://lh4.ggpht.com/_pJ4HkzTKiOA/S2J2ZSaktzI/AAAAAAAAD38/1mG3iqjFNvg/Latitude%20Jacket_thumb%5B2%5D.jpg?imgmax=800" width="240" align="left" border="0" /&gt;&lt;/a&gt; There are a few drawbacks to the device though. The form factor is nice but I think it is a bit too thin and perhaps a bit slick on the back. I felt like I might drop it the first few times I was reading. Although I got used to it I still bought a protective case which adds a bit more bulk making it easier for me to grip it. &lt;/p&gt;  &lt;p&gt;I went with the latitude jacket from M Edge. It zips up securing the Kindle and provides some protection when traveling. It also folds completely back making it easy to hang onto the Kindle. It also has a pouch in the front that is big enough to hold the charging cable which keeps everything together.&lt;/p&gt;  &lt;p&gt;Although the screen is easy to read you do need a good light source. It would be nice if the Kindle included some lights around the screen making it easier to read in low light. However, this would probably significantly reduce the battery life and there are many lights available. &lt;/p&gt;  &lt;p&gt;Another slight downside is the screen refresh. Once the screen is rendered it displays in crisp clear grayscale. Some of the screen saver images are really detailed. However, there is a very noticeable flicker when turning pages and sometimes when navigating through menus. &lt;/p&gt;  &lt;p&gt;Overall I love the device. It will be nice to be able to take several books along with me and have access to others just about everywhere. Amazon is also coming out with an SDK for the Kindle. It will be very interesting to see what kinds of applications become available.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6658257106003248170-5990982312367869854?l=blog.advantageevangelist.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?a=STc0WOaowO0:ORUe3gLCPvE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?a=STc0WOaowO0:ORUe3gLCPvE:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?i=STc0WOaowO0:ORUe3gLCPvE:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?a=STc0WOaowO0:ORUe3gLCPvE:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?i=STc0WOaowO0:ORUe3gLCPvE:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?a=STc0WOaowO0:ORUe3gLCPvE:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?i=STc0WOaowO0:ORUe3gLCPvE:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ViewsFromAnAdvantageEvangelist/~4/STc0WOaowO0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.advantageevangelist.com/feeds/5990982312367869854/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6658257106003248170&amp;postID=5990982312367869854&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6658257106003248170/posts/default/5990982312367869854?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6658257106003248170/posts/default/5990982312367869854?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ViewsFromAnAdvantageEvangelist/~3/STc0WOaowO0/amazon-kindle.html" title="Amazon Kindle" /><author><name>Chris</name><uri>http://www.blogger.com/profile/09097498077009855123</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="03929810096958434633" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://blog.advantageevangelist.com/2010/01/amazon-kindle.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0UGQX44eyp7ImA9WxBXF0w.&quot;"><id>tag:blogger.com,1999:blog-6658257106003248170.post-1499211369907736591</id><published>2010-01-04T07:00:00.000-07:00</published><updated>2010-01-28T15:53:40.033-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-01-28T15:53:40.033-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Events" /><category scheme="http://www.blogger.com/atom/ns#" term="Advantage 10" /><title>An Exciting New Year</title><content type="html">&lt;p&gt;2010 will be an exciting year for the Advantage team. We will be releasing version 10 of Advantage in the first half of the year. As you might expect we will be providing many opportunities for you to see what will be in the latest version of Advantage in the coming months. &lt;/p&gt;  &lt;p&gt;Here is just a quick peek at what will be available&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Version 10 webcast series – begins in February &lt;/li&gt;    &lt;li&gt;Version 10 launch events – Stay tuned for more information &lt;/li&gt;    &lt;li&gt;Version 10 Beta – First half of 2010 &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Along with these major events I will be doing several blog posts and tech tips when the beta is released. You can view the official list of version 10 features on the &lt;a title="Enhancements in Upcoming Releases" href="http://devzone.advantagedatabase.com/dz/content.aspx?key=47" target="_blank"&gt;Advantage Developer Zone&lt;/a&gt;. You can also provide feedback and see which features the R&amp;amp;D team is currently working on by visiting our &lt;a title="Customer Feedback &amp;amp; Ideas for Advantage" href="http://feedback.advantagedatabase.com" target="_blank"&gt;feedback site&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Also stay tuned for the schedule for the next Advantage Technical Summit. This is a great opportunity for you to learn more about Advantage, meet the team and network with other Advantage users.&lt;/p&gt;  &lt;p&gt;I'm looking forward to seeing a lot of Advantage users this year.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6658257106003248170-1499211369907736591?l=blog.advantageevangelist.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?a=H3-6Le-od0Y:yZeFEeKuzWU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?a=H3-6Le-od0Y:yZeFEeKuzWU:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?i=H3-6Le-od0Y:yZeFEeKuzWU:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?a=H3-6Le-od0Y:yZeFEeKuzWU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?i=H3-6Le-od0Y:yZeFEeKuzWU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?a=H3-6Le-od0Y:yZeFEeKuzWU:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?i=H3-6Le-od0Y:yZeFEeKuzWU:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ViewsFromAnAdvantageEvangelist/~4/H3-6Le-od0Y" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.advantageevangelist.com/feeds/1499211369907736591/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6658257106003248170&amp;postID=1499211369907736591&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6658257106003248170/posts/default/1499211369907736591?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6658257106003248170/posts/default/1499211369907736591?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ViewsFromAnAdvantageEvangelist/~3/H3-6Le-od0Y/exciting-new-year.html" title="An Exciting New Year" /><author><name>Chris</name><uri>http://www.blogger.com/profile/09097498077009855123</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="03929810096958434633" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://blog.advantageevangelist.com/2010/01/exciting-new-year.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkUGR3o9eSp7ImA9WxBXF0U.&quot;"><id>tag:blogger.com,1999:blog-6658257106003248170.post-8878503174247188070</id><published>2010-01-01T07:00:00.000-07:00</published><updated>2010-01-29T11:03:46.461-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-01-29T11:03:46.461-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="FAQ" /><title>FAQs – December 2009</title><content type="html">&lt;h3&gt;Advantage Data Architect Command Line&lt;/h3&gt;  &lt;p&gt;You can open a table or data dictionary using a command line argument for Advantage Data Architect. ARC will open and use the default connection settings to connect to Advantage and open the specified object. You will be prompted for your credentials if they are required when a data dictionary is specified. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_pJ4HkzTKiOA/S2Mi_2Lg-lI/AAAAAAAAD4I/hsvaIHrxeK0/s1600-h/ARCCmdLine5.jpg"&gt;&lt;img title="ARC Command Line Arguement" style="border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px" height="202" alt="ARC Command Line Arguement" src="http://lh4.ggpht.com/_pJ4HkzTKiOA/S2MjAXGTYQI/AAAAAAAAD4M/UObid6QOYpw/ARCCmdLine_thumb3.jpg?imgmax=800" width="400" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h3&gt;Clipper with Windows 7&lt;/h3&gt;  &lt;p&gt;Although Windows 7 is not yet officially supported by Advantage, you may need to run an existing Clipper based application on a Windows 7 client. This can be done using Windows 7 XP Mode, which is a virtual Windows XP environment.&lt;/p&gt;  &lt;p&gt;You can get detailed instructions from this knowledgebase &lt;a title="Clipper and Windows 7" href="http://devzone.advantagedatabase.com/dz/Content.aspx?Key=17&amp;amp;RefNo=091216-2239" target="_blank"&gt;article&lt;/a&gt;.&lt;/p&gt;  &lt;h3&gt;Setting NOT NULL Constraints With a CREATE TABLE Statement &lt;/h3&gt;  &lt;p&gt;You can specify constraints on data dictionary bound tables with a CREATE TABLE statement. To do this you must use the CONSTRAINT keyword when specifying the constraint. Some servers support defining constraints without using the CONSTRAINT keyword. In the case of specifying whether or not a field can be NULL there are some slight differences. &lt;/p&gt;  &lt;p&gt;Many data modeling tools generate DDL statements to create a database based on the model. These statements may look like the following.&lt;/p&gt;  &lt;blockquote&gt;CREATE TABLE MyTable ( PK Integer NOT NULL, Name Char(50) NULL, HireDate Date NULL, Salary Money NULL ) &lt;/blockquote&gt;  &lt;p&gt;This query would create a table with four fields and the PK field must contain a value. Some small modifications to the statement are required to work with Advantage. The default is to allow NULL for all fields in a table, therefore you do not need to specify the NULL. Additionally you must use the CONSTRAINT keyword when specifying the NOT NULL constraint. The following statement will create the same table in Advantage.&lt;/p&gt;  &lt;blockquote&gt;CREATE TABLE MyTable ( PK Integer CONSTRAINT NOT NULL, Name Char(50), HireDate Date, Salary Money ) &lt;/blockquote&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6658257106003248170-8878503174247188070?l=blog.advantageevangelist.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?a=gxXrLWYDpWo:DACfxpZcgrI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?a=gxXrLWYDpWo:DACfxpZcgrI:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?i=gxXrLWYDpWo:DACfxpZcgrI:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?a=gxXrLWYDpWo:DACfxpZcgrI:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?i=gxXrLWYDpWo:DACfxpZcgrI:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?a=gxXrLWYDpWo:DACfxpZcgrI:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?i=gxXrLWYDpWo:DACfxpZcgrI:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ViewsFromAnAdvantageEvangelist/~4/gxXrLWYDpWo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.advantageevangelist.com/feeds/8878503174247188070/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6658257106003248170&amp;postID=8878503174247188070&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6658257106003248170/posts/default/8878503174247188070?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6658257106003248170/posts/default/8878503174247188070?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ViewsFromAnAdvantageEvangelist/~3/gxXrLWYDpWo/faqs-december-2009.html" title="FAQs – December 2009" /><author><name>Chris</name><uri>http://www.blogger.com/profile/09097498077009855123</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="03929810096958434633" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://blog.advantageevangelist.com/2010/01/faqs-december-2009.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUAHSH46eSp7ImA9WxNbEU4.&quot;"><id>tag:blogger.com,1999:blog-6658257106003248170.post-8743407467455442314</id><published>2009-11-13T07:00:00.000-07:00</published><updated>2009-11-13T11:42:19.011-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-13T11:42:19.011-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Events" /><title>Madison PC Users Group</title><content type="html">&lt;p&gt;We visited the &lt;a href="http://www.mpcug.org" target="_blank"&gt;Madison PC Users Group&lt;/a&gt; meeting on Wednesday night. There was a good turnout at the meeting and we were able to discuss Advantage Database Server with them. I would like to thank Eric Selje of &lt;a href="http://saltydogllc.com/" target="_blank"&gt;Salty Dog Solutions&lt;/a&gt; for getting us on the schedule. You can get his summary of the meeting &lt;a title="Sybase Advantage Database Server @ MPCUG" href="http://saltydogllc.com/?p=155" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;This meeting had a diverse mix of PC users and developers. We trimmed down our presentation to highlight the Advantage features and we did a lot more discussion of general database topics than usual. However, the group was very friendly and had many good questions during the presentation. &lt;/p&gt;  &lt;p&gt;If your interested in the information that we presented to the Madison user group check out the &lt;a href="http://marketing.ianywhere.com/forms/advantagegettingstartedwebcast" target="_blank"&gt;Getting Started with Advantage&lt;/a&gt; screen cast we did earlier this month.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6658257106003248170-8743407467455442314?l=blog.advantageevangelist.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?a=LeVKftEEiW8:lMI87BN4aUU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?a=LeVKftEEiW8:lMI87BN4aUU:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?i=LeVKftEEiW8:lMI87BN4aUU:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?a=LeVKftEEiW8:lMI87BN4aUU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?i=LeVKftEEiW8:lMI87BN4aUU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?a=LeVKftEEiW8:lMI87BN4aUU:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?i=LeVKftEEiW8:lMI87BN4aUU:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ViewsFromAnAdvantageEvangelist/~4/LeVKftEEiW8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.advantageevangelist.com/feeds/8743407467455442314/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6658257106003248170&amp;postID=8743407467455442314&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6658257106003248170/posts/default/8743407467455442314?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6658257106003248170/posts/default/8743407467455442314?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ViewsFromAnAdvantageEvangelist/~3/LeVKftEEiW8/madison-pc-users-group.html" title="Madison PC Users Group" /><author><name>Chris</name><uri>http://www.blogger.com/profile/09097498077009855123</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="03929810096958434633" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://blog.advantageevangelist.com/2009/11/madison-pc-users-group.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkcFRnc_cSp7ImA9WxNbEU4.&quot;"><id>tag:blogger.com,1999:blog-6658257106003248170.post-5456237967035886180</id><published>2009-11-11T09:33:00.000-07:00</published><updated>2009-11-13T09:33:37.949-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-13T09:33:37.949-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Events" /><title>Chicago FoxPro User Group Meeting</title><content type="html">&lt;p&gt;Last night we presented at the &lt;a href="http://www.chicagofudg.com/"&gt;Chicago FoxPro Users and Developers Group&lt;/a&gt;. We got a great turnout and the meeting lasted nearly three hours. There were many questions about replication and encryption during the meeting. It was great to have such an interactive group to present to.&lt;/p&gt;  &lt;p&gt;We did take a short break during the meeting to have some authentic Chicago style pizza. Which made for a great break during the meeting.&lt;/p&gt;  &lt;p&gt;With everyone energized after the pizza we finished up the meeting by showing some demonstrations of our CloneDBC utility and using Advantage from FoxPro. Again we had great interaction and good questions during the demos and we were able to discuss several use cases and scenarios.&lt;/p&gt;  &lt;p&gt;All of the attendees received a flash drive which included all of the screen casts we have produced for FoxPro developers. You can view these screencasts all together using this &lt;a title="Using Advantage with Visual FoxPro" href="http://devzone.advantagedatabase.com/dz/screencasts/FoxPro/FoxPro.html" target="_blank"&gt;link&lt;/a&gt;. Many other screen casts about Advantage are available on the &lt;a title="Advantage Developer Zone" href="http://Devzone.AdvantageDatabase.com" target="_blank"&gt;Devzone&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;We will be in Madison, WI tonight for another user group meeting.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6658257106003248170-5456237967035886180?l=blog.advantageevangelist.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?a=X8o269hWd2E:JxR1FF0XLys:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?a=X8o269hWd2E:JxR1FF0XLys:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?i=X8o269hWd2E:JxR1FF0XLys:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?a=X8o269hWd2E:JxR1FF0XLys:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?i=X8o269hWd2E:JxR1FF0XLys:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?a=X8o269hWd2E:JxR1FF0XLys:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?i=X8o269hWd2E:JxR1FF0XLys:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ViewsFromAnAdvantageEvangelist/~4/X8o269hWd2E" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.advantageevangelist.com/feeds/5456237967035886180/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6658257106003248170&amp;postID=5456237967035886180&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6658257106003248170/posts/default/5456237967035886180?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6658257106003248170/posts/default/5456237967035886180?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ViewsFromAnAdvantageEvangelist/~3/X8o269hWd2E/chicago-foxpro-user-group-meeting.html" title="Chicago FoxPro User Group Meeting" /><author><name>Chris</name><uri>http://www.blogger.com/profile/09097498077009855123</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="03929810096958434633" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://blog.advantageevangelist.com/2009/11/chicago-foxpro-user-group-meeting.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkAAQ387eyp7ImA9WxNUGEw.&quot;"><id>tag:blogger.com,1999:blog-6658257106003248170.post-3116590658756281652</id><published>2009-11-09T17:59:00.001-07:00</published><updated>2009-11-09T17:59:02.103-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-09T17:59:02.103-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Events" /><title>Chicago FoxPro User Group</title><content type="html">&lt;p&gt;I will be presenting at the &lt;a href="http://www.chicagofudg.com/" target="_blank"&gt;Chicago FoxPro Users and Developers Group&lt;/a&gt; on Tuesday night the 10th of November. We will be discussing using Advantage Database Server with FoxPro. If you are in the Chicago area feel free to drop in. THe meetings are held at &lt;a href="http://www.chicagotechnexus.com/" target="_blank"&gt;Tech Nexus&lt;/a&gt; on the 15th floor of 200 S. Wacker Drive. The meeting runs from 5:30PM until 8:00PM.&lt;/p&gt; &lt;iframe marginwidth="0" marginheight="0" src="http://maps.google.com/maps?f=q&amp;amp;hl=en&amp;amp;geocode=&amp;amp;q=200+S+Wacker+Dr,+Chicago,+Illinois+60606&amp;amp;sll=37.0625,-95.677068&amp;amp;sspn=49.624204,82.265625&amp;amp;ie=UTF8&amp;amp;om=1&amp;amp;hq=&amp;amp;hnear=200+S+Wacker+Dr,+Chicago,+Cook,+Illinois+60606&amp;amp;ll=41.879275,-87.637124&amp;amp;spn=0.011631,0.019248&amp;amp;z=16&amp;amp;output=embed" frameborder="0" width="425" scrolling="no" height="350"&gt;&lt;/iframe&gt;  &lt;br /&gt;&lt;small&gt;&lt;a style="color: #0000ff; text-align: left" href="http://maps.google.com/maps?f=q&amp;amp;hl=en&amp;amp;geocode=&amp;amp;q=200+S+Wacker+Dr,+Chicago,+Illinois+60606&amp;amp;sll=37.0625,-95.677068&amp;amp;sspn=49.624204,82.265625&amp;amp;ie=UTF8&amp;amp;om=1&amp;amp;hq=&amp;amp;hnear=200+S+Wacker+Dr,+Chicago,+Cook,+Illinois+60606&amp;amp;ll=41.879275,-87.637124&amp;amp;spn=0.011631,0.019248&amp;amp;z=16&amp;amp;source=embed"&gt;View Larger Map&lt;/a&gt;&lt;/small&gt;   &lt;p&gt;Here is the description from the Chicago FoxPro User Group Site&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;We have a couple of representatives of Sybase coming to Chicago to demonstrate their Fox-friendly data server -- Advantage; An alternative to pricey backends with an easy conversion route. It should be a good time -- another milestone in a long history of tech twists and turns. From their promotional material at http://www.sybase.com/products/databasemanagement/advantagedatabaseserver: * Flexible data access via either native relational SQL or direct navigational database commands. * Optimized data access for all development environments, including Delphi, Visual Studio, Visual Objects, Visual Basic and more. * Zero administration, easy to install and manage — does not require a database administrator, eliminating high administration costs. * Complete referential integrity support including primary/foreign key definition and cascaded updates and deletes. * Complete server-based transaction processing eliminates database corruption, drastically reducing support costs. * Database security and encryption support. * Fully scalable from local to peer-to-peer to client/server environments — with one set of source code If you have been wondering about a Fox friendly data backend that breaks the 2 GB barrier, come check out the Sybase presentation of Advantage Database Server. First meeting is free. From then on, $10 per meeting or $75 per year. The usual time and place: Tech Nexus 200 S. Wacker Drive, Suite 1500. Tuesday Nov. 10th at 5:30pm (chip in for Pizza and brown bottle beverage.) Here’s the RSVP link: http://bit.ly/3yOzIG As we have worked to keep the FoxPro Users and Developers group a vibrant and interesting colloqium over the years, we notice that new blood comes into the group based on one meeting or subject. I remember making contact with a future employer because he came to see what was up with Crystal Reports in 2002. See you there?&lt;/p&gt;&lt;/blockquote&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6658257106003248170-3116590658756281652?l=blog.advantageevangelist.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?a=Au4Po6hmmxg:eTuiRH6ZBXE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?a=Au4Po6hmmxg:eTuiRH6ZBXE:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?i=Au4Po6hmmxg:eTuiRH6ZBXE:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?a=Au4Po6hmmxg:eTuiRH6ZBXE:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?i=Au4Po6hmmxg:eTuiRH6ZBXE:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?a=Au4Po6hmmxg:eTuiRH6ZBXE:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?i=Au4Po6hmmxg:eTuiRH6ZBXE:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ViewsFromAnAdvantageEvangelist/~4/Au4Po6hmmxg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.advantageevangelist.com/feeds/3116590658756281652/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6658257106003248170&amp;postID=3116590658756281652&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6658257106003248170/posts/default/3116590658756281652?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6658257106003248170/posts/default/3116590658756281652?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ViewsFromAnAdvantageEvangelist/~3/Au4Po6hmmxg/chicago-foxpro-user-group.html" title="Chicago FoxPro User Group" /><author><name>Chris</name><uri>http://www.blogger.com/profile/09097498077009855123</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="03929810096958434633" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://blog.advantageevangelist.com/2009/11/chicago-foxpro-user-group.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEYNQ3kzcCp7ImA9WxNbEU4.&quot;"><id>tag:blogger.com,1999:blog-6658257106003248170.post-4424188657297072961</id><published>2009-11-02T07:00:00.000-07:00</published><updated>2009-11-13T11:16:32.788-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-13T11:16:32.788-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="FAQ" /><title>FAQs October 2009</title><content type="html">&lt;h3&gt;DSN less connection&lt;/h3&gt;  &lt;p&gt;There are two ways to connect to an ODBC driver, using a Data Source Name (DSN) or by providing a connection string. The latter is generally referred to as a DSN Less connection. A DSN Less connection can be useful because there is no need to create a DSN on every system your application is running on. &lt;/p&gt;  &lt;p&gt;A DSN connection string needs at least a Driver and a DataDirectory. When connecting to a data dictionary you will also have to specify a UID (Username) and PWD (Password). When working with free tables we recommend specifying the table type using the DefaultType keyword. See the example DSN connection strings below.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;span style="color: green"&gt;// Connection to an Advantage Data Dictionary&lt;/span&gt;       &lt;br /&gt;Driver=Advantage StreamlineSQL ODBC; DataDirectory=C:\Data\Demo\DemoDictionary.add; Uid=adsuser;Pwd=password;&lt;/p&gt;    &lt;p&gt;&lt;span style="color: green"&gt;// Connecting to a directory of Visual FoxPro tables&lt;/span&gt;       &lt;br /&gt;Driver=Advantage StreamlineSQL ODBC; DataDirectory=C:\Data\VFP ; DefaultType=FoxPro;       &lt;br /&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;All of the properties for an ODBC connection are listed in the&amp;#160; &lt;a title="Advantage ODBC Driver - ODBC Data Source Keys" href="http://devzone.advantagedatabase.com/dz/webhelp/Advantage9.1/mergedProjects/adsodbc/adsodbc/odbc_data_source_keys.htm" target="_blank"&gt;help file&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Permissions Required for Modifying RI Rules&lt;/h3&gt;  &lt;p&gt;You cannot assign rights to Referential Integrity objects within the database. RI rules can only be created in the database by an administrator. Users with ALTER permissions on the tables involved in the RI rule can modify the rule. RI Rules are not visible in the dictionary without the proper permissions. RI rules are enforced for every database user there is no way to exclude users from an RI rule.&lt;/p&gt;  &lt;h3&gt;Using the AdsCommandBuilder&lt;/h3&gt;  &lt;p&gt;The Advantage .NET Data Provider includes a AdsCommandBuilder class which is responsible for creating SQL commands to update, insert and delete data for an AdsDataAdapter. Any statements that are not set directly on the AdsDataAdapter will be generated by the AdsCommandBuilder.&lt;/p&gt;  &lt;p&gt;By default the command builder requires the table to have a primary key in order to generate the additional commands. Ideally you will have primary keys on all of the tables that you use within your application. In practice this is not always the case. If the table does not have a primary key assigned you must set the RequirePrimaryKey property to false.&lt;/p&gt;  &lt;p&gt;The following code demonstrates using the command builder to generate INSERT, UPDATE and DELETE commands for a given AdsDataAdapter.&lt;/p&gt;  &lt;div style="border-right: gray 1px solid; padding-right: 4px; border-top: gray 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: gray 1px solid; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: gray 1px solid; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; background-color: #f4f4f4"&gt;   &lt;div style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;     &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;oCommand.CommandText = &lt;span style="color: #006080"&gt;&amp;quot;SELECT * FROM Customer&amp;quot;&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;daTemp = &lt;span style="color: #0000ff"&gt;New&lt;/span&gt; AdsDataAdapter(oCommand)&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;dtTemp = &lt;span style="color: #0000ff"&gt;New&lt;/span&gt; DataTable()&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;daTemp.Fill(dtTemp)&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;&amp;#160;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #008000"&gt;' build the INSERT, UPDATE and DELETE commands&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;cbAds = &lt;span style="color: #0000ff"&gt;New&lt;/span&gt; AdsCommandBuilder(daTemp)&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;cbADS.RequirePrimaryKey = &lt;span style="color: #0000ff"&gt;False&lt;/span&gt;    &lt;span style="color: #008000"&gt;' Primary key not available on the table&lt;/span&gt;&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;daTemp.InsertCommand = cbAds.GetInsertCommand()&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;daTemp.UpdateCommand = cbAds.GetUpdateCommand()&lt;/pre&gt;

    &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; border-bottom-style: none"&gt;daTemp.DeleteCommand = cbAds.GetDeleteCommand()&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;h3&gt;Error 7156&lt;/h3&gt;

&lt;p&gt;The &lt;a title="7154 Index Automatically Rebuilt" href="http://devzone.advantagedatabase.com/dz/webhelp/Advantage9.1/mergedProjects/adserror/err7xxx/7154_index_automatically_rebuilt.htm" target="_blank"&gt;7156&lt;/a&gt; &amp;quot;Auto Index Rebuild Active&amp;quot; error appears in the error log it most likely occurred because the server was stopped abnormally. For performance reasons indexes are stored in cache and written to disk as necessary. If the Advantage service is stopped abnormally it is possible that all of the index updates have not been written to the index file. &lt;/p&gt;

&lt;p&gt;To correct this situation the Advantage server will automatically rebuild any indexes that it had in cache prior to the cache. This will ensure that the indexes are proper and up to date. It will lock the tables while the index is being rebuilt so you may need to wait a few minutes before connecting clients after restarting a server that has crashed.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6658257106003248170-4424188657297072961?l=blog.advantageevangelist.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?a=oemR0fYiswA:wrEO2iYhU5s:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?a=oemR0fYiswA:wrEO2iYhU5s:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?i=oemR0fYiswA:wrEO2iYhU5s:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?a=oemR0fYiswA:wrEO2iYhU5s:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?i=oemR0fYiswA:wrEO2iYhU5s:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?a=oemR0fYiswA:wrEO2iYhU5s:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?i=oemR0fYiswA:wrEO2iYhU5s:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ViewsFromAnAdvantageEvangelist/~4/oemR0fYiswA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.advantageevangelist.com/feeds/4424188657297072961/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6658257106003248170&amp;postID=4424188657297072961&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6658257106003248170/posts/default/4424188657297072961?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6658257106003248170/posts/default/4424188657297072961?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ViewsFromAnAdvantageEvangelist/~3/oemR0fYiswA/faqs-october-2009.html" title="FAQs October 2009" /><author><name>Chris</name><uri>http://www.blogger.com/profile/09097498077009855123</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="03929810096958434633" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://blog.advantageevangelist.com/2009/11/faqs-october-2009.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0IDQn0-eyp7ImA9WxNWGUw.&quot;"><id>tag:blogger.com,1999:blog-6658257106003248170.post-7822897309986964002</id><published>2009-10-18T18:19:00.001-06:00</published><updated>2009-10-18T18:19:33.353-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-18T18:19:33.353-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Events" /><title>SWFox Final Day</title><content type="html">&lt;p&gt;The final day of Southwest Fox began at included repeats of sessions from the previous days. The conference schedules each session twice to give all the attendees plenty of opportunity to get to the sessions they want to hear. I really like this strategy, I have been to some conferences where there are two sessions that I want to see scheduled at the same time. Just another one of those nice touches that make this a really fun conference to attend.&lt;/p&gt;  &lt;p&gt;&lt;img title="SWFox_Giveaways" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; margin: 0px 0px 0px 10px; border-right-width: 0px" height="180" alt="SWFox_Giveaways" src="http://lh6.ggpht.com/_pJ4HkzTKiOA/StuwjUy9t7I/AAAAAAAAD3I/Mehd61pUUUU/SWFox_Giveaways12.jpg?imgmax=800" width="240" align="right" border="0" /&gt;I haven't mentioned our giveaways for this year's conference yet. This year our excellent marketing department was able to get us several items to distribute from our booth. We had some great mini cars that include a spring so you can pull them back and have them zoom over any flat surface. We also had a bunch of nerf-like missiles/grenades which came in very handy for the ambush of Doug Hennig on Saturday. Finally we gave away 1GB flash drives which included a bunch of information about Advantage for FoxPro developers.&lt;/p&gt;  &lt;p&gt;&lt;img title="Kindle 2" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; margin: 0px 10px 0px 0px; border-right-width: 0px" height="240" alt="Kindle 2" src="http://lh6.ggpht.com/_pJ4HkzTKiOA/Stuwk6gn9jI/AAAAAAAAD3M/NjqwTbVC5pE/Kindle_AdsDev6.jpg?imgmax=800" width="189" align="left" border="0" /&gt;In addition to our free giveaways we also had an Amazon Kindle 2 to give away. We collected names during the conference and had Rick Schummer draw for the Kindle during the closing session. The lucky winner , was excited to take away his bran new Kindle 2 from the conference. Note that Advantage Database Server a Developer's guide is not available on the Kindle, however, it is included as a part of the 9.x help file. &lt;/p&gt;  &lt;p&gt;I would like to thank the Southwest Fox staff for once again putting on an excellent conference. I always enjoy talking with people from the FoxPro community and this is the biggest FoxPro event in North America. I am already thinking about what we can do for next year's conference.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6658257106003248170-7822897309986964002?l=blog.advantageevangelist.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?a=VFmmYO7P3tc:AmY_vxAgvd0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?a=VFmmYO7P3tc:AmY_vxAgvd0:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?i=VFmmYO7P3tc:AmY_vxAgvd0:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?a=VFmmYO7P3tc:AmY_vxAgvd0:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?i=VFmmYO7P3tc:AmY_vxAgvd0:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?a=VFmmYO7P3tc:AmY_vxAgvd0:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?i=VFmmYO7P3tc:AmY_vxAgvd0:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ViewsFromAnAdvantageEvangelist/~4/VFmmYO7P3tc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.advantageevangelist.com/feeds/7822897309986964002/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6658257106003248170&amp;postID=7822897309986964002&amp;isPopup=true" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6658257106003248170/posts/default/7822897309986964002?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6658257106003248170/posts/default/7822897309986964002?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ViewsFromAnAdvantageEvangelist/~3/VFmmYO7P3tc/swfox-final-day.html" title="SWFox Final Day" /><author><name>Chris</name><uri>http://www.blogger.com/profile/09097498077009855123</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="03929810096958434633" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total><feedburner:origLink>http://blog.advantageevangelist.com/2009/10/swfox-final-day.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkMMQX0-eyp7ImA9WxNWGU0.&quot;"><id>tag:blogger.com,1999:blog-6658257106003248170.post-7935067070310588348</id><published>2009-10-17T22:01:00.000-06:00</published><updated>2009-10-18T17:28:00.353-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-18T17:28:00.353-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Events" /><title>Southwest Fox Day Two</title><content type="html">&lt;p&gt;Day two of Southwest Fox had a much lighter schedule than day one. There were only twenty nine sessions scheduled. As you can imagine attendance was down just a bit for the 8:30 am sessions but by 10 everyone was back into learning mode. The afternoon sessions were very well attended.&lt;/p&gt;  &lt;p&gt;I presented a session on Advantage Database Server right before lunch. My presentation was similar to the presentations that I have been giving at various FoxPro user groups over the past year. My presentation highlights the capabilities of the server along with demonstrations of using CloneDBC and concurrent access to the data. There were many good questions during the session and I got a lot of positive feedback about the product.&lt;/p&gt;  &lt;p&gt;One of the really fun parts of the conference is the family like atmosphere. On the final session of the day an attack was planned by Craig Boyd on Doug Hennig. All of the people attending Craig's session were issued Nerf guns and Sybase iAnywhere Nerf grenades. Craig then lead the charge into Doug's session. The fight was over quickly given that the only armed parties were from Craig's session. Although the scene was brutal, hundreds of Nerf darts were scattered around, order was quickly restored and the sessions continued. See the video here.&lt;/p&gt;  &lt;p&gt;Although there is no dinner provided on the second night of the conference many of the attendees look forward to the annual trip to &lt;a href="http://www.f1racefactory.com/drivers_lounge.php"&gt;F1 Race Factory&lt;/a&gt; here in Phoenix. There is a very intense rivalry between many of the regular speakers at the conference. It is the source of a lot of trash talk on Twitter prior to the conference and many hallway challenges during the conference. &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6658257106003248170-7935067070310588348?l=blog.advantageevangelist.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?a=OleYE1yk-iQ:_EkIbKwN334:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?a=OleYE1yk-iQ:_EkIbKwN334:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?i=OleYE1yk-iQ:_EkIbKwN334:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?a=OleYE1yk-iQ:_EkIbKwN334:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?i=OleYE1yk-iQ:_EkIbKwN334:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?a=OleYE1yk-iQ:_EkIbKwN334:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?i=OleYE1yk-iQ:_EkIbKwN334:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ViewsFromAnAdvantageEvangelist/~4/OleYE1yk-iQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.advantageevangelist.com/feeds/7935067070310588348/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6658257106003248170&amp;postID=7935067070310588348&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6658257106003248170/posts/default/7935067070310588348?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6658257106003248170/posts/default/7935067070310588348?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ViewsFromAnAdvantageEvangelist/~3/OleYE1yk-iQ/southwest-fox-day-two.html" title="Southwest Fox Day Two" /><author><name>Chris</name><uri>http://www.blogger.com/profile/09097498077009855123</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="03929810096958434633" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://blog.advantageevangelist.com/2009/10/southwest-fox-day-two.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUIESHo7fCp7ImA9WxNWGEw.&quot;"><id>tag:blogger.com,1999:blog-6658257106003248170.post-1907612807684442357</id><published>2009-10-16T22:29:00.000-06:00</published><updated>2009-10-17T16:11:49.404-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-10-17T16:11:49.404-06:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Events" /><title>SWFox Day One</title><content type="html">&lt;p&gt;Day one of Southwest Fox consisted of forty sessions that started at 8:30 am and ended at 9:30 pm. The organizers do an incredible job creating a schedule and providing lots of great content. Each session is presented twice so all the attendees have an opportunity to see all the sessions that they want to. I am impressed each year at how well everything works.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_pJ4HkzTKiOA/StpA9mIOEPI/AAAAAAAAD3A/XE8c0mVBiQ8/s1600-h/Booth_Setup%5B3%5D.jpg"&gt;&lt;img title="Booth_Setup" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; margin: 0px 0px 0px 5px; border-right-width: 0px" height="184" alt="Booth_Setup" src="http://lh5.ggpht.com/_pJ4HkzTKiOA/StpA-nSMPOI/AAAAAAAAD3E/bmh3T4ItjaY/Booth_Setup_thumb%5B1%5D.jpg?imgmax=800" width="244" align="right" border="0" /&gt;&lt;/a&gt; I spent most of my day talking to the attendees at our booth in the exhibit area. Since this is our third year I have been seeing a lot of familiar faces. The FoxPro community is a very tight knit group and many of the attendees have been coming to this conference for years. It has been great chatting with people that we have met at various FoxPro User Group Meetings over the past year.&lt;/p&gt;  &lt;p&gt;I was able to break away from the booth to attend the session on Alaska Xbase++. The presentation was done by&amp;#160; , the chief architect and president of the company. Xbase++ has big plans to support the FoxPro community by adding support for the VFP language to the Xbase++ compiler. This could become another way for FoxPro developers to work with Advantage since Alaska provides a native Advantage Data Driver.&lt;/p&gt;  &lt;p&gt;Ken Levy presented a session on Advantage where he discussed the benefits of using Advantage with your FoxPro applications. Ken discussed the benefits of moving to client/server specifically using Advantage. He demonstrated the use of the bran new &lt;a href="http://blog.advantageevangelist.com/2009/10/clonedbc-available-with-advantage-oledb.html"&gt;CloneDBC&lt;/a&gt; utility to create an Advantage data dictionary. He then showed accessing the data concurrently from a simple Visual FoxPro application and a Visual Studio application.&lt;/p&gt;  &lt;p&gt;Ken also discussed some code samples which were produced by VFP Conversions. There are two samples one is a VFP9 application and the other is a C# application. The C# application uses the Advantage .NET Data provider to access the data concurrently with the native VFP application. You can download these samples using this &lt;a title="VFP Conversion Advantage Samples" href="http://www.vfpconversion.com/sybase.aspx"&gt;link&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;After the sessions we had a very nice dinner provided by the conference. During the dinner many giveaways were handed out to attendees. After dinner there was one last group of sessions for the hard core conference goers. Still one and a half days left in this year's conference. &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6658257106003248170-1907612807684442357?l=blog.advantageevangelist.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?a=uQZLVPwfzgs:VoRS7KPzk00:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?a=uQZLVPwfzgs:VoRS7KPzk00:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?i=uQZLVPwfzgs:VoRS7KPzk00:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?a=uQZLVPwfzgs:VoRS7KPzk00:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?i=uQZLVPwfzgs:VoRS7KPzk00:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?a=uQZLVPwfzgs:VoRS7KPzk00:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ViewsFromAnAdvantageEvangelist?i=uQZLVPwfzgs:VoRS7KPzk00:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ViewsFromAnAdvantageEvangelist/~4/uQZLVPwfzgs" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://blog.advantageevangelist.com/feeds/1907612807684442357/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6658257106003248170&amp;postID=1907612807684442357&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6658257106003248170/posts/default/1907612807684442357?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6658257106003248170/posts/default/1907612807684442357?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ViewsFromAnAdvantageEvangelist/~3/uQZLVPwfzgs/swfox-day-one.html" title="SWFox Day One" /><author><name>Chris</name><uri>http://www.blogger.com/profile/09097498077009855123</uri><email>noreply@blogger.com</email><gd:extendedProperty name="OpenSocialUserId" value="03929810096958434633" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://blog.advantageevangelist.com/2009/10/swfox-day-one.html</feedburner:origLink></entry></feed>
