<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-36681721</id><updated>2011-11-25T13:35:41.907-05:00</updated><category term='Visual DataFlex'/><category term='No Contract Uniform Service'/><category term='DOS to Windows Conversion'/><category term='Subclassing a SL in Visual DataFlex'/><category term='Visual DataFlex Instruction'/><category term='NEDC'/><category term='Vista Dialer'/><category term='Visual DataFlex written by Applause Software'/><category term='Modern Sales Theory'/><category term='Employee Paid Uniform Service'/><category term='Linen Rental Service'/><category term='Applause Software'/><category term='Joe Coley'/><category term='Visual DataFlex Organization (Instruction)'/><category term='Uniform Rental Sales System'/><category term='Vista TAPI'/><category term='Data Dictionary Stored Procedure Flowchart'/><category term='Freeware Visual DataFlex RoloFLEX by Applause Software'/><category term='Microsoft TAPI'/><category term='Peter A Donovan'/><category term='Freeware Visual DataFlex'/><category term='Uniform Rental Service'/><category term='Visual DataFlex Rewrite: Visual DataFlex or Visual Basic?'/><category term='Visual DataFlex Class'/><category term='The Funnel Theory'/><category term='EMail Marketing'/><category term='Publicity for Visual DataFlex'/><category term='Visual DataFlex Studio'/><category term='Linen Rental Sales System'/><category term='Northeast DataFlex Consortium'/><category term='SaveHeader Function for Visual DataFlex 12'/><category term='Visual DataFlex Selection List Programming by Applause Software'/><title type='text'>Visual DataFlex Blog</title><subtitle type='html'>News and Features regarding Development in Visual DataFlex Studio(Windows database application development), Visual DataFlex WebApp (web database sharing and info collecting), and Visual DataFlex Electos (dynamic content publishing)</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://applausesoftware.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36681721/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://applausesoftware.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>ApplauseSoftware</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_WQ1-wum4QJo/SyOt495ekYI/AAAAAAAAAKs/InJSnkrwZxc/S220/peterd.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>36</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-36681721.post-3112279282377148193</id><published>2009-05-24T12:30:00.000-04:00</published><updated>2009-05-24T12:31:10.743-04:00</updated><title type='text'>RoloFlex PRO 2009 based on VDF 15.0</title><content type='html'>I am announcing the release of RoloFlex 2009 due out within 30 days...&lt;br /&gt;&lt;br /&gt;RoloFlex Pro 2009 contains upgrades for virtually ALL the suggestions we have had for RoloFlex:&lt;br /&gt;&lt;br /&gt;New Features Available Today:&lt;br /&gt;========================&lt;br /&gt;*  Import EMail Contacts into RoloFlex from Outlook, GMail, Yahoo, AOL, etc.&lt;br /&gt;*  Birthdays of People entry: and reminders&lt;br /&gt;*  Customizable categories for attributes [ Source, Category, Rep, Status are all RENAMABLE now ]&lt;br /&gt;*  Default the values of the attribues [ Source, Category, Rep, Status ] to make data entry faster&lt;br /&gt;*  Default the CITY, STATE, POSTAL, etc.&lt;br /&gt;*  Allow PHOTOS of people to be any size .JPG, etc. image (not just small bitmaps)&lt;br /&gt;*  Create your OWN Call History Contact Types [ PHONE, MAIL, etc. ]&lt;br /&gt;*  Date of Last Contact automatically saved.&lt;br /&gt;*  Reports on CONTACT ACTIVITY available.&lt;br /&gt;&lt;br /&gt;ALSO:  There are many small improvements, touchups, and features such as Microsoft Office MailMerge.&lt;br /&gt;&lt;br /&gt;Here is the VIDEO INTRO on RoloFlex PRO :  click this link to play the Rolo* Pro Video:   &lt;a href="http://www.RoloFlex.Biz/SitebuilderContent/SitebuilderFiles/RoloFlex2009.wmv"&gt;Click For RoloFlex2009 Video&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;As a RoloFlex user, you know that the software is highly effective, reliable, and polished:  This is a fantastic new release, packed with features.&lt;br /&gt;&lt;br /&gt;All RoloFlex Users will receive an upgrade offer within 30 days.&lt;br /&gt;&lt;br /&gt;Regards,&lt;br /&gt;Peter A Donovan&lt;br /&gt;Applause Software of Boston, MA USA&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36681721-3112279282377148193?l=applausesoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://applausesoftware.blogspot.com/feeds/3112279282377148193/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=36681721&amp;postID=3112279282377148193' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36681721/posts/default/3112279282377148193'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36681721/posts/default/3112279282377148193'/><link rel='alternate' type='text/html' href='http://applausesoftware.blogspot.com/2009/05/roloflex-pro-2009-based-on-vdf-150.html' title='RoloFlex PRO 2009 based on VDF 15.0'/><author><name>ApplauseSoftware</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_WQ1-wum4QJo/SyOt495ekYI/AAAAAAAAAKs/InJSnkrwZxc/S220/peterd.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36681721.post-8408091854696547050</id><published>2008-08-11T21:41:00.001-04:00</published><updated>2008-08-11T22:06:35.442-04:00</updated><title type='text'>OOPS Proper:  What's an obtainable goal for centralized code in Visual DataFlex?</title><content type='html'>&lt;div&gt;*Click on image to enlarge please...&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_WQ1-wum4QJo/SKDsx-9xNWI/AAAAAAAAAG4/1j0T-xOLRkA/s1600-h/OOPS+Visual+DataFlex+Code+Example.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5233443110464337250" style="CURSOR: hand" alt="" src="http://3.bp.blogspot.com/_WQ1-wum4QJo/SKDsx-9xNWI/AAAAAAAAAG4/1j0T-xOLRkA/s400/OOPS+Visual+DataFlex+Code+Example.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="font-family:verdana;font-size:130%;"&gt;OOPS proper coding goal is "no code in objects except property settings", is this obtainable?&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="font-family:Verdana;font-size:130%;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="font-family:Verdana;font-size:130%;"&gt;The Visual DataFlex Studio and Database Builder utilities are the tools we use to build applications, and the coding style used in actual practice varies from "artist" to "artist" as much as a painting style does.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="font-family:Verdana;font-size:130%;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="font-family:Verdana;font-size:130%;"&gt;While the true goal of object oriented style of programming is to truly centralize code, and to produce an application where all customization departure from the basic tools we use should reside in classes, not objects. Further to this, each class has property settings for given or endowed abilities which allow us to re-use the class as instantiated in an object in different settings with different results depending on need.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="font-family:Verdana;font-size:130%;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="font-family:Verdana;font-size:130%;"&gt;Here is an example of such "art" in the fact that a module of data entry is first programmed with object code for the desired result, tested.... and then the code is moved to the classes involved for centralization and standardization. Standardization is a fundimental concept where you desire the same behavior in all modules or a programmed variance of same behavior, all set in a central place.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="font-family:Verdana;font-size:130%;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="font-family:Verdana;font-size:130%;"&gt;Visual DataFlex allows the programming and testing of object code rather than specifying that all instantiated objects be pure classes.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="font-family:Verdana;font-size:130%;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="font-family:Verdana;font-size:130%;"&gt;The "art" to this simple example as illustrated can be taken to many varying ways of implementation. One of the true advantages of VDF is the concept of multiple-inheritance.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="font-family:Verdana;font-size:130%;"&gt;Here's the challenge that multiple-inheritance solves: &lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="font-family:Verdana;font-size:130%;"&gt;We have a property setting "Set Auto_Clear_DEO_State to False" and a function SAVEHEADER which really belong both to the cWSdbView and cWSdbModalDialog class as well as possibly a cWSdbTabPage.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="font-family:Verdana;font-size:130%;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="font-family:Verdana;font-size:130%;"&gt;Shall we type these into the three classes three times? I think not! Remember our rule of thumb where "when you type code twice, it's time to rethink your methodology", and here's a solution using a MIXIN class. The MIXIN class is "mixed into" a class layer &lt;em&gt;in addition to the regular superclass inheritance&lt;/em&gt;. Here's how.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:Verdana;font-size:130%;"&gt;&lt;/span&gt; &lt;/div&gt;&lt;div&gt;&lt;span style="font-family:Verdana;font-size:130%;"&gt;click on image to enlarge please&lt;/span&gt;&lt;/div&gt;&lt;a href="http://3.bp.blogspot.com/_WQ1-wum4QJo/SKDv6idCQmI/AAAAAAAAAHA/JGzXsRuP-Fo/s1600-h/oops+Visual+DataFlex+Code+Example2.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5233446555964555874" style="CURSOR: hand" alt="" src="http://3.bp.blogspot.com/_WQ1-wum4QJo/SKDv6idCQmI/AAAAAAAAAHA/JGzXsRuP-Fo/s400/oops+Visual+DataFlex+Code+Example2.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="font-family:Verdana;font-size:130%;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&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/36681721-8408091854696547050?l=applausesoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://applausesoftware.blogspot.com/feeds/8408091854696547050/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=36681721&amp;postID=8408091854696547050' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36681721/posts/default/8408091854696547050'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36681721/posts/default/8408091854696547050'/><link rel='alternate' type='text/html' href='http://applausesoftware.blogspot.com/2008/08/oops-proper-whats-obtainable-goal-for.html' title='OOPS Proper:  What&apos;s an obtainable goal for centralized code in Visual DataFlex?'/><author><name>ApplauseSoftware</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_WQ1-wum4QJo/SyOt495ekYI/AAAAAAAAAKs/InJSnkrwZxc/S220/peterd.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_WQ1-wum4QJo/SKDsx-9xNWI/AAAAAAAAAG4/1j0T-xOLRkA/s72-c/OOPS+Visual+DataFlex+Code+Example.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36681721.post-2979616599384760187</id><published>2008-08-11T12:20:00.000-04:00</published><updated>2008-08-11T12:50:57.012-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Visual DataFlex'/><category scheme='http://www.blogger.com/atom/ns#' term='Visual DataFlex Instruction'/><category scheme='http://www.blogger.com/atom/ns#' term='Visual DataFlex Organization (Instruction)'/><category scheme='http://www.blogger.com/atom/ns#' term='Applause Software'/><title type='text'>Visual DataFlex - Organization Foundation</title><content type='html'>&lt;a href="http://1.bp.blogspot.com/_WQ1-wum4QJo/SKBtXantH4I/AAAAAAAAAGw/QWHRCdQmzEU/s1600-h/VDFApplicationSchema.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5233303016054792066" style="CURSOR: hand" alt="" src="http://1.bp.blogspot.com/_WQ1-wum4QJo/SKBtXantH4I/AAAAAAAAAGw/QWHRCdQmzEU/s400/VDFApplicationSchema.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="font-family:verdana;"&gt;Visual DataFlex:&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;an outline:&lt;/div&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;- Workspace&lt;/li&gt;&lt;br /&gt;&lt;li&gt;- Project&lt;/li&gt;&lt;br /&gt;&lt;li&gt;- Layers&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;div&gt;Workspace:&lt;/div&gt;&lt;br /&gt;&lt;div&gt;A Workspace is defined as an organization of resources supporting an application in subfolders defined by the workspace. Standard Layout of a Workspace (with no modification) is;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;- AppHtml - .asp code and supporting images plus cascading style sheets, etc.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;- AppSrc - windows source code&lt;/li&gt;&lt;br /&gt;&lt;li&gt;- Bitmaps - images&lt;/li&gt;&lt;br /&gt;&lt;li&gt;- Data&lt;/li&gt;&lt;br /&gt;&lt;li&gt;- DDSrc - data dictionary class layers and table definitions&lt;/li&gt;&lt;br /&gt;&lt;li&gt;- Help (blank)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;- IDESrc - vdf class information&lt;/li&gt;&lt;br /&gt;&lt;li&gt;- Programs - executables and workspace definition file plus debugging tracer code&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;div&gt;So, with the advent of Vista, and the desire not to place our live app within the PROGRAMS folder, an actual deploy model would look like:&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;C:\Visual DataFlex Projects\MyWorkspaceName .... with subfolders.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;PROJECT: A project is defined as a workspace application (there may be more than one project inside a workspace) executable.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;A Project is usually a MDI (multiple dialog interface) application with the following layer structure:&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;DESKTOP:=================================&lt;/div&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;- The Desktop is the name for anything outside the inner containers&lt;/li&gt;&lt;br /&gt;&lt;li&gt;- The Desktop contains an application object which defines the paths and behaviors associated with the application.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;- The Desktop contains: the MAIN panel, the CodeJock skinning, and possbily a Login Panel?&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;p&gt;MAIN: ====================================&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;The Main is a SDI panel which functions as a main container object for the application.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;The Main contains the MENU&lt;/li&gt;&lt;br /&gt;&lt;li&gt;The Main contains the CLIENT_AREA : the container for interactive modules/objects.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;p&gt;APPCLIENT_AREA:==============================&lt;/p&gt;&lt;br /&gt;&lt;p&gt;The APPclient_area is the working ground of all major components of your system.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;It contains:&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Data Entry Forms&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Reports&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Selection Lookup Lists&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Modal Dialogs&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Business Process Objects&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Resources such as methods and classes&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;p&gt;All Together, the workspace, as described, is designed to let delegation, encapsulation, and polymorphism happen within the context that the modules and sub_objects are arranged.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;All Together, it looks like the picture above: click on image for larger view!&lt;/p&gt;&lt;p&gt;Regards,&lt;/p&gt;&lt;p&gt;Peter A Donovan, Applause Software&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.applausesoftware.com/"&gt;http://www.applausesoftware.com/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&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/36681721-2979616599384760187?l=applausesoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://applausesoftware.blogspot.com/feeds/2979616599384760187/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=36681721&amp;postID=2979616599384760187' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36681721/posts/default/2979616599384760187'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36681721/posts/default/2979616599384760187'/><link rel='alternate' type='text/html' href='http://applausesoftware.blogspot.com/2008/08/visual-dataflex-organization-foundation.html' title='Visual DataFlex - Organization Foundation'/><author><name>ApplauseSoftware</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_WQ1-wum4QJo/SyOt495ekYI/AAAAAAAAAKs/InJSnkrwZxc/S220/peterd.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_WQ1-wum4QJo/SKBtXantH4I/AAAAAAAAAGw/QWHRCdQmzEU/s72-c/VDFApplicationSchema.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36681721.post-1559729241143489106</id><published>2008-07-29T12:58:00.001-04:00</published><updated>2008-07-29T13:03:18.020-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DOS to Windows Conversion'/><category scheme='http://www.blogger.com/atom/ns#' term='Applause Software'/><category scheme='http://www.blogger.com/atom/ns#' term='Peter A Donovan'/><title type='text'>DOS to Windows anyone?</title><content type='html'>&lt;span style="font-size:180%;"&gt;&lt;strong&gt;DOS to Windows Conversion: a facelift?&lt;/strong&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;What advantages does a DOS to Windows Conversion hold, and why should I fix what isn’t broken?&lt;br /&gt;&lt;br /&gt;The title and subtitle indicates corporate thinking as I have heard it, from many of the clients I know who have a DOS product fueling their company’s IT needs. The fact of the matter is that there is apprehension to move from a proven software platform. So why invest?&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;“The most important development in computer technology since the IBM PC” &lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;What was this magazine cover article describing? Not a DOS to windows move! It was describing the onset and implementation of OOPS programming technology that I glanced at while marking time in a company’s waiting room many years ago! More important than nice windows interfaces and gui screen design! The fact is, that both DOS and Windows can be programmed with “Object Oriented Programming Style” but the odds that your DOS program has this structure is very low. Here’s my spin on the top 10 ways this affects your life:&lt;br /&gt;&lt;br /&gt;1. Spaghetti Code VS OOPS:&lt;br /&gt;The older style of dos programming has become known as “spaghetti code” when seen in contrast to oops. The basic structure, layout, and philosophy of coding software changed in a wave of approval that is now standard with every modern programming language.&lt;br /&gt;&lt;br /&gt;2. Centralized Coding:&lt;br /&gt; The new style of programming impacts your cost to adjust business rules in a huge cost savings factor. The cost savings come mostly by being able to release new versions without unwanted side effects, and also in terms of IT time to create, test, and deploy.&lt;br /&gt;&lt;br /&gt;3. Don’t Fix it if it isn’t broke!:&lt;br /&gt; This stand on computer technology was caused by spaghetti code! With “spaghetti code”/DOS standard technology, a change in business rules was feared because it generally caused an upheaval in operations. With DOS standard technology, your system is comprised of hundreds of individual standalone executables running from a menu structure where each of the programs contains duplicate code to perform similar functions along with its look and feel individually set.&lt;br /&gt;&lt;br /&gt;4. Training:&lt;br /&gt; Compare the training necessary to learn the function keys that operate DOS with a simple OOPS menu (generally regarded as a windows menu, but also available in dos) where the function you want to perform “enter payments” is listed from a dropdown menu instead of “doing 4-2-5-7 as my first job in the morning”. A standard oops interface includes a FILE/SAVE option along with standard Microsoft keys that are known to many users, and once trained in them apply to “all windows and web products” – not an exercise in teaching company defined keystrokes!&lt;br /&gt;&lt;br /&gt;5. Standardization:&lt;br /&gt; New technology standardizes the look and feel of your individual modules inside one (or just a few) programs, not only from the “windows look” but in the way that the business rules apply such as;&lt;br /&gt;· Whether the company name of customers is labeled “Customer Name:” or “Client:” or “Name:”.&lt;br /&gt;· Whether the company name of customers is “required”, or “capslock”, or “able to be changed by the user”.&lt;br /&gt;· Whether the “Apply Finance Charges” option accepts only a Y/N value and whether the value for a new customer is defaulted to “Y” or not… and how!&lt;br /&gt;· Whether one can delete a payment or not!&lt;br /&gt;· Whether these kind of options must be re-coded for every module or not!&lt;br /&gt;&lt;br /&gt;6. Combining Similar Functionality:&lt;br /&gt; One of the most visible changes of a conversion to oops takes similar DOS executables such as “Enter Sales Order”, “Change Sales Order”, “Delete Sales Order”, etc. and moves them into one program. The ability to do this is the power of oops centralized coding and new windows technology which just simply outperforms DOS technology and spaghetti code.&lt;br /&gt;&lt;br /&gt;7. Transaction Control:&lt;br /&gt; One of the most basic data related improvements introduced into database technology since most DOS programs were written is transaction control, where “half baked” transactions that partially succeed, leaving a cleanup job for IT are totally eliminated.&lt;br /&gt;&lt;br /&gt;8. Speed:&lt;br /&gt; It is true that DOS speed is unmatched by windows technology. It’s not true that this is a significant advantage considering that the reason for dos speed is partially that the transactions do not flow thru centralized business rules to perform their database actions, but simply “write to disk” directly!&lt;br /&gt;&lt;br /&gt;9. Maintenance:&lt;br /&gt; Once your system is retrofitted to use oops programming style and structure, changing a business rule such as the way a sales order is calculated is a matter of changing the business layer rule in one spot, instead of updating “sales order entry”, “change sales orders”, “print unshipped orders”, and “update order as delivered”. The tongue in cheek saying for this amazing new technology is; “One changes the business rule in just one spot, and the resulting code is either perfect system wide, or wrong system wide!”.&lt;br /&gt;&lt;br /&gt;10. Investing in Technology:&lt;br /&gt; The time to invest in a DOS to windows conversion is overdue. If you’ve waited for the “wrinkles to smooth”, the “bugs to be fixed”, or determined in the past that the “investment” wasn’t worth the result, then I believe you are on the brink of extinction, because the software engineers that understand BOTH the dos and windows technology (and hence the ability to render a modern version from the old true code) are on the verge of retirement! If you wait, it’s a total rewrite to face.&lt;br /&gt;&lt;br /&gt;Summary:&lt;br /&gt;These are my top ten reasons to consider a DOS to Windows conversion, and if you started with a goal to port some of your functionality to the web, please consider the windows conversion a half-step there, because most platforms/languages have an extension of the business rule layer that is applicable to the web, or usable by a webapp so that part of your cost is a move closer to internet presence, whether it be customer data sharing, order entry, part availability, or simply customer and prospect information gathering.&lt;br /&gt;&lt;br /&gt;About the Author:&lt;br /&gt;By: Peter A Donovan&lt;br /&gt;Applause Software of Boston, USA &lt;a href="http://www.applausesoftware.com/"&gt;http://www.applausesoftware.com/&lt;/a&gt;&lt;br /&gt;Member in good standing of the NEDC Programming Group: &lt;a href="http://www.nedataflex.com/"&gt;http://www.nedataflex.com/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Peter started his IT career as a combined sales executive/custom application developer the year following the release of the IBM PC. After similar corporate positions, where he was responsible for both Sales and Programming responsibilities, he obtained a position with a software distributor/authorized factory technical service center, where he excelled in custom application development for many different industrial and commercial markets and also travelled throughout the USA, Canada, Europe, and Africa training IT staffs in correct implementation of OOPS foundation coding technology and data dictionary technology.&lt;br /&gt;Currently an independent IT consultant specializing in database software, Peter is actively involved in bidding on new challenges, maintaining a customer base, and publishing a freeware database contact manager “rolodex style” called RoloFLEX as a showpiece for his business.&lt;br /&gt;&lt;a href="http://www.roloflex.biz/"&gt;www.RoloFlex.Biz&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36681721-1559729241143489106?l=applausesoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://applausesoftware.blogspot.com/feeds/1559729241143489106/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=36681721&amp;postID=1559729241143489106' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36681721/posts/default/1559729241143489106'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36681721/posts/default/1559729241143489106'/><link rel='alternate' type='text/html' href='http://applausesoftware.blogspot.com/2008/07/dos-to-windows-anyone.html' title='DOS to Windows anyone?'/><author><name>ApplauseSoftware</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_WQ1-wum4QJo/SyOt495ekYI/AAAAAAAAAKs/InJSnkrwZxc/S220/peterd.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36681721.post-6212425163837876521</id><published>2008-07-24T03:34:00.000-04:00</published><updated>2008-07-24T03:38:35.756-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Visual DataFlex Instruction'/><category scheme='http://www.blogger.com/atom/ns#' term='Applause Software'/><category scheme='http://www.blogger.com/atom/ns#' term='Visual DataFlex Class'/><title type='text'>Visual DataFlex Class~ Instruction via Internet</title><content type='html'>&lt;strong&gt;Internet Or In-Person Instruction In Visual DataFlex: &lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;em&gt;&lt;span style="color:#3366ff;"&gt;*Highly Competitive with Data Access Rates!&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;"The wide open possiblities of coding techniques can be explained in conceptual terms so that you code to form a solid foundation for your application based on correct OOPS programming concepts."&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Internet Instruction Benefits:&lt;br /&gt;&lt;/strong&gt;"a 10-20 hour course @ $80 per hour using your application will cover all of the topics of a classroom environment without the travel, hotel, and inconvenience and produce usable and functional code for you to implement at your company and use as a reference".&lt;br /&gt;&lt;br /&gt;"GoToMyPC, PCAnywhere, VNC, or other communication software puts us on the same desktop together, while we discuss the challenges you are facing and decide upon the most useful tools available to use, and the best OOPS techniques to use to accomplish your goal."&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Global Internet Instruction&lt;/strong&gt;:&lt;br /&gt;Applause Software can offer voiceover communication while we codevelop your application thru instruction: please see: &lt;a href="http://www.skype.com/"&gt;http://www.skype.com/&lt;/a&gt; which allows free communication from Applause to you with the use of a headset with microphone.&lt;br /&gt;&lt;br /&gt;Kindly reach Peter A Donovan at &lt;a href="http://www.applausesoftware.com/"&gt;http://www.applausesoftware.com/&lt;/a&gt; for further details!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36681721-6212425163837876521?l=applausesoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://applausesoftware.blogspot.com/feeds/6212425163837876521/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=36681721&amp;postID=6212425163837876521' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36681721/posts/default/6212425163837876521'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36681721/posts/default/6212425163837876521'/><link rel='alternate' type='text/html' href='http://applausesoftware.blogspot.com/2008/07/visual-dataflex-class-instruction-via.html' title='Visual DataFlex Class~ Instruction via Internet'/><author><name>ApplauseSoftware</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_WQ1-wum4QJo/SyOt495ekYI/AAAAAAAAAKs/InJSnkrwZxc/S220/peterd.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36681721.post-7914713085757955809</id><published>2008-07-24T03:03:00.000-04:00</published><updated>2008-07-24T03:25:54.336-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Visual DataFlex'/><category scheme='http://www.blogger.com/atom/ns#' term='Applause Software'/><title type='text'>Container Technology in Visual DataFlex</title><content type='html'>Recently, I worked with a co-developer who coded a similar procedure such as this:&lt;br /&gt;&lt;br /&gt;Procedure Item_Change integer iFromItem integer iToItem returns integer&lt;br /&gt;&lt;br /&gt;Integer iRetVal&lt;br /&gt;Forward Get Msg_Item_Change iFromItem iToItem to iRetVal&lt;br /&gt;&lt;br /&gt;If (Current_Col(Self) = 2) Begin&lt;br /&gt;Send Request_Save of oProdLine_DD&lt;br /&gt;End&lt;br /&gt;Procedure_Return iRetVal&lt;br /&gt;End_Procedure&lt;br /&gt;&lt;br /&gt;What came of the conversation we had was that the "Send Request_Save" actually (and unintentionally) avoided the container technology of Visual DataFlex so that validation, the confirm message, and the ability to augment these functions in the container were completely misdirected!&lt;br /&gt;&lt;br /&gt;Here's what happens when a Request_Save is sent by normal means (i.e. clicking the save button, using the save key, changing a row in a dbgrid, etc):&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The container runs request_validate of the server ddo and validates the datadictionary class rules upon the data. Upon failing, the save is aborted, a message about the error is sent to the user, and the focus attempts to go directly to the window or cell that doesn't pass validation. Upon success, the next step occurs.&lt;/li&gt;&lt;li&gt;The container then runs the function named in the verify_save_msg property handle. "Would you like to save?", or a custom message if you have programmed it. Upon a NO answer, the save is aborted and the focus returns to the object or cell in the focus tree. Upon a YES answer, the save cascade of messages continues.&lt;/li&gt;&lt;li&gt;The container then asks the DDO (server) to save. Upon any error, all changes are rolled back and the focus returns to the object/cell in the focus tree.&lt;/li&gt;&lt;li&gt;Then, the container (if it's not a data aware grid or list) clears the buffer and the ddo record attached to it.&lt;/li&gt;&lt;li&gt;Then, the container (if it's not a data aware grid or list) sends the message "beginning_of_panel" (augmentable) which determines the first focusable object on the form/view and gives the focus to it. &lt;/li&gt;&lt;li&gt;DONE&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;So, as many are aware, when you take control of the save mechanism to do it manually, you should do the following steps:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Request the ddo validation to a boolean: Get Request_Validate of oProdLine_DD to bCancel.&lt;/li&gt;&lt;li&gt;Ask or confirm the save: Get Confirm "Would you like to save?" to bCancel&lt;/li&gt;&lt;li&gt;Send the save command: Send Request_Save of oProdLine_DD&lt;/li&gt;&lt;li&gt;Upon success, clear the record: If (Not(Err)) Send Clear of oProdLine_DD&lt;/li&gt;&lt;li&gt;Move the focus: Send Beginning_Of_Panel&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;So, in summary, the container technology has 5 main steps to it (actually six!). Prior to any of the five actions, it asks the server DDO if there are any changes to save! If there are no changes to save, then none of the above five steps ever execute.&lt;/p&gt;&lt;p&gt;Many are familiar with the Save cascade of messages from creating, backout, update, etc. but the container cascade of messages/methods is also important to realize prior to the save cascade ever occuring.&lt;/p&gt;&lt;p&gt;Posted by:&lt;/p&gt;&lt;p&gt;Peter A Donovan&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.applausesoftware.com/"&gt;http://www.applausesoftware.com/&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/36681721-7914713085757955809?l=applausesoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://applausesoftware.blogspot.com/feeds/7914713085757955809/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=36681721&amp;postID=7914713085757955809' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36681721/posts/default/7914713085757955809'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36681721/posts/default/7914713085757955809'/><link rel='alternate' type='text/html' href='http://applausesoftware.blogspot.com/2008/07/container-technology-in-visual-dataflex.html' title='Container Technology in Visual DataFlex'/><author><name>ApplauseSoftware</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_WQ1-wum4QJo/SyOt495ekYI/AAAAAAAAAKs/InJSnkrwZxc/S220/peterd.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36681721.post-6080378908882836612</id><published>2008-05-15T04:45:00.000-04:00</published><updated>2008-05-15T05:18:54.643-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='No Contract Uniform Service'/><category scheme='http://www.blogger.com/atom/ns#' term='Uniform Rental Service'/><category scheme='http://www.blogger.com/atom/ns#' term='Employee Paid Uniform Service'/><title type='text'>Uniform Rental Service Employee Paid No Contract</title><content type='html'>What you need to know about Employee Paid and Negotiated Uniform Rental Programs.&lt;br /&gt;&lt;br /&gt;The author Peter A Donovan is not affiliated with any unform rental company now, and was previously employed in the industry for 12 years negotiating rental contracts and speaks from this experience.&lt;br /&gt;&lt;br /&gt;For the sake of mathematics, let's assume the ABC Manufacturing Company has 10 employees who pay and contract for uniform rental service, and that ABC will not payroll deduct or manage uniform service for unnamed reasons which could include overhead of management time.&lt;br /&gt;&lt;br /&gt;What impact does this have on quality of uniforms, price, and the selection of a uniform rental firm?&lt;br /&gt;&lt;br /&gt;To understand, you need to be "in the head" of a uniform rental company.&lt;br /&gt;In a normal situation, where ABC negotiates and signs a contract, here's what happens. The uniform rental plant bidding for the business does this:&lt;br /&gt;Each employee gets an inventory of 11 uniforms: 5 in the locker for M-F, 5 dirty in the plant being cleaned from last week, and 1 on the back of the employee, a "swing" garment.&lt;br /&gt;Uniforms cost money. Let's just say each uniform outfit costs $75, and with 11 to purchase, that comes to $825 - not a trivial amount. They "lay it on the line" with a 3 or 5 year contract at $14.00 per week coming in per employee and give new garments to begin service. Math please! That comes to an income of 14x52 weeks = $728 per year. There is cleaning, employees to pay, trucks to maintain, and gas prices too. The normal new uniform contract takes about 1/2 the contract amount to break even. Let's not even go to "value of money over time". The uniform rental plant is in the business of long term profit and when you renew your contract for another 3 years, there's no huge overhead so there is finally some profit at the end of the tunnel.&lt;br /&gt;&lt;br /&gt;Now, when ABC refuses to sign a contract (employees cannot) what does this do?&lt;br /&gt;You have to be the uniform company on this one.&lt;br /&gt;First, let's talk about the "stock room" of uniform rental plants. Every plant has a stock room full of used garments that they decide are good enough to rent but used, so they use them a replacement garments when regular uniforms are destroyed and for employees added to a contract during the contract period. When you have a sizeable stock room bulging with used uniforms, you can go after employee paid no contract accounts. $14 per week per employee still and used uniforms. Wait.&lt;br /&gt;&lt;br /&gt;Who has uniform stock rooms bulging? When a uniform company has customers that end contracts, all the uniforms are returned to them. When a uniform company has a low quality control standard for used garments and retains all rather than RAN "replace as needed" you get the perfect mix.&lt;br /&gt;&lt;br /&gt;If your customers are happy and don't leave, PLUS you have a high quality RAN system, you just can't bid for the ABC account, can you?&lt;br /&gt;&lt;br /&gt;So, the impact of ABC's non-involvement does this:&lt;br /&gt;1. The uniform vendor will be of the type mentioned above most likely.&lt;br /&gt;2. The employees get used and pay for new.&lt;br /&gt;3. AND they impact the image of the ABC company when visitors arrive.&lt;br /&gt;&lt;br /&gt;This article is written expressly for reading by the owner of ABC, whomever you may be.&lt;br /&gt;&lt;br /&gt;Sincerely,&lt;br /&gt;Peter A Donovan&lt;br /&gt;Applause Software&lt;br /&gt;&lt;a href="http://www.applausesoftware.com/"&gt;http://www.applausesoftware.com/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36681721-6080378908882836612?l=applausesoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://applausesoftware.blogspot.com/feeds/6080378908882836612/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=36681721&amp;postID=6080378908882836612' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36681721/posts/default/6080378908882836612'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36681721/posts/default/6080378908882836612'/><link rel='alternate' type='text/html' href='http://applausesoftware.blogspot.com/2008/05/uniform-rental-service-employee-paid-no.html' title='Uniform Rental Service Employee Paid No Contract'/><author><name>ApplauseSoftware</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_WQ1-wum4QJo/SyOt495ekYI/AAAAAAAAAKs/InJSnkrwZxc/S220/peterd.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36681721.post-6634664303020692901</id><published>2008-05-05T17:06:00.000-04:00</published><updated>2008-05-05T17:15:14.339-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Visual DataFlex'/><category scheme='http://www.blogger.com/atom/ns#' term='Applause Software'/><category scheme='http://www.blogger.com/atom/ns#' term='Uniform Rental Sales System'/><category scheme='http://www.blogger.com/atom/ns#' term='Linen Rental Service'/><category scheme='http://www.blogger.com/atom/ns#' term='Uniform Rental Service'/><category scheme='http://www.blogger.com/atom/ns#' term='Linen Rental Sales System'/><title type='text'>Uniform &amp; Linen Rental Plant Software Launched</title><content type='html'>&lt;a href="http://bp0.blogger.com/_WQ1-wum4QJo/SB93GISrtdI/AAAAAAAAAGg/RNU77Mc92Mw/s1600-h/roloflexUL.Net.Banner.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5197003442197607890" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://bp0.blogger.com/_WQ1-wum4QJo/SB93GISrtdI/AAAAAAAAAGg/RNU77Mc92Mw/s400/roloflexUL.Net.Banner.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;A new software product for commercial textile rental plants (uniform &amp;amp; linen rental) will be launched this week from Applause Software of Boston.&lt;/p&gt;&lt;p&gt;Created in 20066, coming to market now, is RoloFlex UL.&lt;/p&gt;&lt;p&gt;A Sales and Marketing contact manager featuring custom proposal generator, email blaster, document management and scanning, market share analysis, targeted lead generation, and salesrep activity monitor, RoloFlex UL will be launched this week with a nationwide telemarketing campaign.&lt;/p&gt;&lt;p&gt;Based on a Visual DataFlex front-end, this product is years in the making and is singly the only PRO application available for the industry specifically.&lt;/p&gt;&lt;p&gt;There are approximately 400 commercial textile plants in the USA specializing in uniform rental and linen rental. The organization that forms the association for these companies is the Uniform Textile Service Association (UTSA) which features a publication and trade shows for the industry.&lt;/p&gt;&lt;p&gt;RoloFlex UL is currently featured on: &lt;a href="http://www.roloflex.net/"&gt;http://www.roloflex.net/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Author: Applause Software of Boston: Peter A Donovan &lt;a href="http://www.applausesoftware.com/"&gt;http://www.applausesoftware.com/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36681721-6634664303020692901?l=applausesoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://applausesoftware.blogspot.com/feeds/6634664303020692901/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=36681721&amp;postID=6634664303020692901' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36681721/posts/default/6634664303020692901'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36681721/posts/default/6634664303020692901'/><link rel='alternate' type='text/html' href='http://applausesoftware.blogspot.com/2008/05/uniform-linen-rental-plant-software.html' title='Uniform &amp; Linen Rental Plant Software Launched'/><author><name>ApplauseSoftware</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_WQ1-wum4QJo/SyOt495ekYI/AAAAAAAAAKs/InJSnkrwZxc/S220/peterd.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_WQ1-wum4QJo/SB93GISrtdI/AAAAAAAAAGg/RNU77Mc92Mw/s72-c/roloflexUL.Net.Banner.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36681721.post-217593393371416150</id><published>2008-04-13T06:55:00.000-04:00</published><updated>2008-04-13T07:12:32.236-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Vista TAPI'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft TAPI'/><category scheme='http://www.blogger.com/atom/ns#' term='Applause Software'/><category scheme='http://www.blogger.com/atom/ns#' term='Vista Dialer'/><title type='text'>Microsoft TAPI DIALER with Vista</title><content type='html'>&lt;a href="http://bp1.blogger.com/_WQ1-wum4QJo/SAHqKzuTIiI/AAAAAAAAAGY/dQ0CeqZBDnc/s1600-h/_dialer2.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5188685717111513634" style="CURSOR: hand" alt="" src="http://bp1.blogger.com/_WQ1-wum4QJo/SAHqKzuTIiI/AAAAAAAAAGY/dQ0CeqZBDnc/s400/_dialer2.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;With the advent of many new things in the Vista OS, there is an important undocumented method for using an application which utilizes the TAPI (Telephone) interface to Vista.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;In a microsoft support conversation I had with the MS support team, I suggested the following:&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Bug: The MS-Dialer in Vista is not backwards compatible with XP.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Bug: There is no documentation in Vista on how to use TAPI or the MS Dialer.Exe&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Bug: The documentation that MS provided does not dial USA phone numbers correctly.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;p&gt;Here's the problem:&lt;/p&gt;&lt;br /&gt;&lt;p&gt;If you were to dial in XP, you would dial this: 1 781 555 5555 as an example. This no longer works in Vista, and the output dialed is exactly this: 1 7 555 5555 where 2 digits of the area code is truncated.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;If you were to follow the (paid to provide) documentation, you would now dial: +1 781 555 5555 but this results in the following number dialed: 781 555 5555 without the long distance "1".&lt;/p&gt;&lt;br /&gt;&lt;p&gt;The Answer:&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Short and sweet: You must take the digits previously dialed by XP and add the country code for the USA like this: "+1 17815555555" with an important space after the "+1 ", resulting in the number dialed of 1 781 555 5555&lt;/p&gt;&lt;br /&gt;&lt;p&gt;This will be an important new addition to programs (such as RoloFlex from &lt;a href="http://www.roloflex.biz/"&gt;http://www.roloflex.biz/&lt;/a&gt;) which perform under both operating systems, XP and Vista, so the programmer must identify the OS and adjust the TAPI interface accordingly.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;In the hopes of helping someone else with their TAPI interface, so that you don't have to pay Microsoft $59 US to help you discover this....&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Regards,&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Peter A Donovan : Applause Software, Boston USA &lt;a href="http://www.applausesoftware.com/"&gt;http://www.applausesoftware.com/&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36681721-217593393371416150?l=applausesoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://applausesoftware.blogspot.com/feeds/217593393371416150/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=36681721&amp;postID=217593393371416150' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36681721/posts/default/217593393371416150'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36681721/posts/default/217593393371416150'/><link rel='alternate' type='text/html' href='http://applausesoftware.blogspot.com/2008/04/microsoft-tapi-dialer-with-vista.html' title='Microsoft TAPI DIALER with Vista'/><author><name>ApplauseSoftware</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_WQ1-wum4QJo/SyOt495ekYI/AAAAAAAAAKs/InJSnkrwZxc/S220/peterd.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_WQ1-wum4QJo/SAHqKzuTIiI/AAAAAAAAAGY/dQ0CeqZBDnc/s72-c/_dialer2.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36681721.post-6614152279182113429</id><published>2008-03-15T03:19:00.000-04:00</published><updated>2008-03-15T03:25:53.640-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Applause Software'/><category scheme='http://www.blogger.com/atom/ns#' term='Freeware Visual DataFlex'/><category scheme='http://www.blogger.com/atom/ns#' term='EMail Marketing'/><title type='text'>EMail Marketing with Visual DataFlex Software</title><content type='html'>&lt;strong&gt;An amazing return on investment&lt;/strong&gt; &lt;strong&gt;can be obtained from email marketing to your customer and/or prospect base...&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;... considering [as example] the “under $1,000” customized package available from Auto-Mate Software from longtime VB and VDF developer Garret Mott of the NEDC.&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Once installed, you can instantly notify your entire market that new products are available, or write pre-written excellently worded letters that are sent to individuals when the need arises.&lt;br /&gt;&lt;br /&gt;Layman’s terminology only:&lt;br /&gt;1. Write an email. Edit carefully, proof, and save into a database using a windows program that guides you.&lt;br /&gt;2. Select whom out of your database you’d like to send it to.&lt;br /&gt;3. Click a button, and each of your prospects receives an individual email within minutes.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;How to slice and dice your market:&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Let’s assume you have a database with customers and prospects. If you don’t, it’s time to take this on. Your database contains vital information about each entry such as the zip code, state, type of account, balance, payment terms, etc.&lt;/li&gt;&lt;li&gt;What if you could instantly generate revenue for no cost? Let’s setup your email screen as Garret Mott would do for you. Select from a drop-down list “COD”, select “MA” (Massachusetts) and pick customers only. Write up an email offering 10% discount on orders in the next 48 hours, and send. When you feature a new product or listing on your website, why not let everyone know in a short email note?&lt;/li&gt;&lt;li&gt;The other use for this kind of tool is to respond to inquiries with pre-written letters, edited for presentation quality, available to send to individuals upon request of information. Each business model has a set number of popular inquiry topics that customers ask for. Currently, do you respond with ad-hoc written emails and mailing of literature? A pre-written letter send to the individual who requested the information actually takes less time and both makes a better presentation and offers a delivery vehicle to attach a .PDF document. No cost, improved results, and instant delivery.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;These are the two most common uses for email marketing, but I’m sure you can think of more.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Delivery:&lt;br /&gt;Are we all tired of the HTML emails that feature graphical art advertisements? The systems that I currently use feature plain text with links. They look like an individually typed email, and they are really. Many email recipients have “html off” as an option on their emails, so why send an email that only a portion of your readers will actually see?&lt;br /&gt;&lt;/p&gt;&lt;p align="center"&gt;&lt;strong&gt;Difficulties&lt;/strong&gt;:&lt;br /&gt;Many ISP’s (Internet Service Providers) have limits on how many emails you can send in an hour. We have found that options on your email sending package can spread these emails over the course of a day or two, or that simple negotiation with your ISP can unlock this limit. Many times a requirement that you include an “unsubscribe” link could be encountered, and is a good practice to include.&lt;br /&gt;&lt;strong&gt;Summary&lt;/strong&gt;:&lt;br /&gt;Generate income, keep in touch with your market, break news instantly, and respond more professionally to both sales and service opportunities.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Recognizements:&lt;br /&gt;Auto-Mate Software: &lt;a href="http://www.automatesoftware.com/"&gt;http://www.automatesoftware.com/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Author:&lt;/p&gt;&lt;p&gt;Peter A Donovan, Applause Software: &lt;a href="http://www.applausesoftware.com/"&gt;http://www.applausesoftware.com/&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/36681721-6614152279182113429?l=applausesoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://applausesoftware.blogspot.com/feeds/6614152279182113429/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=36681721&amp;postID=6614152279182113429' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36681721/posts/default/6614152279182113429'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36681721/posts/default/6614152279182113429'/><link rel='alternate' type='text/html' href='http://applausesoftware.blogspot.com/2008/03/email-marketing-with-visual-dataflex.html' title='EMail Marketing with Visual DataFlex Software'/><author><name>ApplauseSoftware</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_WQ1-wum4QJo/SyOt495ekYI/AAAAAAAAAKs/InJSnkrwZxc/S220/peterd.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36681721.post-4576631559623000393</id><published>2008-02-22T12:52:00.000-05:00</published><updated>2008-02-22T12:57:45.539-05:00</updated><title type='text'>INCORRECT: Reports Of Visual DataFlex Corruption with Vista Home Edition: Read More!</title><content type='html'>Recently, Many blogs are picking up a report from a single source which is reporting that various software packages running under Vista Home editions experience corruption: NOT PROVEN.&lt;br /&gt;&lt;br /&gt;This was my response to the earliest and most reputable blog I found with the post:&lt;br /&gt;I am posting it here in case they decide to block my reply:&lt;br /&gt;&lt;br /&gt;I am the owner/lead programmer of Applause Software in Boston, a Visual DataFlex business solutions firm, and I have a google watch on Visual DataFlex…&lt;br /&gt;&lt;br /&gt;I would like to ask for details on your listing of Visual DataFlex in this list.It is unlikely that a Visual DataFlex application would cause data corruption in this environment, but it is very likely, that because programs written prior to the UAC of Vista came to being, that a VDF program trying to access a registry value could produce error messages that would be mistaken for corruption.&lt;br /&gt;&lt;br /&gt;In addition, users of Visual DataFlex are not aware of the exact backend database used for their application since it could be one of many including Oracle, DataFlex embedded database, Pervasive, MS-SQL, or other backend.&lt;br /&gt;&lt;br /&gt;I would like to offer my services to get to the heart of this matter and as a professional developer in the language for 25+ years I would like to challenge this information at the source and ask for a consultation with the firm reporting this information please.&lt;br /&gt;&lt;br /&gt;Until then, please to anyone watching this thread with VDF kindly consult your system IT professional for more informative information prior to canning your application!&lt;br /&gt;&lt;br /&gt;PS: Always make a backup! Don’t wait for a reason!&lt;br /&gt;&lt;br /&gt;Thanks,Peter A Donovan&lt;br /&gt;Applause Software of Boston&lt;br /&gt;[ a google will find me ]&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36681721-4576631559623000393?l=applausesoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://applausesoftware.blogspot.com/feeds/4576631559623000393/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=36681721&amp;postID=4576631559623000393' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36681721/posts/default/4576631559623000393'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36681721/posts/default/4576631559623000393'/><link rel='alternate' type='text/html' href='http://applausesoftware.blogspot.com/2008/02/incorrect-reports-of-visual-dataflex.html' title='INCORRECT: Reports Of Visual DataFlex Corruption with Vista Home Edition: Read More!'/><author><name>ApplauseSoftware</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_WQ1-wum4QJo/SyOt495ekYI/AAAAAAAAAKs/InJSnkrwZxc/S220/peterd.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36681721.post-5453321309417506745</id><published>2008-02-18T06:11:00.000-05:00</published><updated>2008-02-18T06:17:01.132-05:00</updated><title type='text'>Definition: Data Dictionary</title><content type='html'>A &lt;span style="color:#ff0000;"&gt;data dictionary&lt;/span&gt; is defined as the business layer in-bewteen your table on disk, and the requested operation at runtime.&lt;br /&gt;&lt;br /&gt;It handles the find, clear, save, validate, and delete requests from either the programmer or the user. A data dictionary exists both as a class coded definition and as an instantiated object which uses full delegation and polymorphism in the form of a data dictionary object in a "tree" structure for the data set you wish to perform an operation on.&lt;br /&gt;&lt;br /&gt;Editing a DataDictionary CLASS in Visual DataFlex involves at least 10 identifiable options:&lt;br /&gt;&lt;br /&gt;-1. Create/edit/delete data table columns.&lt;br /&gt;-2. Set parent relationships.&lt;br /&gt;-3. Define indexes for finding data by.&lt;br /&gt;-4. Set column based options for when the data table is used as the main data entry source. This involves setting system-wide standard behavior such as "capslock", "required", and "auto-find". An option also exists to set columns as "key fields" where the user may not change the value at runtime.&lt;br /&gt;-5. Set column based options for when the data table is used as a "server" [parent] of the main data entry source. Options here include "find required" and "noput" [user changes cannot overwrite the data table column]. It should be noted that depending on which place in the data operation structure (parent, child or main file... a data dictionary exists, the place determines which business rules apply in a display of polymorphism which is defined as the ability to produce different behavior simply by the context of it's use.&lt;br /&gt;-6. Define the immediate relational tree for the delete operation based on a record delete in the table. The child tables are defined so that two basic rules apply (one or the other): either the record cannot be deleted if child records exist, or the child files will all be deleted when the record is called for delete AND a data dictionary object in the module must be present to handle the delete operation. This is as much a validation for the programmer as it is for the user, since operations cannot be successful unless both follow the rules programmed in the class. It should be noted that business rule exceptions and customized rules can augment this programming or replace it completely. It should also be noted that when data dictionary objects are connected together in a module, that deletes travel downwards in the tree, and upon each delete, a save and validation is sent upwards in the tree.&lt;br /&gt;-7. Define the immediate relationsl tree for the save operations based on a requested save of the data table record. The parent data tables are defined so that your programming team must always place a parent DDO (data dictionary object - instantiated on the classes we are building) for each parent data table that is connected relationally. Omissions and "sometimes required" parent tables can be defined in both the class code and object code programmaticallty. The advantage of making a parent table "required" is to be able to both code update/backout operations to another table (knowing that it must always be present to handle your code), and also for the Visual DataFlex Studio to automatically model your relational tree when you request a data server to handle your find, clear, save, validation, and delete operations.&lt;br /&gt;-8. Define the externally updated tables to be bound in the transaction block of saves/deletes. When a save or delete occurs, all table attributes are set to readonly momentarily, the tables that will be affected by the operation are set to default mode, and then a reread/transaction block occurs to lock all the tables in the tree that are affected PLUS the ones listed in externally updated tables. This allows, for instance, a reread and update from the system table to assign the next available number to a key field.&lt;br /&gt;-9. Programming of stored procedures that exist as called methods already. REF: DDO Save Cascade: &lt;a href="http://applausesoftware.blogspot.com/2008/02/visual-dataflex-ddo-stored-procedure.html"&gt;http://applausesoftware.blogspot.com/2008/02/visual-dataflex-ddo-stored-procedure.html&lt;/a&gt;&lt;br /&gt;10. Programming of customized stored procedure methods that you introduce to the class, stored in a central depository (the foundation of oops programming) class and can be attached to either the exiting of a control attached to a column of the data table, or the exiting, or simply the validation of such column.&lt;br /&gt;&lt;br /&gt;All together, these 10 functional abilities to centrally define data table rules are dwarfed by the fact that they are "hitched up in tandem" like a team of "Budweiser Clydesdales" which work interconnectedly to enforce your entire data structure on any data operation which includes save, clear, find, delete, and validation.&lt;br /&gt;&lt;br /&gt;Find this definition and more at: &lt;a href="http://www.vdfwiki.com/"&gt;http://www.vdfwiki.com/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;By: Peter Donovan, Applause Software, &lt;a href="http://www.applausesoftware.com/"&gt;http://www.applausesoftware.com/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36681721-5453321309417506745?l=applausesoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://applausesoftware.blogspot.com/feeds/5453321309417506745/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=36681721&amp;postID=5453321309417506745' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36681721/posts/default/5453321309417506745'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36681721/posts/default/5453321309417506745'/><link rel='alternate' type='text/html' href='http://applausesoftware.blogspot.com/2008/02/definition-data-dictionary.html' title='Definition: Data Dictionary'/><author><name>ApplauseSoftware</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_WQ1-wum4QJo/SyOt495ekYI/AAAAAAAAAKs/InJSnkrwZxc/S220/peterd.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36681721.post-2763470476810768160</id><published>2008-02-05T22:32:00.000-05:00</published><updated>2008-02-05T22:40:21.794-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Visual DataFlex'/><category scheme='http://www.blogger.com/atom/ns#' term='Data Dictionary Stored Procedure Flowchart'/><title type='text'>Visual DataFlex DDO Stored Procedure Delegation</title><content type='html'>As advertised: for Visual DataFlex programmers.&lt;br /&gt;&lt;br /&gt;This is a snippet showing the Visual DataFlex cascade of messages that is called in each one of the data dictionary objects in a connected tree of data table dictionary objects in a form/view.&lt;br /&gt;&lt;br /&gt;Creating: [a method to put code for new records only]&lt;br /&gt;Backout: [a method to put code where the record on disk is in memory before ui]&lt;br /&gt;Update: [a method to put code for all saves both new and existing]&lt;br /&gt;Validate_Save: [a method to put complex validation or validation to be done after update]&lt;br /&gt;Save_Main_File: [a method where the parent values drop down into the child and the record is saved to disk]&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bp2.blogger.com/_WQ1-wum4QJo/R6krjRyKVoI/AAAAAAAAAF4/m6nDZba_FHM/s1600-h/DDO+Stored+Procedure+Flowchart.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5163706332826195586" style="CURSOR: hand" alt="" src="http://bp2.blogger.com/_WQ1-wum4QJo/R6krjRyKVoI/AAAAAAAAAF4/m6nDZba_FHM/s400/DDO+Stored+Procedure+Flowchart.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;[ double click image to expand]&lt;br /&gt;&lt;br /&gt;Regards,&lt;br /&gt;Peter A Donovan&lt;br /&gt;&lt;a href="http://www.applausesoftware.com/"&gt;http://www.applausesoftware.com/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36681721-2763470476810768160?l=applausesoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://applausesoftware.blogspot.com/feeds/2763470476810768160/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=36681721&amp;postID=2763470476810768160' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36681721/posts/default/2763470476810768160'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36681721/posts/default/2763470476810768160'/><link rel='alternate' type='text/html' href='http://applausesoftware.blogspot.com/2008/02/visual-dataflex-ddo-stored-procedure.html' title='Visual DataFlex DDO Stored Procedure Delegation'/><author><name>ApplauseSoftware</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_WQ1-wum4QJo/SyOt495ekYI/AAAAAAAAAKs/InJSnkrwZxc/S220/peterd.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_WQ1-wum4QJo/R6krjRyKVoI/AAAAAAAAAF4/m6nDZba_FHM/s72-c/DDO+Stored+Procedure+Flowchart.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36681721.post-6776609232731004440</id><published>2008-01-16T03:50:00.000-05:00</published><updated>2008-01-16T04:11:29.835-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Visual DataFlex'/><category scheme='http://www.blogger.com/atom/ns#' term='Visual DataFlex Studio'/><title type='text'>Oops foundation centralized coding in Visual DataFlex</title><content type='html'>&lt;span style="font-size:130%;"&gt;&lt;span style="color:#6633ff;"&gt;OOPS Foundation Centralized Coding in Visual DataFlex:&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;One of the most fundamental concepts in oops programming [object oriented] is centralized coding so that unlike previous spaghetti code where the same calculation was formulated over and over again in different code segments, instead we now place the code in one spot so that if business rules change then we go to one spot, change the code, and we're done.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Earlier attempts at centralized coding involved gosubs where the same piece of code was reused, but with Visual DataFlex, utilizing datadictionaries, we have hooks in the finding process and constrain process for instance where the code is placed in a "stored procedure" along with all the other rules of the datadictionary class for a table. In Visual DataFlex methodology, which supports full message delegation, the find passes through a DDO [data dictionary object] which delegates the find to it's DD class code and utilizes the onconstrain method of the class as well as the object.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Technique: in order to fully utilize delegation, we "forward send" each message even if it is an "event" method.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;The code described below takes a business rule exception to constrain a table by it's status which is used throughout a system in many places including windows data entry, batch processing, and webapp interfaces.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;The beauty of Visual DataFlex database centric code is that this one event can be turned on or off by a property setting [business rule exception] in any of the above mentioned applications.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Here's some sample code:&lt;/div&gt;&lt;br /&gt;&lt;a href="http://bp2.blogger.com/_WQ1-wum4QJo/R43JrVUiMuI/AAAAAAAAAFw/4vnBCEJiFeU/s1600-h/onconstrain.PNG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5155998894703915746" style="CURSOR: hand" alt="" src="http://bp2.blogger.com/_WQ1-wum4QJo/R43JrVUiMuI/AAAAAAAAAFw/4vnBCEJiFeU/s400/onconstrain.PNG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://bp0.blogger.com/_WQ1-wum4QJo/R43IN1UiMtI/AAAAAAAAAFo/4BvQ1xyRVRU/s1600-h/onconstrain.JPG"&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;This is intended as a "get-to-know features of Visual DataFlex" article.&lt;/div&gt;&lt;div&gt;Sincerely,&lt;/div&gt;&lt;div&gt;Peter Donovan&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36681721-6776609232731004440?l=applausesoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://applausesoftware.blogspot.com/feeds/6776609232731004440/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=36681721&amp;postID=6776609232731004440' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36681721/posts/default/6776609232731004440'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36681721/posts/default/6776609232731004440'/><link rel='alternate' type='text/html' href='http://applausesoftware.blogspot.com/2008/01/oops-foundation-centralized-coding-in.html' title='Oops foundation centralized coding in Visual DataFlex'/><author><name>ApplauseSoftware</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_WQ1-wum4QJo/SyOt495ekYI/AAAAAAAAAKs/InJSnkrwZxc/S220/peterd.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_WQ1-wum4QJo/R43JrVUiMuI/AAAAAAAAAFw/4vnBCEJiFeU/s72-c/onconstrain.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36681721.post-8072884026484907369</id><published>2008-01-15T06:06:00.000-05:00</published><updated>2008-01-15T06:14:19.132-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Visual DataFlex'/><category scheme='http://www.blogger.com/atom/ns#' term='NEDC'/><category scheme='http://www.blogger.com/atom/ns#' term='Northeast DataFlex Consortium'/><title type='text'>The NorthEast DataFlex Consortium</title><content type='html'>&lt;a href="http://bp3.blogger.com/_WQ1-wum4QJo/R4yU91UiMrI/AAAAAAAAAFY/rsJvBrDFScU/s1600-h/nedclogolisaofficial.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5155659463438512818" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://bp3.blogger.com/_WQ1-wum4QJo/R4yU91UiMrI/AAAAAAAAAFY/rsJvBrDFScU/s400/nedclogolisaofficial.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;The NEDC: what it is!&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;The NEDC was formed in April of 2003 by a group of New England based Visual DataFlex custom application developers with varied specialties. It offers "the power of a large corporation without the large cost" for potential software partners/clients and is noteworthy as being the largest single resource for Visual DataFlex programming in the United States.&lt;br /&gt;&lt;br /&gt;Why Choose the NEDC?&lt;br /&gt;The NEDC is a group of independent Visual DataFlex (VDF) programmers that have joined in camaraderie to provide increased value and capabilities to their customers. The NEDC is not a conventional consulting firm, or even a legal entity, but “an almost virtual company”.&lt;br /&gt;We think this concept works to make the NEDC an exceptional partner for your business, as we can offer the power of a large corporation without the cost.&lt;br /&gt;&lt;br /&gt;· Experience: Collectively, the NEDC provides over 150 years of VDF (and other language) system development experience. Whether your needs are for an inventory, sales, manufacturing, time &amp;amp; attendance, ERP, or some other kind of system, we most likely have real life experience implementing similar systems.&lt;br /&gt;&lt;br /&gt;· Skills: When working on a project, the person best suited to a particular portion is the one doing the work. NEDC members have worked in many environments: independent, small business, corporate and as a VDF instructor. This gives us real life understanding of how companies work. We all started in character mode (DOS based) DataFlex, so we know the language from the ground up. Most of us are also involved in testing of the newest version, so we know what’s coming.&lt;br /&gt;&lt;br /&gt;· Project Types: We work in many different ways: conversions of character mode DataFlex systems to VDF, conversions of systems written in another language, maintenance of existing VDF systems, and whole new systems. Whether you need a classic Windows system, a Web-based system or a combination of the two, we can do it.&lt;br /&gt;&lt;br /&gt;· Costs: Being a “virtual company” saves our clients money: no rent, tax burden or administrative costs to pass on. This means that we can work for a substantially lower hourly rate while providing excellent service. Of course it also means we can’t invite you to visit our expensive corporate headquarters! Instead, we come to you, which helps us get a better picture of how your company works.&lt;br /&gt;&lt;br /&gt;· FLEXibility: The NEDC normally assigns one developer as project leader. If he goes on vacation or gets sick, another fills in. If you prefer to work with another developer as lead, simply ask and we’ll swap roles. This means that you are in the driver’s seat, not at the mercy of someone you’ve never met deciding that another project is “more important” than yours or that you will have to work with a particular person.&lt;br /&gt;&lt;br /&gt;· Security: If you are used to working with a single developer you may worry about something happening to that person. In the NEDC, if something were to happen, another developer will switch into the role.&lt;br /&gt;&lt;br /&gt;by:&lt;br /&gt;Peter A Donovan&lt;br /&gt;Charter Member of the NEDC &lt;a href="http://www.nedataflex.com/"&gt;(NorthEast DataFlex Consortium)&lt;/a&gt;  &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36681721-8072884026484907369?l=applausesoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://applausesoftware.blogspot.com/feeds/8072884026484907369/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=36681721&amp;postID=8072884026484907369' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36681721/posts/default/8072884026484907369'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36681721/posts/default/8072884026484907369'/><link rel='alternate' type='text/html' href='http://applausesoftware.blogspot.com/2008/01/northeast-dataflex-consortium.html' title='The NorthEast DataFlex Consortium'/><author><name>ApplauseSoftware</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_WQ1-wum4QJo/SyOt495ekYI/AAAAAAAAAKs/InJSnkrwZxc/S220/peterd.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_WQ1-wum4QJo/R4yU91UiMrI/AAAAAAAAAFY/rsJvBrDFScU/s72-c/nedclogolisaofficial.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36681721.post-705092797021903826</id><published>2007-11-12T03:03:00.000-05:00</published><updated>2007-11-12T03:16:57.659-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Visual DataFlex'/><category scheme='http://www.blogger.com/atom/ns#' term='Freeware Visual DataFlex RoloFLEX by Applause Software'/><title type='text'>RoloFlex Release: Press Release and Marketing</title><content type='html'>&lt;a href="http://bp0.blogger.com/_WQ1-wum4QJo/RzgJ_Cx6imI/AAAAAAAAAFI/D46te7KK1h4/s1600-h/RoloFlexPaulsPicks5StarRating.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5131862754071317090" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://bp0.blogger.com/_WQ1-wum4QJo/RzgJ_Cx6imI/AAAAAAAAAFI/D46te7KK1h4/s400/RoloFlexPaulsPicks5StarRating.JPG" border="0" /&gt;&lt;/a&gt; &lt;span style="font-family:verdana;font-size:180%;"&gt;RoloFlex 12.5 Released November 2007&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;font-size:180%;"&gt;Featuring Visual DataFlex&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;div&gt;&lt;a href="http://bp3.blogger.com/_WQ1-wum4QJo/RzgJsyx6ilI/AAAAAAAAAFA/W5Gt8TQgZHU/s1600-h/RoloFlex+Editors+Pick.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5131862440538704466" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://bp3.blogger.com/_WQ1-wum4QJo/RzgJsyx6ilI/AAAAAAAAAFA/W5Gt8TQgZHU/s400/RoloFlex+Editors+Pick.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Rated highly by submission to download sites listed herein, the RoloFlex CRM/PIM [customer relations management/personal information manager] is going out to major download sites and features the upgraded RoloFlex product released with the Visual DataFlex 12.1 platform.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://bp3.blogger.com/_WQ1-wum4QJo/RzgJhyx6ikI/AAAAAAAAAE4/C-FnyBxr290/s1600-h/5stars_sofotex.gif"&gt;&lt;img id="BLOGGER_PHOTO_ID_5131862251560143426" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://bp3.blogger.com/_WQ1-wum4QJo/RzgJhyx6ikI/AAAAAAAAAE4/C-FnyBxr290/s400/5stars_sofotex.gif" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The marketing effort for RoloFlex is just beginning!&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://bp2.blogger.com/_WQ1-wum4QJo/RzgJNix6iiI/AAAAAAAAAEo/4Sroz9xIyv8/s1600-h/5stars_award2c.gif"&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://bp2.blogger.com/_WQ1-wum4QJo/RzgJNix6iiI/AAAAAAAAAEo/4Sroz9xIyv8/s1600-h/5stars_award2c.gif"&gt;&lt;img id="BLOGGER_PHOTO_ID_5131861903667792418" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://bp2.blogger.com/_WQ1-wum4QJo/RzgJNix6iiI/AAAAAAAAAEo/4Sroz9xIyv8/s400/5stars_award2c.gif" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Soon, RoloFlex will be available at most major download sites featuring anonymous download under the Visual DataFlex 12.1 evaluation period and subsequent registration/licensing when registered through &lt;a href="http://www.roloflex.biz/"&gt;http://www.roloflex.biz/&lt;/a&gt; &lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Under Construction: RoloFlex Time Tracker 12.5 for billing hours and invoicing.&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Nearing Release Now: RoloFlex EMail Module, due for distribution on November 15 2007&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Please Note the RoloFlex Blog Site &lt;a href="http://www.roloflex.blogspot.com/"&gt;http://www.roloflex.blogspot.com/&lt;/a&gt; for future news!&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Sincerely, Peter and Kimberly Donovan&lt;/div&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/36681721-705092797021903826?l=applausesoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://applausesoftware.blogspot.com/feeds/705092797021903826/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=36681721&amp;postID=705092797021903826' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36681721/posts/default/705092797021903826'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36681721/posts/default/705092797021903826'/><link rel='alternate' type='text/html' href='http://applausesoftware.blogspot.com/2007/11/roloflex-release-press-release-and.html' title='RoloFlex Release: Press Release and Marketing'/><author><name>ApplauseSoftware</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_WQ1-wum4QJo/SyOt495ekYI/AAAAAAAAAKs/InJSnkrwZxc/S220/peterd.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_WQ1-wum4QJo/RzgJ_Cx6imI/AAAAAAAAAFI/D46te7KK1h4/s72-c/RoloFlexPaulsPicks5StarRating.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36681721.post-8912390816885683081</id><published>2007-10-09T19:08:00.000-04:00</published><updated>2007-10-09T19:15:26.906-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Visual DataFlex'/><category scheme='http://www.blogger.com/atom/ns#' term='Applause Software'/><title type='text'>DDO Tree Technology – DAF Methodology</title><content type='html'>&lt;div align="right"&gt;&lt;span style="font-family:verdana;"&gt;&lt;strong&gt;Terms&lt;/strong&gt;:&lt;br /&gt;&lt;em&gt;DDO Tree&lt;/em&gt;: A combination of instantiated data dictionary objects tied together.&lt;br /&gt;&lt;em&gt;DAF Methodology&lt;/em&gt;: How the ddo tree handles find, clear, save, delete and validation.&lt;br /&gt;&lt;br /&gt;Here’s a sample (simple) ddo tree as found in a sales order data entry program or other module…&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-family:verdana;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;img id="BLOGGER_PHOTO_ID_5119478406127190226" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp0.blogger.com/_WQ1-wum4QJo/RwwKfHh-gNI/AAAAAAAAAD4/OSYR-nTo33I/s400/ddotreepic1.JPG" border="0" /&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-family:verdana;"&gt;&lt;/p&gt;&lt;/span&gt;&lt;div align="right"&gt;&lt;span style="color:#3333ff;"&gt;“Knowing how the ddo tree handles user requests is at least important to know as how to model a data dictionary class” &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Communication between the ddo tree and the objects in play is a two way street!&lt;br /&gt;&lt;br /&gt;In this example of data entry, the Server of the main panel is Salehead and it controls the find/clear/save/delete and validation of itself and all it’s parent ddo objects.&lt;br /&gt;&lt;br /&gt;In a lesson in polymorphism, the “Customer” ddo recognizes it is a parent object of the server in play, and enforces different rules (find required on record for instance) than it normally would if it was the server itself.&lt;br /&gt;&lt;br /&gt;Further, the SaleHead ddo takes responsibility for accepting the find/clear/save/delete messages sent via the user. When the cursor/focus is in the customer name window, for instance, the request_find message actually goes directly to the SaleHead ddo, not the Customer ddo. The SaleHead realizes that the message is directed at a parent ddo and forwards the message up thru the connection to the Customer ddo to handle.&lt;br /&gt;&lt;br /&gt;Test!&lt;br /&gt;Take your data entry module with parents and put a hook message inside the server and the parent “request_find” method and see which pops up first!&lt;br /&gt;&lt;br /&gt;In the same way that this communicates upwards, it also communicates downwards so that when a delete message comes to the server, it travels downwards, deleting all children of the server and then itself. The beauty of the methodology is that no parent records can be deleted by the user unless programmatically allowed by the software engineer.&lt;br /&gt;&lt;br /&gt;Test!&lt;br /&gt;Take any data entry module, place the focus in a parent object cell or window, and press delete. What get’s deleted? Not the parent!&lt;br /&gt;&lt;br /&gt;So, augmentation of ALL find/clear/save/delete requests can be done at the server level! Here’s how to code so the customer of an order cannot be changed:&lt;/div&gt;&lt;div align="left"&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;strong&gt;Object&lt;/strong&gt; Customer_DD is a Customer_DataDictionary&lt;br /&gt;End_Object&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Object&lt;/strong&gt; SaleHead_DD is a SaleHead_DataDictionary&lt;br /&gt;Set ddo_server to Customer_DD&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;&lt;strong&gt;&lt;/strong&gt;&lt;div align="left"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;strong&gt;Procedure&lt;/strong&gt; Request_Find Integer iMode Integer iFile Integer iIndex&lt;br /&gt;If ((iFile = Customer.File_Number) and (Current_Record(Self))) Procedure_Return&lt;br /&gt;Forward Send Request_Find iMode iFile iIndex&lt;br /&gt;End_Procedure&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;&lt;strong&gt;&lt;/strong&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;strong&gt;Procedure&lt;/strong&gt; FindByRowID Integer iFile RowID riRowID&lt;br /&gt;If ((iFile = Customer.File_Number) and (Current_Record(Self))) Procedure_Return&lt;br /&gt;Forward Send FindByRowID iFile riRowID&lt;br /&gt;End_Procedure&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;/span&gt;&lt;div align="left"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;End_Object &lt;/span&gt;&lt;/div&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;div align="right"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;Test!&lt;br /&gt;This is one correct way to code a sales order so the parent cannot be changed of an existing sales order!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;So, what have we learned? DAF Methodology.&lt;br /&gt;It’s a study of communication between data entry objects which delegate user messages to the server, and how that server communicates the messages to it’s parent and child tables.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36681721-8912390816885683081?l=applausesoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://applausesoftware.blogspot.com/feeds/8912390816885683081/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=36681721&amp;postID=8912390816885683081' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36681721/posts/default/8912390816885683081'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36681721/posts/default/8912390816885683081'/><link rel='alternate' type='text/html' href='http://applausesoftware.blogspot.com/2007/10/ddo-tree-technology-daf-methodology.html' title='DDO Tree Technology – DAF Methodology'/><author><name>ApplauseSoftware</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_WQ1-wum4QJo/SyOt495ekYI/AAAAAAAAAKs/InJSnkrwZxc/S220/peterd.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_WQ1-wum4QJo/RwwKfHh-gNI/AAAAAAAAAD4/OSYR-nTo33I/s72-c/ddotreepic1.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36681721.post-5157762295886393590</id><published>2007-10-03T08:31:00.000-04:00</published><updated>2007-10-03T08:40:44.581-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Visual DataFlex'/><category scheme='http://www.blogger.com/atom/ns#' term='Applause Software'/><title type='text'>Visual DataFlex DDO Tree Technology Reference</title><content type='html'>&lt;div align="left"&gt;A Reference Guide of DDO Technology&lt;br /&gt;– Visual DataFlex–&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Outline Mode&lt;/strong&gt;:&lt;br /&gt;- Introduction&lt;br /&gt;- Terms&lt;br /&gt;- What is a DDO?&lt;br /&gt;- What is a DD Class?&lt;br /&gt;- What is a DDO Tree?&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Introduction&lt;/strong&gt;:&lt;br /&gt;Based on DAF Methodology, the DDO Technology in Visual DataFlex is a study of instantiation, delegation, and polymorphism.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Terms&lt;/strong&gt;:&lt;br /&gt;&lt;em&gt;Instantiation&lt;/em&gt;: The act of creating an object based on a class and class hierarchy.&lt;br /&gt;&lt;em&gt;Delegation&lt;/em&gt;: Visual DataFlex features natural full delegation of methods by default, where the method travels first to the object, then to it’s superclass, and on throughout the full class hierarchy until the method is resolved. A method runs to completion without augmentation or definition on the object level but such augmentation, forwarding, or canceling is supported on both the class and object level.&lt;br /&gt;&lt;em&gt;Polymorphism&lt;/em&gt;: The act of an object to produce different behavior depending on it’s context.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;What is a DDO?&lt;/strong&gt;&lt;br /&gt;“data dictionary objects” are instantiated in each data entry (or other type) module for the purpose of:&lt;br /&gt;- Providing a “server” for find/clear/save/delete and validation operations for a data table.&lt;br /&gt;- Providing data aware controls with attributes such as capslock, valid values, default values, range definition, selection list definition, etc.&lt;br /&gt;- Communicating with other DDO’s in tandem to do all of the above with coordination.&lt;br /&gt;- Definition of “constraint data filters” where your data can be a subset of the whole.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Sample Object Code&lt;/em&gt;:&lt;br /&gt;// doc: instantiation of customer_datadictionary class placed inside panel of data entry form.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Object&lt;/strong&gt; oCustomer_DD is a Customer_DataDictionary // instantiation of class.&lt;br /&gt;Set DDO_Server to oSalesRep_DD // parent or “server” ddo&lt;br /&gt;Set DDO_Server to oTerms_DD // parent or “server” ddo&lt;br /&gt;&lt;strong&gt;Procedure&lt;/strong&gt; OnConstrain // predefined method&lt;br /&gt;Forward Send OnConstrain // continue delegation&lt;br /&gt;Constrain Customer.Active EQ “Y”&lt;br /&gt;Constrain Customer As (Customer.TotalOwed &lt;strong&gt;What is a DD Class?&lt;/strong&gt;&lt;br /&gt;A data dictionary class is a number of things: about 10 major functions with more omitted for space constraints in this article.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="left"&gt;[1] A Data Dictionary Class defines the attributes for the data table to be communicated to the data aware controls tied into that database table. Attributes include “capslock”, “required entry in this column”, “auto-find upon exit”, “shadowed/non-enterable”, etc.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="left"&gt;[2] The DD Class sets the (above noted) attributes differently depending on whether the ddo (instantiated object based on the class) is the direct server of operations, or a parent ddo of the operations server. This creates polymorphism on the object level and allows parent records to be found, required to be found, but not allow changes, for instance.&lt;br /&gt;&lt;br /&gt;[3] The DD Class defines which other database table objects must be instantiated alongside with it to perform save and delete operations. For instance, the save of a sales order lineitem would require a dd object (ddo) for the product it was related to in order to reduce inventory or create a backorder. In another instance, the sales order header would require a ddo for the sales order lineitem to be present in order to delete the related order lineitems. Also, a DD Class may be configured to not allow deletes if child records exist.&lt;br /&gt;&lt;br /&gt;[4] The DD Class allows columns to be associated with a “selection list” or lookup object. The chosen selection list will create a lookup button on the control chosen for that column and automatically popup and communicate two ways with the selection list.&lt;br /&gt;&lt;br /&gt;[5] The DD Class allows the database programmer to define the object labels for each column and also to default the creation of controls for this column to a certain type such as a spinform or comboform, etc. (communication with the visual dataflex studio).&lt;br /&gt;&lt;br /&gt;[6] The DD Class features augmentable save, find, clear, delete, and validate methods. The operations server (ddo) in a form or “view” will initiate a cascade of messages designed to perform an operation such as a save operation. When this save occurs, it cascades to all the connected data dictionary objects in the form or “view” which then delegates to the DD Class where you can augment the operation based on business rules you define and business rule exceptions which can be controlled via various means, usually with a property setting.&lt;br /&gt;&lt;br /&gt;[7] The DD Class allows the setting of “valid values” validation tables which accompany a column in whatever control form it takes (regular form, comboform, or in a grid). The DD Class can define a list such as “activeinactive” for itself, or share a validation table with other DD Classes such as a list of US states or valid shipping terms.&lt;br /&gt;&lt;br /&gt;[8] The DD Class allows for the definition of entry and exit methods for each column of the database table. Whether the column, in data entry, is represented in a comboform, or in a grid, the entry and exit methods follow it.&lt;br /&gt;&lt;br /&gt;[9] The DD Class allows for auto-incrementing from a “system file” for ID fields, for instance or lineitem numbers.&lt;br /&gt;&lt;br /&gt;[10] The DD Class communicates when instantiated, to validate the find/clear/save/delete cascade of messages along with whatever other ddo objects it is connected to.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;What is a DDO Tree?&lt;/strong&gt;&lt;br /&gt;Data Dictionary Objects are run in tandem to find/clear/save/delete and validate these operations.&lt;br /&gt;Let’s take a sales order entry application for example. The business rules given to you are;&lt;br /&gt;· Customers who are not active may not purchase.&lt;br /&gt;· Active customers may not go over their credit limit by more than 10%.&lt;br /&gt;· Sales orders update the customer total owed.&lt;br /&gt;· Lineitems update both the sales order total and reduce product from inventory.&lt;br /&gt;· Product records update vendor purchase history.&lt;br /&gt;· Sales orders update the salesrep volume sold.&lt;br /&gt;&lt;br /&gt;Here’s a sales order entry application ddo tree (simplistic) example:&lt;br /&gt;// doc: ddo tree for SO application&lt;br /&gt;&lt;strong&gt;Object&lt;/strong&gt; oTerms_DD is a Terms_DataDictionary&lt;br /&gt;End_Object&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Object&lt;/strong&gt; oSalesRep_DD&lt;br /&gt;End_Object&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Object&lt;/strong&gt; oCustomer_DD is a Customer_DataDictionary&lt;br /&gt;Set DDO_Server to oSalesRep_DD&lt;br /&gt;Set DDO_Server to oTerms_DD&lt;br /&gt;&lt;strong&gt;Procedure&lt;/strong&gt; OnConstrain&lt;br /&gt;Forward Send OnConstrain&lt;br /&gt;Constrain Customer.Active EQ “Y”&lt;br /&gt;End_Procedure&lt;br /&gt;&lt;strong&gt;Function&lt;/strong&gt; Validate_Save Returns Integer&lt;br /&gt;Integer iReturnVal&lt;br /&gt;Forward Get Validate_Save to iReturnVal&lt;br /&gt;If (Customer.Owed &gt; (Customer.CreditLimit * 1.10)) Error 999 “Customer Over Credit Limit”&lt;br /&gt;Function_Return iReturnVal&lt;br /&gt;End_Function&lt;br /&gt;End_Object&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Object&lt;/strong&gt; oVendor_DD is a Vendor_DataDictionary&lt;br /&gt;End_Object&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Object&lt;/strong&gt; oProduct_DD is a Product_DataDictionary&lt;br /&gt;Set DDO_Server to oVendor_DD&lt;br /&gt;&lt;strong&gt;Procedure&lt;/strong&gt; Update&lt;br /&gt;Forward Send Update&lt;br /&gt;Add (Product.Qty * Product.Price) to Vendor.Volume&lt;br /&gt;End_Procedure&lt;br /&gt;&lt;strong&gt;Procedure&lt;/strong&gt; Backout&lt;br /&gt;Forward Send Backout&lt;br /&gt;Subtract (Product.Qty * Product.Price) from Vendor.Volume&lt;br /&gt;End_Procedure&lt;br /&gt;End_Object&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Object&lt;/strong&gt; oSaleHead is a SaleHead_DataDictionary&lt;br /&gt;Set DDO_Server to oCustomerDD&lt;br /&gt;&lt;strong&gt;Procedure&lt;/strong&gt; Update&lt;br /&gt;Forward Send Update&lt;br /&gt;Add SaleHead.Total to Customer.Owed&lt;br /&gt;Add SaleHead.Total to SalesRep.Volume&lt;br /&gt;End_Procedure&lt;br /&gt;&lt;strong&gt;Procedure&lt;/strong&gt; Backout&lt;br /&gt;Forward Send Backout&lt;br /&gt;Subtract SaleHead.Total from Customer.Owed&lt;br /&gt;Subtract SaleHead.Total from SalesRep.Volume&lt;br /&gt;End_Procedure&lt;br /&gt;End_Object&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Object&lt;/strong&gt; oLineItem_DD is a LineItem_DataDictionary&lt;br /&gt;Set DDO_Server to oSaleHead_DD&lt;br /&gt;Set DDO_Server to oProduct_DD&lt;br /&gt;&lt;strong&gt;Procedure&lt;/strong&gt; Update&lt;br /&gt;Forward Send Update&lt;br /&gt;Add LineItem.Total to SaleHead.Total&lt;br /&gt;Subtract LineItem.Qty from Product.QtyOnHand&lt;br /&gt;End_Procedure&lt;br /&gt;&lt;strong&gt;Procedure&lt;/strong&gt; Backout&lt;br /&gt;Forward Send Backout&lt;br /&gt;Subtract LineItem.Total from SaleHead.Total&lt;br /&gt;Add LineItem.Qty to Product.QtyOnHand&lt;br /&gt;End_Procedure&lt;br /&gt;End_Object&lt;br /&gt;// END CODE&lt;br /&gt;&lt;br /&gt;With a pictorial version of what’s happening in the tree:&lt;/div&gt;&lt;br /&gt;&lt;div align="left"&gt;&lt;/div&gt;&lt;a href="http://bp0.blogger.com/_WQ1-wum4QJo/RwONXXh-gLI/AAAAAAAAADo/IhNsVQ1kD58/s1600-h/ddotreepic1.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5117089034216046770" style="CURSOR: hand" alt="" src="http://bp0.blogger.com/_WQ1-wum4QJo/RwONXXh-gLI/AAAAAAAAADo/IhNsVQ1kD58/s400/ddotreepic1.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div align="left"&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36681721-5157762295886393590?l=applausesoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://applausesoftware.blogspot.com/feeds/5157762295886393590/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=36681721&amp;postID=5157762295886393590' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36681721/posts/default/5157762295886393590'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36681721/posts/default/5157762295886393590'/><link rel='alternate' type='text/html' href='http://applausesoftware.blogspot.com/2007/10/visual-dataflex-ddo-tree-technology.html' title='Visual DataFlex DDO Tree Technology Reference'/><author><name>ApplauseSoftware</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_WQ1-wum4QJo/SyOt495ekYI/AAAAAAAAAKs/InJSnkrwZxc/S220/peterd.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_WQ1-wum4QJo/RwONXXh-gLI/AAAAAAAAADo/IhNsVQ1kD58/s72-c/ddotreepic1.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36681721.post-5975955776457071581</id><published>2007-09-27T04:28:00.000-04:00</published><updated>2007-09-29T11:54:33.421-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Visual DataFlex'/><category scheme='http://www.blogger.com/atom/ns#' term='Freeware Visual DataFlex RoloFLEX by Applause Software'/><title type='text'>RoloFlex Companion #1</title><content type='html'>&lt;a href="http://bp0.blogger.com/_WQ1-wum4QJo/Rvtp6Xh-gII/AAAAAAAAADU/83W4wXP3Nms/s1600-h/RoloFlex+CompanionAM2.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5114798253279182978" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://bp0.blogger.com/_WQ1-wum4QJo/Rvtp6Xh-gII/AAAAAAAAADU/83W4wXP3Nms/s400/RoloFlex+CompanionAM2.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;The first RoloFlex Companion Product *for Professional Version Only will be Launched on November 15th.&lt;/p&gt;&lt;p&gt;Contributed by longstanding custom app developer Garret Mott of Auto-Mate Software.&lt;/p&gt;&lt;p&gt;Note: Garret has done a number of custom email managers, adding in features such as disclaimer, logo as an image, signature with custom field placement capability, attachments, well... it has a lot of features.  Any developer looking for a custom email attachment to their product please contact &lt;a href="http://www.automatesoftware.com/"&gt;http://www.automatesoftware.com/&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Note: This is intended as a launch of companion products, both for RoloFlex, and a platform for getting your Visual DataFlex product out in a new market. Please contact &lt;a href="http://www.applausesoftware.com/"&gt;http://www.applausesoftware.com/&lt;/a&gt; for more details and a prototype agreement.&lt;/p&gt;&lt;p&gt;Thanks! Good luck to the pooch - "Rolo".&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36681721-5975955776457071581?l=applausesoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://applausesoftware.blogspot.com/feeds/5975955776457071581/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=36681721&amp;postID=5975955776457071581' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36681721/posts/default/5975955776457071581'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36681721/posts/default/5975955776457071581'/><link rel='alternate' type='text/html' href='http://applausesoftware.blogspot.com/2007/09/roloflex-companion-1.html' title='RoloFlex Companion #1'/><author><name>ApplauseSoftware</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_WQ1-wum4QJo/SyOt495ekYI/AAAAAAAAAKs/InJSnkrwZxc/S220/peterd.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_WQ1-wum4QJo/Rvtp6Xh-gII/AAAAAAAAADU/83W4wXP3Nms/s72-c/RoloFlex+CompanionAM2.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36681721.post-8903605867248346269</id><published>2007-09-22T05:17:00.000-04:00</published><updated>2007-09-22T05:22:15.214-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Freeware Visual DataFlex RoloFLEX by Applause Software'/><title type='text'>www.RoloFlex.Biz - New Home for RoloFlex</title><content type='html'>&lt;a href="http://bp1.blogger.com/_WQ1-wum4QJo/RvTd4Xh-gEI/AAAAAAAAAC0/h7svdpbohUM/s1600-h/RoloFlexProfessional.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5112955437431291970" style="FLOAT: right; MARGIN: 0px 0px 10px 10px; CURSOR: hand" alt="" src="http://bp1.blogger.com/_WQ1-wum4QJo/RvTd4Xh-gEI/AAAAAAAAAC0/h7svdpbohUM/s400/RoloFlexProfessional.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;RoloFlex: now 2 flavors:&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Personal and Professional&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;*The professional version simply has a valid VDF client license sold for commercial/business clients.&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;The new home is:&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.roloflex.biz/"&gt;http://www.roloflex.biz/&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;And a more professional interface is coded to accomodate the release.&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Regards, Peter &amp;amp; Kimberly Donovan&lt;/div&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/36681721-8903605867248346269?l=applausesoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://applausesoftware.blogspot.com/feeds/8903605867248346269/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=36681721&amp;postID=8903605867248346269' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36681721/posts/default/8903605867248346269'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36681721/posts/default/8903605867248346269'/><link rel='alternate' type='text/html' href='http://applausesoftware.blogspot.com/2007/09/wwwroloflexbiz-new-home-for-roloflex.html' title='www.RoloFlex.Biz - New Home for RoloFlex'/><author><name>ApplauseSoftware</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_WQ1-wum4QJo/SyOt495ekYI/AAAAAAAAAKs/InJSnkrwZxc/S220/peterd.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_WQ1-wum4QJo/RvTd4Xh-gEI/AAAAAAAAAC0/h7svdpbohUM/s72-c/RoloFlexProfessional.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36681721.post-4191557573470625412</id><published>2007-09-21T10:39:00.000-04:00</published><updated>2007-09-21T10:49:09.573-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Visual DataFlex Studio'/><title type='text'>A guide to discovering the Visual DataFlex Studio</title><content type='html'>&lt;a href="http://bp3.blogger.com/_WQ1-wum4QJo/RvPZuHh-gDI/AAAAAAAAACs/KuljT_qNaBY/s1600-h/RAD.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5112669388314411058" style="FLOAT: right; MARGIN: 0px 0px 10px 10px; CURSOR: hand" alt="" src="http://bp3.blogger.com/_WQ1-wum4QJo/RvPZuHh-gDI/AAAAAAAAACs/KuljT_qNaBY/s320/RAD.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;A beginner’s guide to coding a custom database application in *Visual DataFlex&lt;br /&gt;&lt;/strong&gt;by Peter A Donovan/Applause Software/Boston.&lt;br /&gt;&lt;br /&gt;*Visual DataFlex is a trademark of Data Access Worldwide of Miami.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Overview:&lt;/strong&gt;&lt;br /&gt;Here’s a conceptual step-by-step methodology for creating your first Visual DataFlex application.&lt;br /&gt;&lt;strong&gt;Note:&lt;/strong&gt;&lt;br /&gt;Visual DataFlex is a “transparent back end” database application studio where the same exact code runs on your choice of backend.&lt;br /&gt;This overview assumes you will start with the native DataFlex backend as a starting point.&lt;br /&gt;&lt;strong&gt;Goal:&lt;/strong&gt;&lt;br /&gt;To encourage you to try the Visual DataFlex studio for a test drive using [freeware] the Personal DataFlex edition licensed for personal but not commercial use.&lt;br /&gt;This is a full studio deploy with no restrictions other than mentioned above.&lt;br /&gt;&lt;strong&gt;Compelling Reasons:&lt;/strong&gt;&lt;br /&gt;&lt;em&gt;You can most likely produce a fundamentally solid application in ½ the time as your current studio.&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;First, let’s assume you have the studio downloaded from &lt;a href="http://www.visualdataflex.com/"&gt;http://www.visualdataflex.com/&lt;/a&gt; and you are running on a 30 day eval prior to getting a license.&lt;br /&gt;&lt;br /&gt;If you fire up the Visual DataFlex Studio, you’ve got the “order entry” sample example workspace automatically loaded for you, and the current project is “Order.src”. From this point, you should hit [F5] and the “source code = src” will compile into an executable and run. Please check out the features of the running program. This, we will code ourselves in a new “SRC” project to see how it was done.&lt;br /&gt;&lt;br /&gt;1. From the menu, choose File-New-Project-Windows Project, and you will get a dialog asking for the .EXE name. Please type “Test” and press ok.&lt;br /&gt;2. For fun, just hit [F5] and compile an executable, which you will find is a perfect MDI [multiple dialog interface] container with no functionality BUT… the button bar, menu headers, and runtime are all done.&lt;br /&gt;3. Back in the Studio, let’s create a data entry program or form if you will. Click File-New-View/Report-Data Entry View Wizard, and click Ok.&lt;br /&gt;4. From the wizard, click “next” on the opening page.&lt;br /&gt;5. For an object name, please enter “oSalesOrder” and accept the defaults for the next 2 windows and click “next”.&lt;br /&gt;6. Next page: change the radio button please to select “create a header-detail entry view” and click “next”.&lt;br /&gt;7. Now, the time has come to select the CHILD table for the data entry view, so highlight “OrderDtl” and click “next”.&lt;br /&gt;8. For the “header” data table, we will select “Orderhea” and click “next”.&lt;br /&gt;9. Now, we select the columns “fields” to show in the data entry HEADER section, and I recommend: Choose ALL the columns from the OrderHeader table EXCEPT the last one [last detail number] and click “next”.&lt;br /&gt;10. Now, we select the columns “fields” to show in the child grid below the header, and I recommend: Choose ALL the columns [except for the FIRST : ordernumber] from the detail table and click “next”.&lt;br /&gt;11. Next, you get to customize the labels for each of the forms if you like, but the default has already been programmed into the datadictionary, so simply change the radio button to “right” justify the labels, and click “next”, and “Finish”.&lt;br /&gt;12. Press [F5] which auto-saves and compiles your SRC into a EXE and test!&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;You now have a running program [under the view menu] which actually saves sales orders and detail lines. Not the most appealing visually, but structurally sound. &lt;span style="font-size:78%;"&gt;&lt;br /&gt;&lt;/span&gt;You will find that there are entry methods associated with some database columns, and exit methods associated with some. You MUST find a parent table record in order to save, and you MUST fill in some required fields. There’s a snazzy lookup list [expandable] for each of the associated tables, and some columns automatically are instantiated as comboforms for you automatically. A couple of small modifications later and we are on the road to deploying this. [omitted].&lt;br /&gt;&lt;br /&gt;This is just a sample of the power of Visual DataFlex, and a few words of explanation are required to answer questions that this may have raised.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;* The datadictionary for each of the tables has been pre-coded for you in this sample example.&lt;br /&gt;* The datadictionary for the parent tables adjusts automatically, knowing that it is used as a parent reference, to be “find required” in an excellent display of polymorphism. The same exact table behaves differently when it is the main table for data entry, i.e. no “find required”.&lt;br /&gt;* The key fields/columns of each table cannot be changed: they are protected from change via a checkbox in the datadictionary.&lt;br /&gt;* The labels for each column are configured in the datadictionary so they appear consistent throughout your application.&lt;br /&gt;* The lookup lists, called selection lists are assigned to a table-column in the datadictionary so they automatically appear with a prompt button with no code.&lt;br /&gt;* The Order Header TOTAL automatically adds and subtracts based on what you do with the lineitems: delete/save new/change.&lt;br /&gt;* The Product on_hand total automatically adds and subtracts based on what you do with the lineitems: delete/save new/change.&lt;br /&gt;* For a real LASTING impression of visual dataflex, please note the quantity onhand of a lineitem product, and then CHANGE the product in the lineitem without changing the quantity. * Then, choose the lookup, and you will see that the lineitem quantity has been moved back INTO inventory for the product you changed. Note: there are about 5 lines of code in the datadictionary that make this happen!&lt;br /&gt;* Now, for real fun…, place the cursor in the header section on customer and choose DELETE from the button bar. Surprise, the customer is not deleted but the entire order and all of it’s lineitems are deleted. Repeat: place the cursor on the product code column of an existing lineitem and hit DELETE. The product is not deleted, but only the lineitem.&lt;br /&gt;&lt;br /&gt;By this point, you may be ready to give the datadictionary a once-over!&lt;br /&gt;From the Studio, select Tools-Database Builder. This utility creates the CLASS that each datadictionary object [in your entry form] is based on.&lt;br /&gt;From the “Open Table” pulldown, select “Order Header” and browse thru the settings. It’s extremely impressive I think in the maturity of the product.&lt;br /&gt;&lt;br /&gt;Ok, you want to give Visual DataFlex a shot, but where do you go for help?&lt;br /&gt;The Visual DataFlex newsgroup: The url is: &lt;a href="news://news.dataaccess.com/visual-dataflex"&gt;news://news.dataaccess.com/visual-dataflex&lt;/a&gt;&lt;br /&gt;Please introduce yourself as a new developer and we will welcome you with advice and support.&lt;br /&gt;&lt;br /&gt;Thanks for giving Visual DataFlex a trial, and look forward to seeing you on the newsgroup!&lt;br /&gt;&lt;br /&gt;Sincerely,&lt;br /&gt;Peter A Donovan&lt;br /&gt;&lt;a href="http://www.applausesoftware.com/"&gt;http://www.applausesoftware.com/&lt;/a&gt; of Boston, USA&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36681721-4191557573470625412?l=applausesoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://applausesoftware.blogspot.com/feeds/4191557573470625412/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=36681721&amp;postID=4191557573470625412' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36681721/posts/default/4191557573470625412'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36681721/posts/default/4191557573470625412'/><link rel='alternate' type='text/html' href='http://applausesoftware.blogspot.com/2007/09/guide-to-discovering-visual-dataflex.html' title='A guide to discovering the Visual DataFlex Studio'/><author><name>ApplauseSoftware</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_WQ1-wum4QJo/SyOt495ekYI/AAAAAAAAAKs/InJSnkrwZxc/S220/peterd.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_WQ1-wum4QJo/RvPZuHh-gDI/AAAAAAAAACs/KuljT_qNaBY/s72-c/RAD.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36681721.post-7623858960642297054</id><published>2007-09-21T05:35:00.000-04:00</published><updated>2007-09-21T05:41:27.533-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Visual DataFlex'/><category scheme='http://www.blogger.com/atom/ns#' term='Joe Coley'/><category scheme='http://www.blogger.com/atom/ns#' term='NEDC'/><title type='text'>The Agile Manifesto</title><content type='html'>Quick Note:&lt;br /&gt;&lt;br /&gt;This morning, I read one of the greatest blog articles by Joe Coley of the NEDC. In a newly opened blog, Joe's article just posted features the AGILE MANIFESTO which is an incredibly poignant statement about software development philosophy.&lt;br /&gt;&lt;br /&gt;I recommend checking in on Joe's blog as a "must read"- &lt;a href="http://itknowledgeexchange.techtarget.com/customapps/" target="_blank" rel="nofollow"&gt;http://itknowledgeexchange.techtarget.com/customapps/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Joe's photo and background can also be found at:&lt;br /&gt;&lt;a href="http://www.nedataflex.com/NEDCtest1.asp?pageid=22"&gt;http://www.nedataflex.com/NEDCtest1.asp?pageid=22&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;PS: You can become a signatory of this manifesto if you agree with it's content.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36681721-7623858960642297054?l=applausesoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://applausesoftware.blogspot.com/feeds/7623858960642297054/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=36681721&amp;postID=7623858960642297054' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36681721/posts/default/7623858960642297054'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36681721/posts/default/7623858960642297054'/><link rel='alternate' type='text/html' href='http://applausesoftware.blogspot.com/2007/09/agile-manifesto.html' title='The Agile Manifesto'/><author><name>ApplauseSoftware</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_WQ1-wum4QJo/SyOt495ekYI/AAAAAAAAAKs/InJSnkrwZxc/S220/peterd.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36681721.post-4022418527572540460</id><published>2007-09-20T22:19:00.000-04:00</published><updated>2007-09-20T22:40:27.885-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Visual DataFlex'/><category scheme='http://www.blogger.com/atom/ns#' term='Publicity for Visual DataFlex'/><title type='text'>Publising an article about Visual DataFlex</title><content type='html'>&lt;a href="http://bp2.blogger.com/_WQ1-wum4QJo/RvMuD3h-gCI/AAAAAAAAACk/z8BVN2LMuCo/s1600-h/ManhattanService.Com.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5112480645976588322" style="FLOAT: right; MARGIN: 0px 0px 10px 10px; CURSOR: hand" alt="" src="http://bp2.blogger.com/_WQ1-wum4QJo/RvMuD3h-gCI/AAAAAAAAACk/z8BVN2LMuCo/s320/ManhattanService.Com.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;div&gt;&lt;strong&gt;&lt;em&gt;Publicity for Visual DataFlex:&lt;/em&gt;&lt;/strong&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;div&gt;&lt;span style="font-family:verdana;"&gt;I am writing this article specifically geared for &lt;strong&gt;&lt;em&gt;Visual DataFlex developers&lt;/em&gt;&lt;/strong&gt; who would like to write an article publicizing your views or information about visual dataflex...&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="font-family:Verdana;"&gt;I personally have tried to publicize VDF thru article writing, and posting to different sources, and would recommend the following strategy to anyone who would like to do the same:&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:verdana;"&gt;&lt;strong&gt;&lt;em&gt;In looking for publicity for Visual DataFlex&lt;/em&gt;&lt;/strong&gt; &lt;strong&gt;&lt;em&gt;and other associated products, I use this resource to locate a suitable article site&lt;/em&gt;&lt;/strong&gt;:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a href="http://www.manhattanservice.com/" target="_blank" rel="nofollow"&gt;&lt;span style="font-family:verdana;"&gt;http://www.manhattanservice.com/&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:verdana;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="font-family:verdana;"&gt;Manhattan Service is a SEO optimization help site, but specifically a inner link especially for articles:&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://www.manhattanservice.com/network/article-directories/" target="_blank" rel="nofollow"&gt;&lt;span style="font-family:verdana;"&gt;http://www.manhattanservice.com/network/article-directories/&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:verdana;"&gt; &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:verdana;"&gt;which lists [at the bottom] a number of article sites which accept free articles.&lt;br /&gt;&lt;br /&gt;Now, from experience, I recommend 2 sites from this list:&lt;br /&gt;&lt;a href="http://bp2.blogger.com/_WQ1-wum4QJo/RvMsi3h-gAI/AAAAAAAAACU/Ct2BtDxKu1I/s1600-h/EZineArticles.Com.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5112478979529277442" style="FLOAT: right; MARGIN: 0px 0px 10px 10px; CURSOR: hand" alt="" src="http://bp2.blogger.com/_WQ1-wum4QJo/RvMsi3h-gAI/AAAAAAAAACU/Ct2BtDxKu1I/s320/EZineArticles.Com.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="font-family:verdana;"&gt;EZine &lt;/span&gt;&lt;a href="http://bp1.blogger.com/_WQ1-wum4QJo/RvMs7nh-gBI/AAAAAAAAACc/Xbx6whN6aj4/s1600-h/Buzzle.Com.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5112479404731039762" style="FLOAT: right; MARGIN: 0px 0px 10px 10px; CURSOR: hand" alt="" src="http://bp1.blogger.com/_WQ1-wum4QJo/RvMs7nh-gBI/AAAAAAAAACc/Xbx6whN6aj4/s320/Buzzle.Com.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="font-family:verdana;"&gt;and &lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="font-family:verdana;"&gt;Buzzle &lt;/span&gt;&lt;/div&gt;&lt;span style="font-family:verdana;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;br /&gt;&lt;div&gt;The compelling reasons I recommend these two sites are:&lt;br /&gt;&lt;br /&gt;[1] Will my article be formatted nicely and not cluttered with advertisements on key words within my article?&lt;br /&gt;[2] Will the page rank [power to make the article stand out on google] be high enough to effectively publicize my work?&lt;br /&gt;[3] Are the site underwriting standards tough enough to eliminate spam articles so that my article will not be cluttered by junk articles, AND will it stand a chance of being distributed to other article sites?&lt;br /&gt;[4] Will they review and approve my article in a reasonable time frame?&lt;br /&gt;&lt;br /&gt;Sites to avoid:&lt;br /&gt;ISnare - this site effectively only publicizes when you pay and your articles will just hang in limbo until you do.&lt;br /&gt;&lt;br /&gt;Secondary Site:&lt;br /&gt;Article Factory - this site has low underwiting standards and your post will disappear in time if not popular, however they feed other channels and my article on Visual DataFlex product review got over 600 views, 21 other sites picked up the article, and it is still up and running. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;Note: If you have a blog, and feature articles about Visual DataFlex in the blog, I recommend you visit &lt;/span&gt;&lt;a href="http://www.blogupper.com/" target="_blank" rel="nofollow"&gt;&lt;span style="font-family:verdana;"&gt;www.BlogUpper.Com&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:verdana;"&gt; [a child site of Manhattan Service] for assistance there.&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;&lt;br /&gt;&lt;strong&gt;&lt;em&gt;If you have a topic to write about, and would like to further the cause of Visual DataFlex, please consider publishing an article or more thru these channels!&lt;/em&gt;&lt;/strong&gt; &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:verdana;"&gt;&lt;br /&gt;Sincerely,&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:verdana;"&gt;Peter A Donovan&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36681721-4022418527572540460?l=applausesoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://applausesoftware.blogspot.com/feeds/4022418527572540460/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=36681721&amp;postID=4022418527572540460' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36681721/posts/default/4022418527572540460'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36681721/posts/default/4022418527572540460'/><link rel='alternate' type='text/html' href='http://applausesoftware.blogspot.com/2007/09/publising-article-about-visual-dataflex.html' title='Publising an article about Visual DataFlex'/><author><name>ApplauseSoftware</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_WQ1-wum4QJo/SyOt495ekYI/AAAAAAAAAKs/InJSnkrwZxc/S220/peterd.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_WQ1-wum4QJo/RvMuD3h-gCI/AAAAAAAAACk/z8BVN2LMuCo/s72-c/ManhattanService.Com.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36681721.post-1456505863815765351</id><published>2007-09-17T17:06:00.000-04:00</published><updated>2007-09-19T06:44:27.960-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Freeware Visual DataFlex RoloFLEX by Applause Software'/><title type='text'>RoloFlex 12.4 Released Today</title><content type='html'>&lt;a href="http://bp3.blogger.com/_WQ1-wum4QJo/Ru7ucGmXuyI/AAAAAAAAAB8/lUZj52Mv28o/s1600-h/RoloFlex12.4.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5111284793687391010" style="FLOAT: right; MARGIN: 0px 0px 10px 10px; CURSOR: hand" alt="" src="http://bp3.blogger.com/_WQ1-wum4QJo/Ru7ucGmXuyI/AAAAAAAAAB8/lUZj52Mv28o/s320/RoloFlex12.4.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;font-size:180%;"&gt;RoloFlex 12.4 Released:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;"&gt;RoloFlex 12.4 was released today as a small upgrade to RoloFlex 12.3 which features finishing work to isolate 2 small bugs and add 4 small features.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;"&gt;Features Added:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family:Verdana;"&gt;Print List Of RoloFlex Entries&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:Verdana;"&gt;Print Envelope&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:Verdana;"&gt;Active Toolbar with more choices and data aware highlighting courtesy Peter Brooks [Australia] based on work by Vincent Oorsprong [Netherlands].&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:Verdana;"&gt;Color (or colour if you prefer) added to notes courtesy Nat St. Pierre [Canada].&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;span style="font-family:Verdana;"&gt;Bugs Fixed:&lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;[export all and re-import all did not function properly in all cases] &lt;/li&gt;&lt;br /&gt;&lt;li&gt;[print lead card was not programmed] &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;In addition, RoloFlex has been featured in some web articles, and is starting to be offered by some free software download sites:&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.freewarehome.com/index.html?http%3A//www.freewarehome.com/Business_and_Productivity/Business_Specific/Sales_t.html"&gt;http://www.freewarehome.com/index.html?http%3A//www.freewarehome.com/Business_and_Productivity/Business_Specific/Sales_t.html&lt;/a&gt;&lt;/p&gt;and featured alongside the release of Visual DataFlex personal edition:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.dataaccess.com/enews/2007/Jan_18_2007.htm"&gt;http://www.dataaccess.com/enews/2007/Jan_18_2007.htm&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Thanks to all who contributed to this revision,&lt;br /&gt;&lt;br /&gt;Regards,&lt;br /&gt;Peter and Kimberly Donovan&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36681721-1456505863815765351?l=applausesoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://applausesoftware.blogspot.com/feeds/1456505863815765351/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=36681721&amp;postID=1456505863815765351' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36681721/posts/default/1456505863815765351'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36681721/posts/default/1456505863815765351'/><link rel='alternate' type='text/html' href='http://applausesoftware.blogspot.com/2007/09/roloflex-124-released-today.html' title='RoloFlex 12.4 Released Today'/><author><name>ApplauseSoftware</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_WQ1-wum4QJo/SyOt495ekYI/AAAAAAAAAKs/InJSnkrwZxc/S220/peterd.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_WQ1-wum4QJo/Ru7ucGmXuyI/AAAAAAAAAB8/lUZj52Mv28o/s72-c/RoloFlex12.4.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36681721.post-8884450200999081933</id><published>2007-09-10T00:51:00.000-04:00</published><updated>2007-09-19T06:36:45.651-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Visual DataFlex Rewrite: Visual DataFlex or Visual Basic?'/><title type='text'>Rewrite: VDF or VB? VDF Advantages</title><content type='html'>&lt;a href="http://bp3.blogger.com/_WQ1-wum4QJo/RvD7nyTGBJI/AAAAAAAAACM/jtBnhv2jf_o/s1600-h/vdflogo2a.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5111862238000841874" style="FLOAT: right; MARGIN: 0px 0px 10px 10px; CURSOR: hand" alt="" src="http://bp3.blogger.com/_WQ1-wum4QJo/RvD7nyTGBJI/AAAAAAAAACM/jtBnhv2jf_o/s320/vdflogo2a.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="font-size:180%;"&gt;&lt;strong&gt;&lt;em&gt;Visual DataFlex Advantages&lt;/em&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;Ref: Should I rewrite my system in VB or VDF?&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Visual DataFlex (VDF)&lt;br /&gt;&lt;br /&gt;VDF’s main advantage is speed of development. On a system that deals with large quantities of data, &lt;strong&gt;VB will probably require twice the coding time.&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;One example of this is in error handling. In VB error handling must be coded by hand.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Another example of “out of the box advantages” is the find messages of VDF. Coding “find first or last” is completely supported and coded by VDF into augmentable methods available at both the object and datadictionary class levels.&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;Overview: VDF is designed for data awareness in a completely scripted environment while VB is not designed as a data aware out of the box solution.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Second, VDF is completely in harmony with your current code base and data.&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;A conversion of DOS DataFlex to VDF can take your tried and true code and move it mostly intact into an OOPS VDF system dependably without reinventing the wheel.&lt;br /&gt;&lt;br /&gt;A conversion of DOS DataFlex to VDF also has the advantage of being run simultaneously with DOS. You can phase the system in gradually instead of being an all out conversion. You can even use the same data tables as DOS until the conversion is complete, and then switch over to client-server when VDF passes validation and takes over the complete role from DOS.&lt;br /&gt;&lt;br /&gt;VDF is a great front end for many databases: DataFlex, Pervasive, MySQL, DB2, Oracle, and MS SQL Server for example. The same program code will work, no matter what database you choose (or switch to).&lt;br /&gt;&lt;br /&gt;VDF has a 30-year history as a development language designed for working with data. VB has data capability as an add-on. The first 2 versions of VB weren’t even database aware!&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;VDF has a light footprint. Complex systems can run tolerably well on 5+ year old computers. VB.net requires “power-user” type computers for all users to get reasonable performance.&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;VDF is truly Object Oriented. This type of programming makes development faster, cleaner, &amp;amp; more easily changed down the road. VB is “Object Based” – a partway implementation of the OOPs concept. One part of OOPs is “Classes”. These allow flexible extension of the controls that are used to display data.&lt;br /&gt;&lt;br /&gt;· For example, suppose you want to color all fields that are indexed (&amp;amp; therefore can be used for finding). Add the code for doing this into the class, recompile &amp;amp; now every instance of every field that is indexed will be colored. In VB, this change could take weeks – finding every control &amp;amp; adding the code to it.&lt;br /&gt;· Another major advantage to this process is centralized coding. If, for instance, you wanted to change the color assigned to the indexed fields VDF can do this by changing one centralized spot, giving both great power to your code, and also making month-to-month maintenance chores a snap rather than a huge conversion job.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;VDF has Data Dictionaries. DD’s are arguably the most powerful part of VDF. All business rules &amp;amp; much of the custom code go here.&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;· The advantage? As a very basic example, say you always want the Customer Name capitalized. Set this in the Customer DD. From then on, every view, dialog, etc. that uses the Customer DD will always capitalize the Customer Name.&lt;br /&gt;&lt;br /&gt;· Two years later, you decide to allow lower case. Go to the DD, change it there &amp;amp; then recompile the application. Every place that uses the Customer Name (doesn’t matter if it’s 1 place or 100) will now allow lower case.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;VDF’s Interconnected Data Dictionary Rule Base:&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;In a VDF application, the database table rules are coded [as above] with basic and advanced business rules. Example: The customer table has a globally applied rule that says the customer can’t go over their credit limit. When you combine the customer DD along with the sales order and lineitem DD, this is what you get:&lt;br /&gt;Customer&lt;br /&gt;&lt;br /&gt;Sales Order&lt;br /&gt;&lt;br /&gt;Lineitem&lt;br /&gt;&lt;br /&gt;Now, when saving a new lineitem, the save operation cascades upwards to the customer table and any attempt to save a lineitem that puts them over the credit limit is denied!&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;VDF has interface features that make it far easier for the user:&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;Lookups: These are popup lists that (at the click of a button or press of a key) are set up to make finding easy. For example, to look up an order, you might show Order #, Date, Customer, Ship To, Total &amp;amp; Status. The user can really see what they need to do their job efficiently.&lt;br /&gt;&lt;br /&gt;Indexing: Put the cursor in the Order # field &amp;amp; you can move back &amp;amp; forth through the table in Order # order. Put it in Order Date &amp;amp; you can browse by Order Date, etc. – no programming required (except creating the indices).&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;The VDF interface is designed for data entry: &lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;The standard VDF application is MDI (Multiple Document Interface). This allows the user to have 2, 3 or more views of data open at a time, but the whole application can be minimized at one click of a button. It also puts menus and toolbars at the top of the application so they don’t have to be added to each view.&lt;br /&gt;&lt;br /&gt;If your users prefer to navigate from field to field with the Enter key (instead of Tab) – add one line of code, recompile &amp;amp; you’re done.&lt;br /&gt;&lt;br /&gt;Every action that you can do with a mouse, you can also do with a key or key combination. This means faster &amp;amp; easier entry for skilled users, while allowing the use of the mouse by users who prefer it.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;VDF has backward &amp;amp; forward compatibility. An application written in version 9.1 will compile &amp;amp; run in 12.0 (5 versions later) with little or no changes to the code.&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;VDF pioneered teaming Windows applications with Web applications. A VDF WebApp can easily work with the same data (including the data dictionaries!) that your Windows system uses.&lt;br /&gt;&lt;br /&gt;-End Presentation-&lt;br /&gt;&lt;br /&gt;Publications:&lt;br /&gt;Your article, "Visual DataFlex Vs Visual Basic - Visual DataFlex Advantages" - has been accepted and added to the EzineArticles.com directory:&lt;br /&gt;&lt;a href="http://ezinearticles.com/?id=731962" target="_blank"&gt;http://EzineArticles.com/?id=731962&lt;/a&gt;&lt;br /&gt;You've also earned Expert Author status:&lt;a href="http://ezinearticles.com/?expert=Peter_Donovan" target="_blank"&gt;http://EzineArticles.com/?expert=Peter_Donovan&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36681721-8884450200999081933?l=applausesoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://applausesoftware.blogspot.com/feeds/8884450200999081933/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=36681721&amp;postID=8884450200999081933' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36681721/posts/default/8884450200999081933'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36681721/posts/default/8884450200999081933'/><link rel='alternate' type='text/html' href='http://applausesoftware.blogspot.com/2007/09/rewrite-vdf-or-vb-vdf-advantages.html' title='Rewrite: VDF or VB? VDF Advantages'/><author><name>ApplauseSoftware</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_WQ1-wum4QJo/SyOt495ekYI/AAAAAAAAAKs/InJSnkrwZxc/S220/peterd.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_WQ1-wum4QJo/RvD7nyTGBJI/AAAAAAAAACM/jtBnhv2jf_o/s72-c/vdflogo2a.JPG' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36681721.post-3445889184918751900</id><published>2007-09-10T00:05:00.000-04:00</published><updated>2007-09-10T01:00:48.757-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Subclassing a SL in Visual DataFlex'/><title type='text'>Subclassing SL in Visual DataFlex</title><content type='html'>Hi, while others would think it strange to hear, I have just programmed my first global variable ever and am happy with my decision! As many know, Applause Software is a North American Mfg's rep for Soft Sys which is currently negotiating a VDF 12.1 release of it's proven VDF7 verticle market product named "MASS" (Membership Administration Software Solution). This work is for that project. Much of the code design involves making all instances of a GUI standardized and centralized in coding technique.&lt;br /&gt;&lt;br /&gt;Ref: &lt;a href="http://www.membershipadmin.com/"&gt;http://www.membershipadmin.com/&lt;/a&gt;&lt;br /&gt;Ref: Peter Brooks @ SoftSys: &lt;a href="mailto:Info@MembershipAdmin.Com"&gt;Info@MembershipAdmin.Com&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;In keeping with my best oops foundation, I have never ever coded a global variable until now. I always used client area properties to communicate between views etc.&lt;br /&gt;&lt;br /&gt;The premise:&lt;br /&gt;How to program a selection list or popup dialog to say whether the user pressed OK or not.&lt;br /&gt;&lt;br /&gt;Many decisions, especially in views and reportviews need to know if the user changed the value in the dbform or form. Usage of onchange needs to be programmed into each and every dbform or form if this is desired, getting the value prior to forward sending prompt and getting the value after forward sending prompt. Very messy that way.&lt;br /&gt;&lt;br /&gt;So:&lt;br /&gt;My global variable is necessary because:&lt;br /&gt;It's programmed into the classes which will be precompiled prior to the client area existing.&lt;br /&gt;Since it's a SL value, each and every dbmodal panel would have to be non-deferred-create if the panel carried the property.&lt;br /&gt;&lt;br /&gt;Explanation of this:&lt;br /&gt;Procedure Prompt&lt;br /&gt;Boolean bOk&lt;br /&gt;Set pbOk of (prompt_object(self)) to false // doesn't exist yet! // error!&lt;br /&gt;Forward Send Prompt&lt;br /&gt;Get pbOk of (prompt_object(self)) to bOk // dialog has been destroyed // error!&lt;br /&gt;End_Procedure&lt;br /&gt;&lt;br /&gt;The gv: // [global variable]&lt;br /&gt;&lt;br /&gt;Boolean gbOK&lt;br /&gt;Contained in the TOP of the custom classes use package.&lt;br /&gt;This way, if the classes are used in another program, you don't have to code the gv again.&lt;br /&gt;My classes for Soft Sys based on the dbModalPanel: (special subclass for selection lists).&lt;br /&gt;&lt;br /&gt;//============================================//&lt;br /&gt;Class cSoftSysDbModalPanel is a dbModalPanel&lt;br /&gt;Procedure Construct_Object&lt;br /&gt;Forward Send Construct_Object&lt;br /&gt;// Define new Properties:&lt;br /&gt;Property Boolean pbSelectionList Public False&lt;br /&gt;// Create child objects:&lt;br /&gt;// Set property values:&lt;br /&gt;End_Procedure&lt;br /&gt;&lt;br /&gt;Procedure End_Construct_Object&lt;br /&gt;Forward Send End_Construct_Object&lt;br /&gt;// Add your code that needs to be executed at the end of the object construction here:&lt;br /&gt;// This overrides the individual object settings as existed in VDF7&lt;br /&gt;If (not(pbSelectionList(Self))) Set Border_Style to Border_Dialog&lt;br /&gt;Else Set Border_Style to Border_Thick&lt;br /&gt;End_Procedure&lt;br /&gt;// Create and augment procedures and functions&lt;br /&gt;Procedure Popup&lt;br /&gt;Move False to gbOk&lt;br /&gt;Forward Send Popup&lt;br /&gt;End_Procedure&lt;br /&gt;Procedure Set Label String sMyLabel&lt;br /&gt;// intercepts the setting of the label, and does a language [australian to usa] translation!&lt;br /&gt;Integer iPos1 iPos2&lt;br /&gt;If (sMyLabel &gt; "") Begin&lt;br /&gt;If (CurrentCountry(Self) = "United States") Begin&lt;br /&gt;POS "Enrol" in sMyLabel to iPOS1&lt;br /&gt;POS "Enroll" in sMyLabel to iPOS2&lt;br /&gt;If (iPOS1 &lt;&gt; iPOS2) Replace "Enrol" in sMyLabel With "Enroll"&lt;br /&gt;POS "enrol" in sMyLabel to iPOS1&lt;br /&gt;POS "enroll" in sMyLabel to iPOS2&lt;br /&gt;If (iPOS1 &lt;&gt; iPOS2) Replace "enrol" in sMyLabel With "Enroll"&lt;br /&gt;End&lt;br /&gt;Forward Set Label to sMyLabel&lt;br /&gt;End&lt;br /&gt;End_Procedure&lt;br /&gt;// Automatic Save_Header for dbgrids etc. built into dbView-dbModalPanel.&lt;br /&gt;Function DoSaveHeader Returns Boolean&lt;br /&gt;Send Request_Save_No_Clear&lt;br /&gt;If (Should_Save(Server(Self))) Function_Return True&lt;br /&gt;If (IsNullRowID(CurrentRowID(Server(Self)))) Begin&lt;br /&gt;Error DFErr_Operator "Please Enter Info In Top Part Of Entry Form"&lt;br /&gt;End&lt;br /&gt;If (Err) Function_Return True&lt;br /&gt;Function_Return False&lt;br /&gt;End_Function&lt;br /&gt;// Note: See individual topic in previous post for this function!&lt;br /&gt;End_Class&lt;br /&gt;//============================================//&lt;br /&gt;// Note: with search and replace, I replaced the class of all SL panels with this one:&lt;br /&gt;Class cSoftSysDbModalPanelSL is a cSoftSysdbModalPanel&lt;br /&gt;Procedure Construct_Object&lt;br /&gt;Forward Send Construct_Object&lt;br /&gt;// Define new Properties:&lt;br /&gt;// Create child objects:&lt;br /&gt;// Set property values:&lt;br /&gt;Set pbSelectionList to True&lt;br /&gt;End_Procedure&lt;br /&gt;Procedure End_Construct_Object&lt;br /&gt;Forward Send End_Construct_Object&lt;br /&gt;// Add your code that needs to be executed at the end of the object construction here:&lt;br /&gt;End_Procedure&lt;br /&gt;// Create and augment procedures and functions&lt;br /&gt;End_Class&lt;br /&gt;//============================================//&lt;br /&gt;// Note: with search and replace, I replaced all instances of dbLists with this class:&lt;br /&gt;Class cSoftSysDbList is a dbList&lt;br /&gt;Procedure Construct_Object&lt;br /&gt;Forward Send Construct_Object&lt;br /&gt;// Define new Properties:&lt;br /&gt;// Create child objects:&lt;br /&gt;// Set property values:&lt;br /&gt;Send DoDefineShadowedColorUpgradeProperties&lt;br /&gt;End_Procedure&lt;br /&gt;&lt;br /&gt;Import_Class_Protocol cSoftSysShadowedColorUpgrade&lt;br /&gt;&lt;br /&gt;Procedure End_Construct_Object&lt;br /&gt;Forward Send End_Construct_Object&lt;br /&gt;// Add your code that needs to be executed at the end of the object construction here:&lt;br /&gt;// These setting OVERRIDE the object settings whatever they may be!&lt;br /&gt;// Makes previously coded stuff all uniform now.&lt;br /&gt;Set CurrentRowColor to clYellow&lt;br /&gt;Set GridLine_Mode to Grid_Visible_Both&lt;br /&gt;Set peAnchors to anAll&lt;br /&gt;End_Procedure&lt;br /&gt;Procedure Set Header_Label Integer iColumn String sText&lt;br /&gt;// Another interception of setting the label for a language translation...&lt;br /&gt;If System.Label_Surname gt "" Replace "Surname" in sText with (Trim(System.Label_Surname))&lt;br /&gt;Else If (CurrentCountry(Self) = "United States") Replace "Surname" in sText with "Last Name:"&lt;br /&gt;Forward Set Header_Label item iColumn to sText&lt;br /&gt;End_Procedure&lt;br /&gt;// Create and augment procedures and functions&lt;br /&gt;Procedure Ok&lt;br /&gt;If (Move_Value_Out_State(Self)) Move True to gbOk&lt;br /&gt;Forward Send Ok&lt;br /&gt;End_Procedure&lt;br /&gt;End_Class&lt;br /&gt;//============================================//&lt;br /&gt;&lt;br /&gt;So now, in effect, what I am doing with the global variable is setting it to false on popup and setting it to true upon clicking the OK button of the SL or pressing enter to select a record in the SL.&lt;br /&gt;&lt;br /&gt;Because it's a global variable, it can be coded into the classes which are precompiled prior to the client area (on the desktop) and referred to in class code prior to the oApplication being executed to open the workspace etc.&lt;br /&gt;&lt;br /&gt;End Result in Code: // if you need to know whether the user is getting a variable from the SL:&lt;br /&gt;&lt;br /&gt;Object oMyForm is a cSoftSysForm // non data aware such as in a report.&lt;br /&gt;Procedure Prompt&lt;br /&gt;Forward Send Prompt&lt;br /&gt;If (gbOk) Begin&lt;br /&gt;// do whatever you need to do with the value like setting a property to govern the constraints or output options.&lt;br /&gt;End&lt;br /&gt;End_Procedure&lt;br /&gt;&lt;br /&gt;//===================================//&lt;br /&gt;End Article!&lt;br /&gt;PAD&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36681721-3445889184918751900?l=applausesoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://applausesoftware.blogspot.com/feeds/3445889184918751900/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=36681721&amp;postID=3445889184918751900' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36681721/posts/default/3445889184918751900'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36681721/posts/default/3445889184918751900'/><link rel='alternate' type='text/html' href='http://applausesoftware.blogspot.com/2007/09/subclassing-sl-in-visual-dataflex.html' title='Subclassing SL in Visual DataFlex'/><author><name>ApplauseSoftware</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_WQ1-wum4QJo/SyOt495ekYI/AAAAAAAAAKs/InJSnkrwZxc/S220/peterd.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36681721.post-8035909511173791389</id><published>2007-09-09T02:55:00.000-04:00</published><updated>2007-09-17T17:37:44.996-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SaveHeader Function for Visual DataFlex 12'/><title type='text'>SaveHeader Function: an upgrade</title><content type='html'>&lt;span style="font-size:180%;"&gt;SaveHeader Function&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;em&gt;Upgrade Suggested for your dbgrid's saveheader call to allow entry in them:&lt;/em&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;// DAW coded save_header function.&lt;br /&gt;&lt;br /&gt;Function Save_Header Returns Integer&lt;br /&gt;Boolean bHasRec bChanged&lt;br /&gt;Handle hoSrvr&lt;br /&gt;&lt;br /&gt;Get Server to hoSrvr // The Header DDO.&lt;br /&gt;Get HasRecord of hoSrvr to bHasRec // Do we have a record?&lt;br /&gt;Get Should_Save to bChanged // Are there any current changes?&lt;br /&gt;&lt;br /&gt;// If there is no record and no changes we have an error.&lt;br /&gt;If ( not(bHasRec) and not(bChanged) ) Begin // no rec&lt;br /&gt;Error DfErr_Operator 'You must First Create &amp;amp; Save Main Order Header'&lt;br /&gt;Function_Return 1&lt;br /&gt;End&lt;br /&gt;&lt;br /&gt;// Attempt to Save the current Record&lt;br /&gt;// request_save_no_clear does a save without clearing.&lt;br /&gt;Send Request_Save_No_Clear&lt;br /&gt;&lt;br /&gt;// The save succeeded if there are now no changes, and we&lt;br /&gt;// have a saved record. Should_save tells us if we've got changes.&lt;br /&gt;// We must check the data-sets hasRecord property to see if&lt;br /&gt;// we have a record. If it is not, we had no save.&lt;br /&gt;Get Should_Save to bChanged // is a save still needed&lt;br /&gt;Get HasRecord of hoSrvr to bHasRec // current record of the DD&lt;br /&gt;// if no record or changes still exist, return an error code of 1&lt;br /&gt;If ( not(bHasRec) or (bChanged)) ;&lt;br /&gt;Function_Return 1&lt;br /&gt;End_Function // Save_Header&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;em&gt;// Suggested replacement for same:&lt;br /&gt;&lt;/em&gt;&lt;/strong&gt;&lt;br /&gt;Function SaveHeader Returns Boolean&lt;br /&gt;    Send Request_Save_No_Clear&lt;br /&gt;    If (Should_Save(Server(Self))) Function_Return True&lt;br /&gt;    If (IsNullRowID(CurrentRowID(Server(Self)))) Begin&lt;br /&gt;        Error DFErr_Operator "Please First Enter Info in the Order Header"&lt;br /&gt;    End&lt;br /&gt;    If (Err) Function_Return True&lt;br /&gt;    Function_Return False&lt;br /&gt;End_Function&lt;br /&gt;// Notes:&lt;br /&gt;// Save Requests never save blank records so it's safe to call at any time&lt;br /&gt;// We don't give an error when changes exist because the errors already have run&lt;br /&gt;// We only give an error if no info was entered at all in the header&lt;br /&gt;// Ref: Garret Mott's whitepaper "Software as a conversation" we say please.&lt;br /&gt;// This function returns a true value for ANY error not just the one that we send.&lt;br /&gt;// We always return a value in a function whether implied or not.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;em&gt;The second function is both less verbose and superior in both coding technique and performance to the code many software engineers have copied intact from the sample examples.&lt;/em&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;em&gt;In addition, it can be dropped almost intact into a dbview subclass!&lt;/em&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Note: Garret Mott's "Software as a conversation" can be found in the whitepaper section on &lt;a href="http://www.nedataflex.com/"&gt;http://www.nedataflex.com/&lt;/a&gt; and the author can be reached at &lt;a href="http://www.automatesoftware.com/"&gt;http://www.automatesoftware.com/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The author, Peter Donovan, can be found at &lt;a href="http://www.applausesoftware.com/"&gt;http://www.applausesoftware.com/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36681721-8035909511173791389?l=applausesoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://applausesoftware.blogspot.com/feeds/8035909511173791389/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=36681721&amp;postID=8035909511173791389' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36681721/posts/default/8035909511173791389'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36681721/posts/default/8035909511173791389'/><link rel='alternate' type='text/html' href='http://applausesoftware.blogspot.com/2007/09/saveheader-function-upgrade.html' title='SaveHeader Function: an upgrade'/><author><name>ApplauseSoftware</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_WQ1-wum4QJo/SyOt495ekYI/AAAAAAAAAKs/InJSnkrwZxc/S220/peterd.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36681721.post-1966786705879425877</id><published>2007-09-09T02:37:00.000-04:00</published><updated>2007-09-09T02:46:16.761-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Visual DataFlex Selection List Programming by Applause Software'/><title type='text'>Selection List Upgrade #1</title><content type='html'>&lt;div&gt;&lt;strong&gt;&lt;span style="font-size:180%;"&gt;Selection List Programming in Visual DataFlex&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;Programming a selection [lookup] list in VDF12 can be enhanced with the use of an “enter new” button that allows you to enter a new parent record, and have it “fall thru” the selection list into the data entry program or report.&lt;br /&gt;&lt;br /&gt;The selection list has been made such an amazingly easy task by Data Access Worldwide, where a lookup (as pictured below) can be created in just a few clicks and keystrokes.&lt;br /&gt;&lt;br /&gt;The Selection List [stock] from the Order Entry Sample Example VDF 12.1 …&lt;br /&gt;&lt;a href="http://bp3.blogger.com/_WQ1-wum4QJo/RuOVIkuY6FI/AAAAAAAAAAk/cSTKo7eHmwQ/s1600-h/Selection+List+1a.PNG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5108090376898013266" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://bp3.blogger.com/_WQ1-wum4QJo/RuOVIkuY6FI/AAAAAAAAAAk/cSTKo7eHmwQ/s320/Selection+List+1a.PNG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bp1.blogger.com/_WQ1-wum4QJo/RuOVdEuY6GI/AAAAAAAAAAs/stZyTpDS2J0/s1600-h/Selection+List+1b.PNG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5108090729085331554" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://bp1.blogger.com/_WQ1-wum4QJo/RuOVdEuY6GI/AAAAAAAAAAs/stZyTpDS2J0/s320/Selection+List+1b.PNG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;The second SL pictured is a great candidate for the addition of an “add new” button.&lt;br /&gt;End result desired pictured here: &lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;a href="http://bp0.blogger.com/_WQ1-wum4QJo/RuOVp0uY6HI/AAAAAAAAAA0/Q_obkOgu4zY/s1600-h/Selection+List+Add+New.PNG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5108090948128663666" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://bp0.blogger.com/_WQ1-wum4QJo/RuOVp0uY6HI/AAAAAAAAAA0/Q_obkOgu4zY/s320/Selection+List+Add+New.PNG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;… and the add new dialog: &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;a href="http://bp3.blogger.com/_WQ1-wum4QJo/RuOWNkuY6II/AAAAAAAAAA8/dcapuatvpI8/s1600-h/Add+New+Dialog.PNG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5108091562308987010" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://bp3.blogger.com/_WQ1-wum4QJo/RuOWNkuY6II/AAAAAAAAAA8/dcapuatvpI8/s320/Add+New+Dialog.PNG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;What follows is;&lt;br /&gt;&lt;br /&gt;[1] The code from the Modal Dialog&lt;br /&gt;[2] The code from the Selection List&lt;br /&gt;&lt;br /&gt;(In VDF 12.1 code)&lt;br /&gt;&lt;br /&gt;//====================================//&lt;br /&gt;// dbModalPanel = Popup Dialog for entering new sales person&lt;br /&gt;&lt;br /&gt;Use DFClient.pkg&lt;br /&gt;Use SalesP.DD&lt;br /&gt;Use Customer.DD&lt;br /&gt;Use OrderHea.DD&lt;br /&gt;Use DFEntry.pkg&lt;br /&gt;&lt;br /&gt;Object SalepAddNewDialog is a dbModalPanel&lt;br /&gt;&lt;br /&gt;Property Boolean pbOK&lt;br /&gt;Property RowID priRowID&lt;br /&gt;&lt;br /&gt;Object oSalesp_DD is a Salesp_DataDictionary&lt;br /&gt;End_Object&lt;br /&gt;&lt;br /&gt;Set Main_DD to oSalesp_DD&lt;br /&gt;Set Server to oSalesp_DD&lt;br /&gt;&lt;br /&gt;Set Label to "Add or Edit Sales Person"&lt;br /&gt;Set Size to 83 308&lt;br /&gt;Set Location to 2 2&lt;br /&gt;Set Border_Style to Border_Dialog&lt;br /&gt;Set Auto_Clear_DEO_State to False // no clear on save&lt;br /&gt;&lt;br /&gt;Procedure Popup&lt;br /&gt;Set pbOk to False&lt;br /&gt;Send Clear of oSalesp_DD&lt;br /&gt;Forward Send Popup&lt;br /&gt;End_Procedure&lt;br /&gt;&lt;br /&gt;Object oSalesP_ID is a dbForm&lt;br /&gt;Entry_Item SalesP.ID&lt;br /&gt;Set Location to 9 91&lt;br /&gt;Set Size to 13 42&lt;br /&gt;Set Label to "Sales Person ID:"&lt;br /&gt;End_Object&lt;br /&gt;&lt;br /&gt;Object oSalesP_Name is a dbForm&lt;br /&gt;Entry_Item SalesP.Name&lt;br /&gt;Set Location to 23 91&lt;br /&gt;Set Size to 13 156&lt;br /&gt;Set Label to "Sales Person Name:"&lt;br /&gt;Set Label_Col_Offset to 2&lt;br /&gt;Set Label_Justification_Mode to JMode_Right&lt;br /&gt;End_Object&lt;br /&gt;&lt;br /&gt;Object oOK_btn is a Button&lt;br /&gt;Set Label to C_$OK&lt;br /&gt;Set Location to 44 185&lt;br /&gt;Set Default_State to True&lt;br /&gt;&lt;br /&gt;Procedure OnClick&lt;br /&gt;Handle hServer&lt;br /&gt;RowID riRowID&lt;br /&gt;Move oSalesp_DD to hServer&lt;br /&gt;Send Request_Save&lt;br /&gt;If (Should_Save(hServer)) Procedure_Return&lt;br /&gt;If (not(Current_Record(hServer))) Begin&lt;br /&gt;Send Info_Box "Please Find Or Enter A New Sales Person ~ Then Click Ok"&lt;br /&gt;Procedure_Return&lt;br /&gt;End&lt;br /&gt;Get CurrentRowID of hServer to riRowID&lt;br /&gt;Set priRowID to riRowID&lt;br /&gt;Set pbOK to True&lt;br /&gt;Send Close_Panel&lt;br /&gt;End_Procedure&lt;br /&gt;&lt;br /&gt;End_Object&lt;br /&gt;&lt;br /&gt;Object oCancel_btn is a Button&lt;br /&gt;Set Label to C_$Cancel&lt;br /&gt;Set Location to 44 243&lt;br /&gt;&lt;br /&gt;Procedure OnClick&lt;br /&gt;Send Close_Panel&lt;br /&gt;End_Procedure&lt;br /&gt;&lt;br /&gt;End_Object&lt;br /&gt;&lt;br /&gt;On_Key Key_Alt+Key_O Send KeyAction of oOk_btn&lt;br /&gt;On_Key Key_Alt+Key_C Send KeyAction of oCancel_btn&lt;br /&gt;&lt;br /&gt;End_Object&lt;br /&gt;&lt;br /&gt;//====================================//&lt;br /&gt;// Selection List augmented only for the add new button:&lt;br /&gt;&lt;br /&gt;Use DFClient.pkg&lt;br /&gt;Use DFSelLst.pkg&lt;br /&gt;Use Windows.pkg&lt;br /&gt;&lt;br /&gt;Use SalesP.DD&lt;br /&gt;Use SalepAddNewDialog.dg&lt;br /&gt;&lt;br /&gt;CD_Popup_Object SalesP_sl is a dbModalPanel&lt;br /&gt;&lt;br /&gt;Set Minimize_Icon to False&lt;br /&gt;Set Label to "Sales People List"&lt;br /&gt;Set Size to 118 265&lt;br /&gt;Set Location to 4 5&lt;br /&gt;Set piMinSize to 97 174&lt;br /&gt;&lt;br /&gt;Object SalesP_DD is a SalesP_DataDictionary&lt;br /&gt;End_Object // Salesp_DD&lt;br /&gt;&lt;br /&gt;Set Main_DD to SalesP_DD&lt;br /&gt;Set Server to SalesP_DD&lt;br /&gt;&lt;br /&gt;Object oSelList is a dbList&lt;br /&gt;Set Main_File to SalesP.File_Number&lt;br /&gt;Set Ordering to 1&lt;br /&gt;Set Size to 71 248&lt;br /&gt;Set Location to 6 6&lt;br /&gt;Set peAnchors to anAll&lt;br /&gt;Set pbHeaderTogglesDirection to True&lt;br /&gt;&lt;br /&gt;Begin_Row&lt;br /&gt;Entry_Item SalesP.ID&lt;br /&gt;Entry_Item SalesP.Name&lt;br /&gt;End_Row&lt;br /&gt;&lt;br /&gt;Set Form_Width 0 to 40&lt;br /&gt;Set Header_Label 0 to "ID"&lt;br /&gt;&lt;br /&gt;Set Form_Width 1 to 200&lt;br /&gt;Set Header_Label 1 to "Sales Person Name"&lt;br /&gt;&lt;br /&gt;End_Object // oSelList&lt;br /&gt;&lt;br /&gt;Object oOK_bn is a Button&lt;br /&gt;Set Label to "&amp;Ok"&lt;br /&gt;Set Location to 81 97&lt;br /&gt;Set peAnchors to anBottomRight&lt;br /&gt;Set Default_State to True&lt;br /&gt;&lt;br /&gt;Procedure OnClick&lt;br /&gt;Send OK To oSelList&lt;br /&gt;End_Procedure&lt;br /&gt;&lt;br /&gt;End_Object // oOK_bn&lt;br /&gt;&lt;br /&gt;Object oCancel_bn is a Button&lt;br /&gt;Set Label to "&amp;amp;Cancel"&lt;br /&gt;Set Location to 81 151&lt;br /&gt;Set peAnchors to anBottomRight&lt;br /&gt;&lt;br /&gt;Procedure OnClick&lt;br /&gt;Send Cancel To oSelList&lt;br /&gt;End_Procedure&lt;br /&gt;&lt;br /&gt;End_Object // oCancel_bn&lt;br /&gt;&lt;br /&gt;Object oSearch_bn is a Button&lt;br /&gt;Set Label to "&amp;Search..."&lt;br /&gt;Set Location to 81 205&lt;br /&gt;Set peAnchors to anBottomRight&lt;br /&gt;&lt;br /&gt;Procedure OnClick&lt;br /&gt;Send Search To oSelList&lt;br /&gt;End_Procedure&lt;br /&gt;&lt;br /&gt;End_Object // oSearch_bn&lt;br /&gt;&lt;br /&gt;Object oAddNew_bn is a Button&lt;br /&gt;Set Label to "&amp;amp;Add New"&lt;br /&gt;Set Location to 81 8&lt;br /&gt;Set peAnchors to anBottom&lt;br /&gt;&lt;br /&gt;Procedure OnClick&lt;br /&gt;Handle hModalDialog&lt;br /&gt;Move (SalepAddNewDialog(Self)) to hModalDialog&lt;br /&gt;Send Popup of hModalDialog&lt;br /&gt;If (pbOk(hModalDialog)) Begin&lt;br /&gt;Send FindByRowID of (Server(Self)) Salesp.File_Number (priRowID(hModalDialog))&lt;br /&gt;Send Display of oSelList&lt;br /&gt;Send Ok of oSelList&lt;br /&gt;End&lt;br /&gt;End_Procedure&lt;br /&gt;&lt;br /&gt;End_Object&lt;br /&gt;&lt;br /&gt;On_Key Key_Alt+Key_A Send KeyAction of oAddNew_bn&lt;br /&gt;On_Key Key_Alt+Key_O Send KeyAction of oOk_bn&lt;br /&gt;On_Key Key_Alt+Key_C Send KeyAction of oCancel_bn&lt;br /&gt;On_Key Key_Alt+Key_S Send KeyAction of oSearch_bn&lt;br /&gt;&lt;br /&gt;CD_End_Object // SalesP_sl&lt;br /&gt;&lt;br /&gt;//====================================//&lt;br /&gt;&lt;br /&gt;End Result of Code:&lt;br /&gt;&lt;br /&gt;The code above results in a “drop-thru” of the new Sales Person entered and puts their ID/intials in the data entry view without stopping at the selection list.&lt;br /&gt;By&lt;br /&gt;Peter A Donovan&lt;br /&gt;Applause Software&lt;br /&gt;September, 2007&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36681721-1966786705879425877?l=applausesoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://applausesoftware.blogspot.com/feeds/1966786705879425877/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=36681721&amp;postID=1966786705879425877' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36681721/posts/default/1966786705879425877'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36681721/posts/default/1966786705879425877'/><link rel='alternate' type='text/html' href='http://applausesoftware.blogspot.com/2007/09/selection-list-upgrade-1.html' title='Selection List Upgrade #1'/><author><name>ApplauseSoftware</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_WQ1-wum4QJo/SyOt495ekYI/AAAAAAAAAKs/InJSnkrwZxc/S220/peterd.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_WQ1-wum4QJo/RuOVIkuY6FI/AAAAAAAAAAk/cSTKo7eHmwQ/s72-c/Selection+List+1a.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36681721.post-7419831266857768091</id><published>2007-08-29T03:31:00.000-04:00</published><updated>2007-09-19T06:23:38.498-04:00</updated><title type='text'>The Theory Of Meaningless Numbers</title><content type='html'>&lt;div align="left"&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size:180%;"&gt;The Theory Of Meaningless Numbers (TMN0001)&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;By&lt;br /&gt;Applause Software&lt;br /&gt;Peter A Donovan&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#3366ff;"&gt;What is a meaningless number?&lt;/span&gt;&lt;br /&gt;Meaningless numbers are ID and CODE columns which uniquely identify a record in a database table. They were made up by computer programmers, and in traditional programming, they formed the first entry window where you were responsible for remembering that “D” means Doctor, and “402” is your best customer. Since it would be wrong to discriminate against an entry window just because it’s a letter and not a number [age of equality] I’ll include meaningless letter combo’s in this theory also.&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;The point?&lt;br /&gt;&lt;/span&gt;Users should not be required to remember “402” for General Electric of Massachusetts and “791” for General Electric Turbine Division”, but programmers should indeed still make use of them as the basis of relationships between database table records. Just don’t expect the users to enter or remember them: the truly meaningless numbers and codes can be totally hidden from users and as a study, I will refer to RoloFlex by Applause Software as a good example where each table is based on a unique meaningless number. [reference: &lt;a href="http://www.applausesoftware.com/"&gt;http://www.applausesoftware.com/&lt;/a&gt; : free RoloFlex]&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#3366ff;"&gt;What is a meaningful number?&lt;br /&gt;&lt;/span&gt;A meaningful number is those database records that are referred to commonly by number such as PO #4067, Sales Order #1, and Speeding Ticket #352-4635A. These numbers exist on paper and are the primary way of referring to a record of this type. When you go to look up my speeding ticket, you might indeed look it up under my name also, but when a payment is received [good luck] you want to be able to enter the printed number 352-4635A and quickly locate and apply payment before my check bounces.&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;Can a meaningful and meaningless number co-exist?&lt;br /&gt;&lt;/span&gt;Yes. Numeric meaningless numbers are the foundation of unique identifiers of each record, and a meaningful number can co-exist as [both] uniquely indexed [findable] columns in the same data table.&lt;br /&gt;&lt;br /&gt;There’s a space here while the programmers hold their heads.&lt;br /&gt;&lt;br /&gt;Let’s say you are a database programmer and know that numbers rather than a string which varies in length [throwing off the sort order completely] should be the foundation of the database record [for speed and relationship purposes only], you can program your unique (meaningless) ID column of speeding tickets, and also have a unique (meaningful) column which is ascii [mixed numbers and letters] which is used for finding it.&lt;br /&gt;&lt;br /&gt;Why not make the key column a automatic increment number for relation purposes alongside a humanly enterable column consisting of alpha-numeric characters? Hands please? How many programmers have written 200 lines of code to auto-increment “#352-4635A”? The role of the meaningless number is to get auto-incremented in 1 line of code, being totally hidden from the user, and the foundation of the relationship to it’s parent database table. The role of the Speeding Ticket number is to humanly find a record more easily than 12342345345565.&lt;br /&gt;&lt;br /&gt;Table Layout Proposed:&lt;br /&gt;-Fines-&lt;/div&gt;&lt;br /&gt;&lt;div align="left"&gt;Column: Element: Type: Length: Index: Relates To:&lt;br /&gt;1 ID Numeric 16.0 1 (unique)&lt;br /&gt;2 TicketNo Ascii 20 2 (unique)&lt;br /&gt;3 VIN_ID Numeric 10.0 3 VIN.ID // Not VIN (Ascii Field)&lt;br /&gt;4 SSN_ID Numeric 10.0 4 SSN.ID // Not SSN (Ascii Field)&lt;br /&gt;&lt;br /&gt;-VIN-&lt;br /&gt;Column: Element: Type: Length: Index: Relates To:&lt;br /&gt;1 ID Numeric 10.0 1 (unique)&lt;br /&gt;2 VIN Ascii 20 2 (unique)&lt;br /&gt;&lt;br /&gt;-SSN-&lt;br /&gt;Column: Element: Type: Length: Index: Relates To:&lt;br /&gt;1 ID Numeric 10.0 1 (unique)&lt;br /&gt;2 SSN Ascii 11 2 (unique)&lt;br /&gt;&lt;br /&gt;This structure makes use of meaningless numbers and meaningful numbers side by side, each fulfilling their job.&lt;br /&gt;&lt;br /&gt;Hopefully there is a programmer slapping his/her head here like the V-8 commercial.&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;The ROLE of a meaningless number:&lt;/span&gt;&lt;br /&gt;Let’s face it. Meaningless numbers are here to stay. Everybody’s got one, but programmers are still stuck on what to do with them. HIDE THEM! In a relational database model, where the child is related to it’s parent by the ID, the value will automatically drop down to the child upon a successful save, making display of this number absolutely unnecessary. I should point out that many good programming firms are based on “Intelligent Design” such as Auto-Mate Software of the USA &lt;a href="http://www.automatesoftware.com/"&gt;http://www.automatesoftware.com/&lt;/a&gt;. Please visit this site to read about the story about “Enter the field matrix number”…. It’s a great story.&lt;br /&gt;&lt;br /&gt;Let’s go a step further and call a byte a byte. Whether it’s a field matrix number or a part number, due concern needs to be put into the design of a “key field” lookup to determine whether or not it’s meaningful or meaningless. On a part number, why not both? To programmers, here’s my argument: why not use this technique so that if the part number is mis-entered, or changes, you can simply reenter the part number without altering the relationship? Madness or magnificent? It’s your opinion that counts.&lt;br /&gt;&lt;br /&gt;Let’s take an example in RoloFlex 12.3 from Applause Software (open source and freeware). The database tables all have a unique ID that is 10 digit numeric: Please refer to the running program and you will see that none are visible. In addition, I have coded the key fields as “noenter” so that if they were made visible, they could not be used! Ten digit ID numbers for everything? Meaningless or Madness?&lt;br /&gt;&lt;br /&gt;Hands again? Each programmer who has had to increase a user’s key ID field from 6 to 8 to accommodate 20 years of data entry please stand up! I’ll bet there are a good many among us. Let’s also note in passing that dates on computers are stored as 6 digit integers, and in the western world we are almost out of numbers in the six digit length! Why have we not expanded our dates to 8 or 10 digits? I guess we’ll have to wait until “Y6K” to find out!&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;The design of meaningless numbers in action:&lt;br /&gt;&lt;/span&gt;Let’s take on a RDBMS [relational database management system] example and specifically look at parent and child table design. My first point should be obvious to most programmers, that a parent ID field is used to uniquely identify the parent but (being meaningless) is not displayed to the user at all. In RoloFlex, please note that the parent database tables of the main table have a unique ID which drops down into the main table upon a save, forming the relationship without being seen.&lt;br /&gt;&lt;br /&gt;Please note (when inspecting the inner table def's for RoloFlex tables) that the Key ID column has a noenter attribute, meaning that the user cannot change or type in a new value to that column should it appear on the screen. It is auto-incremented from the system file “sysfile” and is totally meaningless to even the database designer other than being a unique value. No surprises here, but let’s look at a child table to see the same technique:&lt;br /&gt;&lt;br /&gt;So, what’s the surprise here? On many occasions, I have noticed the lack of a single unique key field on child records. For example, the child of order header would have a key combination of HeaderID and Linenumber. If I applied the same consideration to the CallHist table, then there would be a combo of RolodexID and Call Date as the first index. What [the used] this technique does is to form the basis of a future child table to CallHist. From the get-go, a strong ID field exists to form a potential one-to-one column relationship to a child of CallHist which may exist in the future. The point, then, is to always program an ID column as a unique meaningless number for every table and index it accordingly. Then, progress onwards to specifying all the other columns of the database table.&lt;br /&gt;&lt;br /&gt;As an extra bonus, you will see that “recnum” or record number is not defined in any of the indexes making a move from any one back end to another manufacturer’s back end a relatively easy job.&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;Whitepaper Summary:&lt;/span&gt;&lt;br /&gt;I believe I have defined the difference between a meaningful number and a meaningless number and stated that meaningless numbers have no place in data entry! On the other hand, the argument for placing a meaningless number as the foundation of your relationships overwhelms the reasons that you might have for designing a meaningful number as the relationship key: It is my contention that an alphanumeric or string column has no place as the relationship key, and lastly that each table should have an ID field for forming the relationship which totally frees you to change the secondary key column with data entry without compromising the relationships.&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;Let end users see meaningful numbers only, but put your foundation on “meaningless design” with [hidden] data architecture!&lt;/span&gt;&lt;/div&gt;&lt;div align="left"&gt; &lt;/div&gt;&lt;br /&gt;&lt;a href="http://www.buzzle.com"&gt;&lt;IMG SRC="http://www.buzzle.com/img/banner-ads/buzzle-banners/banner_f125x125.gif" ALT="Buzzle Web Portal" WIDTH=125 HEIGHT=125 BORDER=0&gt;&lt;/a&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36681721-7419831266857768091?l=applausesoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://applausesoftware.blogspot.com/feeds/7419831266857768091/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=36681721&amp;postID=7419831266857768091' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36681721/posts/default/7419831266857768091'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36681721/posts/default/7419831266857768091'/><link rel='alternate' type='text/html' href='http://applausesoftware.blogspot.com/2007/08/theory-of-meaningless-numbers.html' title='The Theory Of Meaningless Numbers'/><author><name>ApplauseSoftware</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_WQ1-wum4QJo/SyOt495ekYI/AAAAAAAAAKs/InJSnkrwZxc/S220/peterd.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36681721.post-3781574179528439312</id><published>2007-06-24T21:34:00.000-04:00</published><updated>2007-09-17T17:06:12.738-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Visual DataFlex written by Applause Software'/><category scheme='http://www.blogger.com/atom/ns#' term='Freeware Visual DataFlex RoloFLEX by Applause Software'/><category scheme='http://www.blogger.com/atom/ns#' term='Modern Sales Theory'/><category scheme='http://www.blogger.com/atom/ns#' term='The Funnel Theory'/><title type='text'>Modern Sales Theory Explained: The Funnel Theory</title><content type='html'>&lt;a href="http://bp1.blogger.com/_WQ1-wum4QJo/Ru7sKmmXuxI/AAAAAAAAAB0/SSWGrjh0Plk/s1600-h/announcing.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5111282294016424722" style="FLOAT: right; MARGIN: 0px 0px 10px 10px; CURSOR: hand" alt="" src="http://bp1.blogger.com/_WQ1-wum4QJo/Ru7sKmmXuxI/AAAAAAAAAB0/SSWGrjh0Plk/s200/announcing.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;Author: Peter A Donovan of Applause Software.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;u&gt;The Funnel Theory&lt;/u&gt;&lt;/strong&gt;:&lt;br /&gt;&lt;br /&gt;First: The Funnel:&lt;br /&gt;&lt;br /&gt;The Funnel is a way of describing your prospect base that is used by ACT and GOLDMINE as their basic premise. The problem with both of these 2 most popular packages in my opinion is that they include so many extra functions in order to sell their product that the basic intent of their system gets lost by users with little or no training and even by veteran users.&lt;br /&gt;&lt;br /&gt;Imagine a funnel, like a megaphone with a large open side on one end and a small open side on the other.&lt;br /&gt;&lt;br /&gt;Many businesses find themselves in business for 30 years and the sales department has information on about only 20% of the potential market due to turnover, record keeping on paper (unusable in many cases because of being outdated), and general policy of not understanding the funnel theory.&lt;br /&gt;&lt;br /&gt;The premise:&lt;br /&gt;The large side represents how many potential accounts you know about in order to be able to contact them and sell your services to.&lt;br /&gt;The small side represents prospects who are ready to make a yes/no decision on a quote or proposal or bid you make and a percentage of these will fall through the small end and become sales.&lt;br /&gt;&lt;br /&gt;4 Goals:&lt;br /&gt;&lt;br /&gt;1. Increase the funnel by marketing, cold calling, meetings, conventions, inbound phone calls, etc. Premise: The more in the funnel, the more fall thru as sales.&lt;br /&gt;2. Increase the number of prospects at the small rim of the funnel, thereby (making the assumption that your closing ratio stays the same) you get more sales.&lt;br /&gt;3. &lt;strong&gt;Skew&lt;/strong&gt; the funnel with leads that are more likely to be sold. This is done by accessing your funnel lead base and marketing (cold call/direct mail, etc) to a proven segment of the market with a higher closing ratio, or customers where you have an add-on product for what they use.&lt;br /&gt;4. By whatever means including skewing the funnel and teaching modern sales tactics to the field reps, you increase your closing ratio.&lt;br /&gt;&lt;br /&gt;6 Assumptions:&lt;br /&gt;&lt;br /&gt;1. The more leads in the funnel brings more opportunity to sell your product. If you don't have a way of regularly contacting the entire funnel this assumption is meaningless. Therefore you must generate advertising directed individually at each funnel listing via phone and mail and email.&lt;br /&gt;2. The more information you gather about each funnel lead brings you closer to a sale. You can't sell an account unless you know the name of the decision maker or beginning contact person. You can't determine the value of the account to you without knowing what size the account is, what potential they have to be a client, or information that would make them non-desirable as a customer. If you don't have this information, and a way of using it to select segments of your prospects for contact it's useless.&lt;br /&gt;3. The more frequency of calls to your best market segment leads to higher sales volume. You must have information to fuel this market segment and identify it.&lt;br /&gt;4. &lt;strong&gt;Price is meaningless in many cases&lt;/strong&gt;. You must present yourself to situations where you are the only bidder or have identified the needs of the customer properly and prove both in speaking to the prospect and backup in print that their needs will be best addressed by your company. If you don't save this information for future use [assuming no sale] you put yourself back in time having to do this all over again and lose the ability to skew the funnel based on the information you gather.&lt;br /&gt;5. &lt;u&gt;You must have a way of reporting the funnel&lt;/u&gt;. You must have a list of prospects considering a quote ready to make a decision. You must have a list of each field rep's active accounts that they are pursuing. You must have a way (mail merge, email blast) of regularly putting your name in front of the target market based on the info collected.&lt;br /&gt;6. From #5 you must have a way of determining if the inner funnel leads are sold or lost or postponed. This gives you a closing ratio which is the &lt;strong&gt;heart&lt;/strong&gt; of the funnel. To explain, you must log a history that a quote was given, and have a history of which of these resulted in sales (otherwise you can't compute a closing ratio) after the fact. Monitoring activity of leads (the number active), the prospects on the inner edge with quotes, and keeping track of field rep closing ratios over time gives you a &lt;strong&gt;pulse&lt;/strong&gt;.&lt;br /&gt;&lt;br /&gt;2 Rules.&lt;br /&gt;1. If a field rep produces many sales you can't touch them and they can do anything they want until the sales stop flowing. To keep this salesrep on top of the heap you must provide them with incoming leads of a high quality which they will only pursue a percentage of due to their status.&lt;br /&gt;2. Longevity and Burnout. The longer you keep the top salesreps as employees, the closing ratio will increase and sales will increase, and it will become easier to project budget and rely on your projections. The supply of quality leads to these reps is the &lt;strong&gt;key&lt;/strong&gt; to keeping them longer.&lt;br /&gt;&lt;br /&gt;Your goals as business director is to make everyone understand the funnel theory as explained above and make the:&lt;br /&gt;FUNNEL, the HEART, and the KEY in your sights and produce the needed reports, mailings, etc. to make it happen. You must skew the funnel to do this and keep your eyes on the pulse.&lt;br /&gt;&lt;br /&gt;Regards,&lt;br /&gt;Peter A Donovan&lt;br /&gt;&lt;br /&gt;Applause Software&lt;br /&gt;Wakefield, MA USA&lt;br /&gt;(781) 968-5240&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36681721-3781574179528439312?l=applausesoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://applausesoftware.blogspot.com/feeds/3781574179528439312/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=36681721&amp;postID=3781574179528439312' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36681721/posts/default/3781574179528439312'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36681721/posts/default/3781574179528439312'/><link rel='alternate' type='text/html' href='http://applausesoftware.blogspot.com/2007/06/modern-sales-theory-explained-funnel.html' title='Modern Sales Theory Explained: The Funnel Theory'/><author><name>ApplauseSoftware</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_WQ1-wum4QJo/SyOt495ekYI/AAAAAAAAAKs/InJSnkrwZxc/S220/peterd.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_WQ1-wum4QJo/Ru7sKmmXuxI/AAAAAAAAAB0/SSWGrjh0Plk/s72-c/announcing.JPG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36681721.post-2371470106852948086</id><published>2007-04-14T17:11:00.000-04:00</published><updated>2007-10-02T08:34:24.361-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Freeware Visual DataFlex RoloFLEX by Applause Software'/><title type='text'>Upgrade For Free ROLOFLEX Published Today</title><content type='html'>In a previously announced release, a fully featured contact manager and personal information center named RoloFLEX written in Visual DataFlex by Applause Software was upgraded to include the following features:&lt;br /&gt;&lt;br /&gt;*** UPGRADE TO ROLOFLEX AVAILABLE ***&lt;br /&gt;&lt;br /&gt;Please see &lt;a href="http://www.roloflex.biz/"&gt;http://www.roloflex.biz/&lt;/a&gt;  for downloading the free RoloFlex.&lt;br /&gt;&lt;br /&gt;New Features Include:&lt;br /&gt;&lt;br /&gt;1. An active toolbar that has these features:&lt;br /&gt;* Shadows the find keys when not in an indexed field.&lt;br /&gt;* Shadows the delete key if a record is not found.&lt;br /&gt;* Shadows the save keys if no changes exist to be saved.&lt;br /&gt;* Puts the DELETE button WAY AWAY from the SAVE button.&lt;br /&gt;* Offers A Save and Clear, or a Save and No Clear. etc.&lt;br /&gt;&lt;br /&gt;Thank you to Vincent Oorsprong of DAW Netherlands and Peter Brooks of&lt;br /&gt;Soft Sys/Australia (&lt;a href="http://www.membershipadmin.com/"&gt;www.MembershipAdmin.Com&lt;/a&gt;) for the ActiveToolbar.&lt;br /&gt;&lt;br /&gt;2. VDFQuery is part of the file structure now (The 2.4 beta)&lt;br /&gt;* You can compile now right away without having to path to VDFQuery.&lt;br /&gt;&lt;br /&gt;Thanks dearly to Sture Anderson of DAW Netherlands for sharing VDFQuery.&lt;br /&gt;&lt;br /&gt;3. VDFSORT Included.&lt;br /&gt;* International Downloaders not in USA English must reindex prior to using.&lt;br /&gt;* This tool is now included without having to use database builder.&lt;br /&gt;&lt;br /&gt;There have been over 1000 visits to the download page of RoloFLEX and if you&lt;br /&gt;haven't tried it yet please give it a shot as it is well constructed and highlyuseful.&lt;br /&gt;&lt;br /&gt;Thanks to all who visited my website in the process.&lt;br /&gt;&lt;br /&gt;Peter A Donovan&lt;br /&gt;Applause (TM) Software&lt;br /&gt;Wakefield, MA USA&lt;br /&gt;&lt;br /&gt;***NOTE: THIS UPGRADE DOES NOT INCLUDE THE DATA OR LETTERS FOLDER SO IT IS SAFE TO DOWNLOAD OVER YOUR EXISTING APP. I DID.&lt;br /&gt;&lt;br /&gt;Steps:&lt;br /&gt;1. Install Personal Version Of VDF12.0 (Link On My WebPage)&lt;br /&gt;2. Install RoloFLEX 12&lt;br /&gt;3. Install Updgrade1&lt;br /&gt;&lt;br /&gt;Hope you enjoy.&lt;br /&gt;&lt;br /&gt;Note: this fully featured RoloFLEX is totally free and includes source code (open source)&lt;br /&gt;and is based on a free personal edition of Visual DataFlex studio by D.A.W.&lt;br /&gt;(Data Access Worldwide of Miami USA)&lt;br /&gt;&lt;br /&gt;Note: If you find this RoloFLEX useful for BUSINESS NEEDS there are 2 comments I would&lt;br /&gt;like to make:&lt;br /&gt;&lt;br /&gt;1. A runtime license (extremely inexpensive) is required for business use. I would be happy&lt;br /&gt;to quote you pricing on this license.&lt;br /&gt;2. Customization: If you would like RoloFLEX muscled up for your specific business needs&lt;br /&gt;please contact Peter Donovan of Applause Software for a quotation on such.&lt;br /&gt;&lt;br /&gt;All the elements mentioned above are freeware with no expiration date for personal usage and to get accustomed to ~the best kept secret~ in the Database Visual Studio industry.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36681721-2371470106852948086?l=applausesoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://applausesoftware.blogspot.com/feeds/2371470106852948086/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=36681721&amp;postID=2371470106852948086' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36681721/posts/default/2371470106852948086'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36681721/posts/default/2371470106852948086'/><link rel='alternate' type='text/html' href='http://applausesoftware.blogspot.com/2007/04/upgrade-for-free-roloflex-published.html' title='Upgrade For Free ROLOFLEX Published Today'/><author><name>ApplauseSoftware</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_WQ1-wum4QJo/SyOt495ekYI/AAAAAAAAAKs/InJSnkrwZxc/S220/peterd.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36681721.post-117408534164841171</id><published>2007-03-16T19:46:00.000-04:00</published><updated>2007-03-16T19:49:02.536-04:00</updated><title type='text'>Trademark Turnaround!</title><content type='html'>[Title:]  Trademark Turnaround&lt;br /&gt;&lt;br /&gt;[Header:]&lt;br /&gt;Concerning the trademark of Sonata Software LTD previously posted by Peter A Donovan was an article concerning a trademark owned by Sonata Software LTD which could be construed as criticizing Sonata Software LTD for enforcing such.&lt;br /&gt;This is an apology letter to Sonata Software LTD concerning same.&lt;br /&gt;&lt;br /&gt;[Article:]&lt;br /&gt;&lt;br /&gt;Points Of Apology::&lt;br /&gt;Since I posted my article about Sonata Software LTD enforcing their trademark on the word Sonata in conjunction with developing and marketing business software I have come to realize that;&lt;br /&gt;&lt;br /&gt;1.  They have every right to enforce their trademark since I had references to my former business under a similar name on the web describing me as performing the same functions as the trademark held by Sonata Software LTD..&lt;br /&gt;&lt;br /&gt;2.  If Sonata Software LTD did NOT enforce their trademark they could set a precedent which could negate     their trademark and damage the company’s investment.&lt;br /&gt;&lt;br /&gt;* Now, my business (renamed) is in the same shoes as Sonata Software LTD (Applause TM Software) where I am "composing" this letter to say that I must now also enforce my trademark in the same manner as Sonata Software LTD on the word "Applause" in conjunction with developing and marketing business software and creation of dynamic content web sites.&lt;br /&gt;&lt;br /&gt;Apology:&lt;br /&gt;In my dealings with the Attorney for Sonata Software LTD I have been treated with patience and they have taken the time to explain our mutual dilemna and their position as described above with courtesy and professionalism and I now regret any aspersions I have cast against this company in my previous post in my journal news story and blog.&lt;br /&gt;&lt;br /&gt;Where I went wrong!:&lt;br /&gt;I began my DataFlex software business license in 1991 from Data Access Worldwide under the name of Sonata Software without checking if a similar business existed under the same name. For me, the term "Sonata" was a personal term for "moonlighting" since the Moonlight Sonata is my favorite musical composition by Ludwig Van Beethoven, Sonata #14.  The sonata is the third most common form of classical musical venue after the symphony and the concerto.&lt;br /&gt;&lt;br /&gt;I am hereby giving up all claims to the company name "Sonata Software" and moving on to Applause Software, operating the same business began in 1991 under a new name. &lt;br /&gt;&lt;br /&gt;I am also moving the ownership of 2 previously operated sites "SonataSoftware.US" and "SonataSoftware.Biz" to Sonata Software LTD as part of our settlement agreement which meets my approval since I do not operate either anymore.&lt;br /&gt;&lt;br /&gt;Former Clients Of Peter A Donovan:&lt;br /&gt;Please find me now at &lt;a href="http://www.ApplauseSoftware.Com"&gt;http://www.ApplauseSoftware.Com&lt;/a&gt;  (781) 968-5240 Still in the same location.&lt;br /&gt;&lt;br /&gt;Applause TM Software: A Visual DataFlex Consultancy:&lt;br /&gt;Nothing except my new business name Applause TM Software (I am learning) has changed except the name transition, and Applause Software is the hoped for end result of my efforts for each client!&lt;br /&gt;&lt;br /&gt;My Trademark Applause.:&lt;br /&gt;Applause designates my business of developing and marketing custom software for business needs and         for developing (currently Electos from the maker of Visual DataFlex) dynamic content publishing websites.&lt;br /&gt;&lt;br /&gt;DataFlex:&lt;br /&gt;DataFlex began in the days of CPM when "I-CODE" and when DOS began, DataFlex was in the forefront of options and was chosen by a great many companies for it's "FLEX" ability and the English language syntax which is easy to learn similar to COBOL.&lt;br /&gt;&lt;br /&gt;My Toolset: Visual DataFlex:&lt;br /&gt;VDF, or Visual DataFlex is the PC (Vista/Windows) version of DOS DataFlex which has been successfully migrated to a world class development studio for database and web to database applications in a RAD (rapid application development) environment especially and specifically suited to database programs.&lt;br /&gt;&lt;br /&gt;Backends and FrontEnds:&lt;br /&gt;A "backend" is the database operating environment behind the screen where the data is saved.  Visual DataFlex is a "transparent front end", creating programs that can run on most major "backends" such as DataFlex itself, Express SQL, My SQL, IBM DB2, Pervasive, etc.&lt;br /&gt;&lt;br /&gt;Sonata Software LTD Clients and Prospective Clients:&lt;br /&gt;If any person reading this review is seeking to contact Sonata Software LTD please do so at         www.SonataSoftware.Com.    &lt;br /&gt;&lt;br /&gt;Summary:&lt;br /&gt;Intentions: In any future dealings with other companies named "Applause" involved in the same business as my trademark, I intend to extend the same professionalism and courtesy that Sonata Software LTD has shown me.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36681721-117408534164841171?l=applausesoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://applausesoftware.blogspot.com/feeds/117408534164841171/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=36681721&amp;postID=117408534164841171' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36681721/posts/default/117408534164841171'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36681721/posts/default/117408534164841171'/><link rel='alternate' type='text/html' href='http://applausesoftware.blogspot.com/2007/03/trademark-turnaround.html' title='Trademark Turnaround!'/><author><name>ApplauseSoftware</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_WQ1-wum4QJo/SyOt495ekYI/AAAAAAAAAKs/InJSnkrwZxc/S220/peterd.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36681721.post-116816895695727444</id><published>2007-01-07T06:14:00.000-05:00</published><updated>2007-04-14T17:11:17.460-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Visual DataFlex written by Applause Software'/><title type='text'>NEW: Free Database Development Studio</title><content type='html'>1/1/2007&lt;br /&gt;&lt;strong&gt;Just Released From Data Access Worldwide Of Miami.&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Freeware database application development studio with no restrictions other than for personal use.&lt;br /&gt;&lt;br /&gt;Visual What? has been our bane of existance because we utilize a world class development tool that isn't known by most developers. A Personal Edition of "VDF" is released is so that you can discover the power and rapid development abilities of this system which includes a PC/windows program creator, (WebApp) a web application extention (interface your data with the web), and (Electos) a dynamic content publishing website creator.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;"Our most valuable asset is the easiest to market free", a quote by the CEO of Data Access Corp. &lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Here's the scoop: Visit my website for BOTH a free copy of Visual DataFlex AND a free personal rolodex application which shows the abilities of this tool. I personally am adding both a freeware application which anyone can use for personal reasons (see site for pic) and an offer for a discounted business version once you've decided that this system is desireable for business use.&lt;br /&gt;&lt;br /&gt;Data Access is following the example of many other vendors such as MS SQL which now offers a free 25 user "Express SQL" with many of the development features removed from the product. NOT SO with the Personal Copy of Visual DataFlex: you get everything with the agreement that only personal use is allowed.&lt;br /&gt;&lt;br /&gt;So, therefore, I offer this personal application which lets you auto-dial, email, save pictures of your contacts, save contact history, report on callback dates, and easily filter your entries by source of entry or category of entry plus letter writing options etc. It's a powerful application for real world personal use so that you can see the power of "VDF". There is also a link to video instruction in VDF where over an hour of presentation on concepts as applied to Visual DataFlex coding may be obtained from Sonata Software.US See: &lt;a href="http://www.ApplauseSoftware.Com"&gt;http://www.ApplauseSoftware.Com&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;The hope of Data Access is that the "geeks" out there (me being one) will download, play, and discover how great this system really is, and how easy it is to develop a rapid application deployment system whether it's PC based software, web data integration, or website CRM publishing.&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;It is my personal hope that my contribution will lead to new "VDF" developers in the near future. We have a camaraderie amongst "VDF" developers where we share code and help solve others problems and have a number of Newsgroups for help and support, plus a huge online help directory for personal research on the spot.&lt;br /&gt;&lt;br /&gt;So, why not take a &lt;strong&gt;&lt;em&gt;double freeware offer&lt;/em&gt;&lt;/strong&gt;: the entire development system of a 4GL language which contains sample examples on how to implement usage, and a freeware personal example that you can use immediately with no cost or expiration date? &lt;a href="http://www.ApplauseSoftware.com"&gt;http://www.ApplauseSoftware.com&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Quoting from the "Blues Brothers" movie: "&lt;strong&gt;It's 106 miles to Chicago, we got a full tank of gas, half a pack of cigarettes, it's dark and we're wearing sunglasses: HIT IT&lt;/strong&gt;!"&lt;br /&gt;&lt;br /&gt;Looking forward to seeing your name on the VDF newsgroup, sincerely Peter A Donovan.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36681721-116816895695727444?l=applausesoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://applausesoftware.blogspot.com/feeds/116816895695727444/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=36681721&amp;postID=116816895695727444' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36681721/posts/default/116816895695727444'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36681721/posts/default/116816895695727444'/><link rel='alternate' type='text/html' href='http://applausesoftware.blogspot.com/2007/01/new-free-database-development-studio.html' title='NEW: Free Database Development Studio'/><author><name>ApplauseSoftware</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_WQ1-wum4QJo/SyOt495ekYI/AAAAAAAAAKs/InJSnkrwZxc/S220/peterd.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36681721.post-116194148960666623</id><published>2006-10-27T05:28:00.000-04:00</published><updated>2007-04-14T17:03:00.286-04:00</updated><title type='text'>Top 2 Reasons To Use A Visual DataFlex WebApp</title><content type='html'>&lt;div align="center"&gt;&lt;strong&gt;Top 2 reasons to interface your current data with the web with Visual DataFlex Web Applications&lt;/strong&gt; &lt;/div&gt;&lt;p&gt;&lt;br /&gt;Visual DataFlex WebApp (TM of Data Access Worldwide of Miami) is a tool used by &lt;a href="http://www.ApplauseSoftware.Com"&gt;(Applause Software)&lt;/a&gt; and the &lt;a href="http://www.nedataflex.com/"&gt;(NEDC)&lt;/a&gt; two of the premier Visual DataFlex specialists in the USA.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Type 1 &lt;/p&gt;&lt;p&gt;Your website collects prospect data in the form of email or CSV and you must manually compare the results to your prospect database and manually type in new data thru your windows or dos programs. Some companies write scripts to "parse" the email but changes to the email format require reprogramming and the "batch parsing" routines make response to the emails slow.&lt;br /&gt;With a Visual DataFlex WebApp, your incoming queries from the web are automatically fed directly to the correct on-file customer or a new customer/prospect record is created. When the prospect lead comes in, you feed the inquiry directly to the sales manager via email (to assign to a CSR or salesrep) and a reply email is sent back to the inquirer with your chosen text indicating that you received their information and that you will be in touch shortly. Determination if the inquiry is a customer or prospect is made instantly at the time of the inquiry and response time is immediate. Example of Type 1 LIVE Visual DataFlex WebApp: &lt;a href="http://www.4sportstravel.com/"&gt;Sports Travel And Tours Inc.&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Type 2 &lt;/p&gt;&lt;p&gt;Your phones are ringing too much with customer inquiries that could be eliminated thru a sharing of data online where the customer logs into their account and can view their inventory, outstanding debt, status of sales orders, etc. (customized to your need) and save the phone from ringing.&lt;br /&gt;With a Visual DataFlex WebApp from Sonata Software, or NEDC, your chosen data is shared securely in a customized format designed by you, and passes thru a login page to data that has 4 levels of security built into it including a datadictionary object that determines whether data can be changed/entered, etc. based on your needs. A subset of your data can be shared on a dedicated PC running XP Pro: no need for investment in a Linux or Unix based server thru a technology from Microsoft called IIS (internet information services).&lt;br /&gt;Bonus: Your data does not have to be in a certain format: Visual DataFlex and WebApp are transparent "front ends" which can share and collect data to DataFlex tables, MS SQL tables, IBM DB2 tables, etc. or a combination of all.&lt;br /&gt;Both these options give you 24/7/365 presence to serve your market.&lt;br /&gt;Example of Type 2 LIVE webapp: &lt;a href="http://www.americandatastorage.com/"&gt;American Data Storage Inc.&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36681721-116194148960666623?l=applausesoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://applausesoftware.blogspot.com/feeds/116194148960666623/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=36681721&amp;postID=116194148960666623' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36681721/posts/default/116194148960666623'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36681721/posts/default/116194148960666623'/><link rel='alternate' type='text/html' href='http://applausesoftware.blogspot.com/2006/10/top-2-reasons-to-use-visual-dataflex.html' title='Top 2 Reasons To Use A Visual DataFlex WebApp'/><author><name>ApplauseSoftware</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_WQ1-wum4QJo/SyOt495ekYI/AAAAAAAAAKs/InJSnkrwZxc/S220/peterd.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36681721.post-116193964287879285</id><published>2006-10-27T04:56:00.000-04:00</published><updated>2007-04-14T17:04:35.561-04:00</updated><title type='text'>Project: Stop The Phones From Ringing With a Visual DataFlex WebApp Database Sharing Application</title><content type='html'>Client: American Data Storage of Boston, MA (&lt;a href="http://www.AmericanDataStorage.Com"&gt;www.AmericanDataStorage.Com&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;Client Problem: My phones are ringing off the hook with inquiries about inventory requests and the manpower I have is being sapped by these inquiries to the point of not allowing us to perform our regular duties and we have a backlog of work.&lt;br /&gt;&lt;br /&gt;As a software engineer with 23 years in the custom software business, I chose a tool called Visual DataFlex WebApp from Data Access Miami whose main website is &lt;a href="http://www.dataaccess.com/"&gt;http://www.dataaccess.com/&lt;/a&gt;. The reason I chose this tool is that it is data-centric rather than interface-centric. Instead of defining a beautiful interface in 10 hours and spending 80 hours in interfacing with the customer's data, I chose a tool where I invested 20 hours of data interface time and touched up the user interface .asp pages over time (20 hours more) and delivered the application at a lower cost than a Studio like .NET or VB because the&lt;br /&gt;Visual DataFlex Studio (rev 11.1) starts at the data interface and automatically (after defining the business rule layer for sharing data) creates the .asp pages which are totally functional but not beautiful.&lt;br /&gt;&lt;br /&gt;I have spoken with a number of Sales Marketing Executives including a 500 billion dollar company Marketing and Sales VP, and they have spent huge amounts of effort and dollars invested in web / data interfaces with the .NET and VB Studios. The story from them is very similar: in a very quick time they get a beautiful contemporary interface to do the job, but enforcing business rules such as who gets to see which data, which subsets of data are available, and whether a particular user can delete/edit/create etc. individual data tables at which times is a nightmare that sometimes is unacceptable in the end and costs huge investments in making a web tool compatible with data business rule layers. In addition, the result is that these business rule layers reside in the .asp rather than in (available only thru Visual DataFlex WebApp) a dynamic datadictionary class for each table, and customized data dictionary objects for each module (business rule exceptions to the main blueprint but for an individual module only).&lt;br /&gt;&lt;br /&gt;The DataDictionary Classes From Visual DataFlex WebApp function on 4 levels:&lt;br /&gt;1. You are able to define attributes to each column of each table, such as capslock, required entry, comboform values (must be one of....)...&lt;br /&gt;2. Methods are written (functions/procedures) and hooked into the desired columns of each table which are run prior to agreeing on a save or delete.&lt;br /&gt;3. The DataDictionary Class has a cascade of messages that get called upon a new save, an edit to an existing record, or on all saves, or on a delete.&lt;br /&gt;These messages are customizable (say to drop down a parent value into a child table), assign a unique ID to a new record, etc, and lastly validate the data after all the massaging is done to centralize the rules: example: if the total result of the transaction makes the customer overlimit on credit limit you can rollback the transaction entirely based on this level of control.&lt;br /&gt;4. This is the best part: DataDictionaries for each related DBMS table are organized in tree fashion and hooked together so that the data structure of the table is REQUIRED to use datactionaries from it's related parent and child tables. This is called a DDO TREE. Layman's terms: You are saving a new customer, but because the customer table is connected to the terms table, you cannot save a customer unless a predefined record is found by the terms datadictionary object. No save: you haven't selected terms for the customer.&lt;br /&gt;Now, for business modules, the DDO Tree is instantiated for each individual module. You can actually augment the find/clear/save/delete/validate business rules for each module easily and customize them for that particular module. Example: show only the fire protection inventory and hide all other.&lt;br /&gt;Let's get back to the client's application specifically:American Data Storage specializes in keeping inventory of film media, video, and digital video and CD's and targets Advertising Agencies, Broadcasters, and Corporations that do videos for training new employees and advanced study for existing employees. In a bold move, ADS has offered the City of Boston an online, immediate retrieval of all their video surveilance tapes which, in this day of terrorism and crime, is an excellent choice. Instead of trying to maintain (and then locate) certain video, they would login to ADS, search for the inventory, and pick it up within an hour at ADS's main site or have it shipped overnite.&lt;br /&gt;&lt;br /&gt;I crafted, in a very low budget, a highly dependable Web Interface to data over the internet which accesses inventory ONLY for the company logged in, and divided into categories or sub-clients of the client, featuring 6 search engines to locate the data and a shopping cart withdrawal of inventory.&lt;br /&gt;&lt;br /&gt;The owner of ADS was so pleased, based on his review of the end result, that he hired Sonata Software, (The Author) to create a DEMO AREA where you can login as DEMO and try out the application based on an inventory of popular movies on DVD (all demo, none available in real life). This acts as a promotional piece for the company and it is now swamped with inquiries due to only word of mouth, from new customers and existing customers that want to be able to search for, and order their inventory online 24/7/365.&lt;br /&gt;&lt;br /&gt;ADS and I invite you to review the final result and run the Web Application in DEMO MODE at &lt;a href="http://www.americandatastorage.com/"&gt;http://www.americandatastorage.com/&lt;/a&gt; (login page).&lt;br /&gt;&lt;br /&gt;The results will speak for themselves, and you can contact ADS thru their website to ask how they feel about Visual DataFlex WebApp and what it's done for their business.&lt;br /&gt;&lt;br /&gt;Sincerely,&lt;br /&gt;Peter A DonovanOwner / Lead Programmer&lt;br /&gt;Sonata Software: &lt;a href="http://www.ApplauseSoftware.Com"&gt;Applause (TM) Software&lt;/a&gt;&lt;br /&gt;Boston, MA, USA&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36681721-116193964287879285?l=applausesoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://applausesoftware.blogspot.com/feeds/116193964287879285/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=36681721&amp;postID=116193964287879285' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36681721/posts/default/116193964287879285'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36681721/posts/default/116193964287879285'/><link rel='alternate' type='text/html' href='http://applausesoftware.blogspot.com/2006/10/project-stop-phones-from-ringing-with.html' title='Project: Stop The Phones From Ringing With a Visual DataFlex WebApp Database Sharing Application'/><author><name>ApplauseSoftware</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_WQ1-wum4QJo/SyOt495ekYI/AAAAAAAAAKs/InJSnkrwZxc/S220/peterd.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-36681721.post-116193809202575743</id><published>2006-10-27T04:26:00.000-04:00</published><updated>2007-04-14T17:07:15.093-04:00</updated><title type='text'>Visual DataFlex Product Review</title><content type='html'>Visual DataFlex is a database RAD (Rapid Application Development) visual studio where windows and web database applications can be designed.&lt;br /&gt;&lt;br /&gt;~The best kept secret in database development~&lt;br /&gt;&lt;br /&gt;This article is meant for viewing by mid-size and small companies seeking a lower cost or more rapid alternative to Microsoft platforms such as .NET and VB.&lt;br /&gt;&lt;br /&gt;================= Here's the Index For This Article: ===============&lt;br /&gt;* Where did Visual DataFlex Originate?&lt;br /&gt;* What advantages does it have over .NET and VB?&lt;br /&gt;* Why should I try Visual DataFlex (download eval)?&lt;br /&gt;* Who makes Visual DataFlex?&lt;br /&gt;* What support would I receive from Newsgroups Or Support Groups?&lt;br /&gt;* What's the future of Visual DataFlex?&lt;br /&gt;=====================================================================&lt;br /&gt;&lt;br /&gt;* Where did Visual DataFlex Originate?&lt;br /&gt;--------------------------------------&lt;br /&gt;In 1981, along with DBASE2, FOXPRO, etc. DATAFLEX (the dos version) launched it's 2.3 version for DOS, CPM, and UNIX.Because it was the highest price database engine and development platform, and it's specs outweighed the competition many individuals who were not programmers purchased DATAFLEX and with it's english like syntax became faithful followers and many success stories were launched. If you were an accountant, sales manager, or inventory analyst, DATAFLEX was perfect since it was a 4GL product and handled the interface with the database included in the package automatically for you, and a winning combination of work skills and easy database development combined to make v2.3 a highly successful endeavor. The packages written in this era were from experts in the field and while many unorthodox methodology was employed, it worked! Unfortunately, like many other (now) Legacy Systems written for DOS became more and more difficult to deploy and maintain since Windows was introduced. There are many DOS DATAFLEX applications still fueling businesses across the world now and most are considering: port to Visual DataFlex, or port to the Web? The main concern of many companies is that unique and proven code which runs like lightning would be compromised by eithe of these solutions, and is generally a real concern: but of significantly less importance than the users perceive.&lt;br /&gt;&lt;br /&gt;* What advantages does it have over .NET and VB?&lt;br /&gt;------------------------------------------------&lt;br /&gt;Imagine you are a designer of software, and a .NET solution from Microsoft is available. First, you start with the user interface, and the tools to produce an interface in windows/web are highly attractive. Then, you have the job of writing an interface to the data which is a huge undertaking and requires thousands of lines of code to produce a stable application that follows the specs of database table business rules, connections between database tables (dependencies, etc).&lt;br /&gt;&lt;br /&gt;Now, Imagine you are a Visual DataFlex designer. First, you start by subclassing the controls provided by Data Access Worldwide (true windows controls) and leave these subclasses (based on your business name for instance) completely alone and unchanged.... but for future use. Then, you open the database builder which creates datadictionaries for each and every database table in your project, relate the database rules to each other (auto-generated) and determine how each column of each table will appear, which validation will apply to it, and set your business rules directly in the CLASS for the table.&lt;br /&gt;&lt;br /&gt;See how the two approaches are completely the opposite?&lt;br /&gt;&lt;br /&gt;Visual DataFlex centralizes on data validation, finding, clearing, deleting, and saving, and then you use the Visual Studio to create the visual portion of the program which is built on a TREE of connected data dictionary objects (instantiated business rule layers based on the classes) which can introduce business rule exceptions and augmentation.&lt;br /&gt;&lt;br /&gt;The advantages appear immediately:&lt;br /&gt;1, Data Integrity and business rule layers intertwine and you MUST validate the data (automatically generated validation based on your rules) and synchronize together in order to save a record or records.2. The visual designer has the same classes for the most part as .NET and VB but they are tied into database definitions and take on immediately a save/clear/delete/validate/find operation that does not need programming.&lt;br /&gt;The combination of these two advantages means that your data integrity is higher, your data operations are more eloquent, and also the interface (while not quite as beautiful as .NET) is visually appealing.&lt;br /&gt;The design and deploy time from start to finish is less than .NET by a estimated 40% resulting in lower cost to your customer and more winning bids for you.&lt;br /&gt;&lt;br /&gt;* Why should I try Visual DataFlex (download eval at &lt;a href="http://www.VisualDataFlex.Com"&gt;www.VisualDataFlex.Com&lt;/a&gt;)?&lt;br /&gt;-------------------------------------------------------------------------&lt;br /&gt;First, from the above, you can see how a database oriented approach is significantly easier than other options. Don't download VDF to program a game! It's built for business applications as a specialty, so if that's what you are programming I suggest you give it a try.&lt;br /&gt;Second, the VDF community is closely knit and we publish free code and add-ons, answer questions immediately and with great skill on the newsgroups, and you will belong to an elite membership where close relationships with other developers is quite attractive.&lt;br /&gt;&lt;br /&gt;Visual DataFlex is a transparent front end for just about any database back end you care to use such as MS-SQL, IBM DB2, etc.&lt;br /&gt;&lt;br /&gt;If you are afraid of being sacked for using a non-Microsoft product, please disregard this article entirely!&lt;br /&gt;&lt;br /&gt;* Who makes Visual DataFlex?&lt;br /&gt;----------------------------&lt;br /&gt;The answer is surprising. Of course, Data Access Worldwide of Miami FL USA makes the product, but it is crafted largely thru suggestions of individual developers who receive personal feedback from company representatives on our newsgroup forum, and feedback at conventions personally. Imagine that you too can shape the direction that the product flows and your actual bug reports are included with the fixes in the next release! Credit where credit due.Data Access also has worldwide distributors and is a global product used in many countries.&lt;br /&gt;&lt;br /&gt;*What support would I receive from Newsgroups Or Support Groups?&lt;br /&gt;----------------------------------------------------------------&lt;br /&gt;Example: If you are from New England, USA, you can join the NEDC User Group at &lt;a href="http://www.nedataflex.com/"&gt;http://www.nedataflex.com/&lt;/a&gt; which welcomes developers and has regular meetings in person to promote camaraderie and show tech presentations on current projects by the members.In addition, there is a Visual DataFlex newsgroup which is monitored by Data Access Tech Support to some degree, but the feedback comes mainly from globally based Visual DataFlex developers and I personally recommend this newsgroup due to the high quality support received (and given) over the years.&lt;br /&gt;&lt;br /&gt;*What is the future of Visual DataFlex?&lt;br /&gt;---------------------------------------&lt;br /&gt;Data Access Corp has network partners over many locations that introduce the latest features available such as SOAP, AJAX, activeX, Web Services, etc. and is about to launch version 12 which will look very familiar to .NET developers. In addition, the ~FREE Personal Edition~ which includes the entire studio and all connectivity kits with a 5 user limit will be unveiled at the next global meeting called "Synergy" in Miami Beach FL in 2007. The promotion of this product will be largely word of mouth and this keeps the tradition and nickname of the product as ~The best kept secret in database programming~ alive!&lt;br /&gt;&lt;br /&gt;I invite you to pop open a search engine and search for Visual DataFlex to see what all of the (not(fuss)) is about!&lt;br /&gt;&lt;br /&gt;Author: Peter A Donovan of &lt;a href="http://www.ApplauseSoftware.Com"&gt;Applause (TM) Software&lt;/a&gt;&lt;br /&gt;Peter has been developing custom database applications since 1982 and has migrated his development techniques thru DOS/Windows/Web and oops programming specialization thru centralized coding in both Window/Web and Crystal Reporting.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/36681721-116193809202575743?l=applausesoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://applausesoftware.blogspot.com/feeds/116193809202575743/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=36681721&amp;postID=116193809202575743' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/36681721/posts/default/116193809202575743'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/36681721/posts/default/116193809202575743'/><link rel='alternate' type='text/html' href='http://applausesoftware.blogspot.com/2006/10/visual-dataflex-product-review.html' title='Visual DataFlex Product Review'/><author><name>ApplauseSoftware</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_WQ1-wum4QJo/SyOt495ekYI/AAAAAAAAAKs/InJSnkrwZxc/S220/peterd.jpg'/></author><thr:total>0</thr:total></entry></feed>
