General Information


Thanks to everyone for coming, especially Rick Schummer who came from Detroit to make his presentation. Thanks to Cathy Pountney for donating the “fat-free” donuts. Okay .. so they weren’t fat-free .. but they were good!


FoxPro News


We started our meeting with a little discussion about FoxPro news.


-          The April newsletter is available from the Fox Team.

-          If you have an account with the Universal Thread (free or premium), you can now get free access to the UT Magazines.


Jody Meyer discussed an ugly SQL bug she has found. If ENGINEBEHAVIOR is set to 7, and you have a SQL with a GROUP BY and a SUM on a column where you name the field the same as the column you, and the last record in the group is zero, VFP doesn’t add that record to the output. If you name the field different than the column, it works okay, if the zero record is in the middle of the groups instead of the last record, it works okay. Jody plans to report this to Microsoft, so let’s keep our fingers crossed they will give us a patch for this. However, we’re not going to hold our breath since there is an easy work-around – change the name of the field.


Main Presentation


Rick Schummer gave us a great presentation called “Best Practices of Error Handling”. He talked about the types of errors to expect, such as those caused by programmers, the predictable errors, and the unpredictable errors. He discussed how our application should respond to these errors and then gave us some fundamentals about handling errors. He went into an in-depth conversation about Try / Catch / Finally and showed some samples that really helped us understand the concepts. Rick also talked a lot about priorities and what happens when you have different types of error handlers in place. It can get quite complex! Rick also talked about how we can communicate errors to our users, how we can capture the needed information from the users, and ways to automate this entire process. He wrapped up with some talk about bug tracking software and pointed us to some resources.


This presentation will be repeated at Great Lakes Great Database Workshop later this month. For anyone that wasn’t able to see Rick’s presentation at GRAFUG, I suggest you try to make this conference.


Door Prizes


Rick Schummer had a free copy of SnagIt from TechSmith to give away. Jody Meyer was the winner. For anyone who doesn’t have this product, you really should. It’s very inexpensive way to capture screen shots as well mark them up. It is full of features and is extremely helpful for creating documentation and all kinds of other things. Rick also gave away a copy of “What’s New in 9”. Jody Meyer was the winner.


Next Month


Our next meeting is Saturday, May 13, at 10:00 am, and we have a special speaker: Andy Kramek. Let’s see how many people we can get to attend this *free* session by a Microsoft VFP MVP.


Designing and Constructing a Data Layer - Presented by Andy Kramek

It used to be the case that, when building an application, we simply used native VFP tables and rarely gave any thought to the possibility that we might have to access an external data source, let alone build an entire application that did not use Visual FoxPro as its primary data store. With the rapid growth in web-based applications, and the wider use of dedicated back end databases this is no longer the case. Even if the current plan for our application is to use only native VFP tables initially, there is no reason (or even tangible benefit) for ignoring the possibility that we might still have to migrate the application to use another data store (e.g. SQL Server) at some point in the future. It is an axiom that good application design is not dependent on the choice of any particular component and this includes the selected data store.


In this session Andy describes the design and implementation of a set of classes that can be used with any back end database that can handle an ODBC connection, and shows how a VFP application can be made truly "data store independent". These same classes can be compiled into a COM+ DLL that can either be accessed directly by a Web application, or be exposed as a web service. In either case the component returns the data as XML to the calling object.


Be a Volunteer


If you wish to volunteer to be a speaker for a future meeting, information and a link for topic submission can be found on our website:


(Recap courtesy of Cathy Pountney)



Sharon Hodgson

GRAFUG Secretary