Level Extreme .NET Magazine April 2008 issue

Universal Thread Magazine March 2007 issue

2008
2007
2006
2005
2004
2003

2008
2007
2006
2005
2004
2003

2008
2007
2006
2005
2004
2003
2002

2006
2005
2004

2008
2007
2006
2005
2004

2007
2006
2005
2004
2003

2004
2003
2002
2001
2000
1998
1997
1996
1993

2003
2002

2003
2001

2003
2002
2001

2003
2001

Visual FoxPro 2001
Visual FoxPro 2000
Visual Studio 2000

West Wind 2002
Double Impact 2001
FoxTeach 2001
Jam sessions
Technical Guidelines

Universal Thread documentation

About
Acronyms
Contact information
Troubleshooting
Time zones
Web Service
Terms & Conditions
Copyright

Manage your account for the messages area options, your subscription information, your invoicing, youir banners and your pictures Subscribe to the Universal Thread and get all the benefits related to the messages area A corporate subscription is needed for companies that have more than one developer Access the Universal Thread store to purchase your subscription, corporate subscriptions and banners The Universal Thread is covering several conferences per year. On site, reporters cover the technical aspect of the conference as well as making interviews, taking pictures and videos and other related content. Get all the reports from our coverages site. Universal Thread home page Level Extreme .NET Magazine, a newly published online magazine by Level Extreme about Microsoft .NET technology and its community Universal Thread Magazine, a magazine dedicated to the Visual FoxPro community Praha 2004

Microsoft Czech Republic and DAQUAS will organize a conference for developers who create applications using Microsoft Visual FoxPro. "Visual FoxPro DevCon, Praha 2004" will take place in Prague, Czech Republic on 22nd to 24th June 2004. Visual FoxPro DevCon, Praha 2004 will comprise of at least 30 sessions out of which more than 10 are presented in English by worldwide respected FoxPro experts. This year is the 7th year of the event and in 2003 it was the world's best attended FoxPro conference with an audience of almost 500!

Date: 
Location: 

Day Zero

by Hans-Otto Lochmann, Jan Vít and Jan Král

Hello, everybody: Here we are again, in Prague, the capital of the Czech Republic. Finally summer has come to this place (though the weather has still some difficulties to adapt, it is simply still too cold), but the people are sitting again in the beer gardens and open-air restaurants and huge flocks of tourists are streaming all over the place.

This is the Day Zero, the day before a very important event for all FoxPro developers will start: The Prague Visual FoxPro DevCon. It has been rumored to us, that the attendance again will be about 500 (Details at the end) and there will be more non-Czech participants than ever.

Also the reporting team has increased by one: We are three now Hans and Jan and Jan. By the way: all three of us have basically the same name, because each name was derived from that old Christian name Johannes. Yet it is the improbable team: Hans, an UHU (Under one HUndred, further details will not be disclosed) and two Teens (one Jan is 17 for two more weeks, the other Jan is "already" 18). But one of the miracles of FoxPro is: Age doesn't count - at least as far as FoxPro itself and the engagement for it are concerned. We are happily united as a reporting team to bring the coverage of this magnificent event once again to you.

As in the previous years we have prepared a few topics regarding Prague and the Czech Republic, which might be of interest for you. For those, who want to get to know more about the Czech Republic in general, about it's history or about Prague's history in particular, we recommend to read the Day Zero sections of reports of the last two years.

Joining the EU

Last year, 2003, the people of the Czech Republic voted in a public referendum whether the Czech Republic should become a member of the EU or not. The outcome was positive.

After a massive preparation to join the EU (mostly by passing new laws and legal decrees), the Czech Republic became a new member of the European Union on the May 1st, 2004.

What has changed since then? A lot of things, more European companies are building plants and founding companies, even more tourists are coming; yet the Euro will need a few more years to arrive. So the Czech Koruna (English: Crown) is still in use, but gained in strength. But lets concentrate on a few things, which may be more interesting for Czech Visual FoxPro developer.

There was change in the VAT (Value Added Tax) system (in Czech known as DPH). In the Czech Republic there have been two categories, 5% and 22%. The first change was very positive. The 22% VAT category has been changed to a 19% VAT category. Sounds nice? But never forget the revenge of the bureaucrats: Many items, which have been classified as a 5% VAT category up to now, were simply moved into the new 19% category.

Why are we telling this? Well, this was just one of the many changes in the VAT system, which we have experienced up to now. Every change in the tax system (not the figures alone, but the structure as well) requires a change in each piece of commercial software, be it "simple" accounting software, sales systems or elaborate systems for international trade. That brought and still brings lots of work for Visual FoxPro developers, (un)fortunately.

One of the less positive changes has been that the price of most foreign software products climbed a little bit higher. This is the result of an anti-discriminating decision by the European parliament, which enforces the rule: "The same price for each product in all places of the EU!" Before joining the EU, the Czech Republic was among those countries, which had some kind of "price advantage", because most of the products, which were not produced in the Czech Republic, were sold in the Czech Republic at a lower price than in the countries with a stronger economy.

One of the more pleasant changes is concerning foreign visitors, which includes foreign speakers, of course. The government of the Czech Republic dropped many VISA obligations, starting with Canada, after beating the Canadian Hockey team - well not exactly true, but this makes a nice story (see below). Others say, that this was most probably changed, because of the Daquas lobbing, after last year's experience... (See last year's report...)

The new sport Sazka Arena and the World Hockey Championship

Sazka, the national sport stake company together with the Czech government built a new hockey arena for the World Hockey Championship, which was hosted in the Czech Republic in May this year.

The new Arena is the newest and most sophisticated sport arena in Europe. It was positioned near the City Center, probably because of good traffic accessibility. It is a building, which a tourist cannot afford not to see it.

The Arena offers a sitting capacity for 18,000 people and can not only serve as a hockey arena, but also offers to change the interior in more than 40 ways. Thanks to that, it can serve for nearly any sport activity, even swimming contests, motocross races and horse riding. It can also host a conference, a fair or a rock concert with a capacity of 18,000 people!

The Czech National Hockey Team is known to be one of the best hockey teams in the world. So there it was no surprise that every Czech very strongly believed that once the Championship was to be held in the Czech Republic, the Czechs of course had to win the Gold medal.

In the very beginning, everything looked perfect. The Czech Republic team won all the matches it played in. The bad luck came in the quart final match with USA. The score was balanced, there was an extra time, but in the end it came to penalties. And USA scored.

Unfortunately the fate of every quart final looser is that he has to leave the games. Since quite a few years no home team has ever won the medal. We have unfortunately honored that tradition. If you are interested and you don't already know, the Gold winner is Canada. And the Czech team is the only one who has beaten the Canadian team; well it was only a preparation play before the real contest started.

Jaroslav Hasek

This is the story about a famous book and the rather miserable life of its author. You most probably heard about the "Good Soldier Svejk", a guy who slyly ridiculed bureaucracies and the stiff behavior of some armies by just following orders by the word. Example: If someone would phone him and would have asked: "Can I speak to the General?" he would have answered, "Yes!" and hung up the phone. Why? Just take that question by the word...

The author of the book about good Soldier Svejk is Jaroslav Hasek who is one of the most famous writers in the Czech Republic. He was born in 1883 in Prague and died in 1923 in Lipnice. He lived mostly in Prague. Throughout his life Hasek proved to be a jerky, maladjusted spirit. He lived most of the time as free writers, had rarely a lengthy employment and if so, he lost it rather soon or left the job. For instance he had a badly paid job with the magazine 'The world of the animals' for a while. Since it became boring rather soon to report about existing animals, it let its fantasy play and 'invented' simply new animal species - the dismissal was the result. In 1910 he got married and had son Richard in 1910 with this wife. Soon after that he left his family and got divorced.

In 1916 he became a legionnaire. Two years later he left the legion. He said that the legionnaires were traitors. He entered then the Red Army. Here he was as enlightened worker. He changed his life. He stopped drinking and he became more skillful. In 1920 he went home with a Russian wife and his life started to become the same as before. He left politics and he started writing. He started drinking again and he got depressions.

In summer 1921 he went to Lipnice where he continued writing. But his health got worse. He died before he was 40 years old on flu and heart failure. More than 2000 of his Short stories and articles remained and are well known today.

His memory and style of writing are amazing: Someone would start to tell him some key words and he would immediately sat down and wrote 4 pages at once. He was able to talk and write at the same time. He was running to the Office before 6 o'clock, because the cash desk gets closed and he needs a honorarium. The story about writing Svejk is also very interesting. He used to send written pages form Lipnice to Prague and he kept by himself only the last page. He had always the whole story in his mind even including the last sentence.

He had an extensive knowledge of many topics. His favorite readings were books about cooking, books about travels, books about jokes, many and many interesting encyclopedias, glossaries and catechisms. He usually found many good ideas there. He wrote also satire of politic - "The Modest Advancement Side within the Limits of Law". This book was full of political satire and the current political scene easily mirrors everything.

Jaroslav Hasek found his place in the world literature with the figure of good soldier Svejk. The first two Svejk volumes appeared already in 1912 ('The good soldier Svejk and other strange little Stories') and in 1917 ('the good soldier Svejk in imprisonment'), but with the novel 'The adventures of the good soldier Svejk' he arrived at the zenith of his creative power. He could not complete the novel because he died.

The central shape of these novels is the dog dealer Josef Svejk who lived in Prague. Svejk is a human being, who on the one hand masters his daily life clumsily and naively, on the other hand survives the First World War with his wits, his directness and cleverness. The naive Svejk stands in a continuing fight against bureaucracy, national arbitrariness and militarism and exposes it with his straightforwardness as ridiculous pose. Though different in detail there is a great similarity to Franz Kafka. Both see the individual persons as victims of a hardly transparent social mesh and of an authoritarian-nationalistic government marked by arbitrariness (called "patriotism"). But while Kafka sees this as general phenomenon of life, contemporary history and the reality of the daily life of normal human beings are in the center of Hasek's attention and writing. Maybe that this is what made him world famous.

Antonín Slavicek

After more than 40 year the public have an opportunity to see a big retrospection of the founder of the Czech modern art. It is nobody else than Antonín Slavicek, one of the greatest Czech painters.

The exposition is shown in the Prague Gallery, Library. There are about 250 paintings. This exposition was opened on 17.03.2004 and it will be closed on 07.09.2004.

The Expo will introduce an autumn mood and melancholy to you. Also you will see paintings full of love, energy and joy of the life. Paintings full of sunrise and summer atmosphere. In 1905 painter began to be bored by land paintings. He changed his style and started painted many and many small pictures of houses, dwellings and settlements. He didn't paint just villages but big towns as well. He also started to depict live in Prague.

Finally the city of Prague became the inspiration of his life for Slavicek. He has drawn a view of Prague seen from Ladvi, which he has finished in just a couple of days. After finishing this picture he painted another view over Prague from Letna. The last of his paintings was Saint Vít's Cathedral. But he hasn't finished it; because of a very severe illness he committed suicide.

Tuesday, June 22

by Hans-Otto Lochmann, Jan Vít and Jan Král

The Session Before The Sessions

Igor Vít full in charge: He introduced the congregation to two major events of the Year so far: the Czech Republic recently arrived the European Union and Europa finally arrived in the FoxPro community: As the EU will change the daily life of everybody in the Czech Republic, Europa, now known by its adult name Visual FoxPro 9.0, will change the daily life of everybody in the FoxPro community.

Igor also introduced Antonio Lacuna, the Microsoft Europe's Business Development Manager for Eastern Europe. He is the responsible manager of Microsoft Europe for all commercial affairs of Microsoft's developer tools for Eastern Europe, like the Czech Republic, Rumania, Russia and Poland. If there is anything (except technical questions of course), please mail him.

Events of this character should always be celebrated with some thoughts about where you come from: There is no future without a past. So Igor put on a traditional dressing, which fits him quite well. Also more of Daquas people joined him, and in order to respect the local habit, Antonio Lacuna did not hesitate to follow also. (Remember? Think global act local!)

Key Note: On Route To Visual FoxPro 9.0

Ken Levy first presented a carefully compiled selection of music like the themes to the James Bond and Star Wars movies to keep the waiting audience happy. Then he proudly presented an equally carefully compiled selection of many of the new features of Visual FoxPro, which obviously really made the audience happy.

As Ken outlined, the selection and the design of the new features of Visual FoxPro is heavily based on the wish lists from customer feedback. Major goals have been:

  • Maintain backward compatibility.
  • Enhance database language and types.
  • Additional end user UI features.
  • Increase developer productivity.
  • Improve Report Writer significantly.
  • Extend .NET and SQL Server interoperability.
  • More extensibility, Xbase source code.

The final release is scheduled for the fourth quarter of 2004.

Major themes in the development of Visual FoxPro 9.0 has been

  • Data-Handling and Interoperability: .NET interoperability (XML and XML Web Services) and SQL Server interoperability (data types and language)
  • Extensible Developer Productivity Tools: Enhancements will be found in the IntelliSense, IDE, in the new Property sheet customization and in the enhanced design tools for reports, forms, controls
  • Increased flexibility for all types of solutions from a Smart client to Tablet PC applications

One of the hidden treasures within FoxPro will not only be maintained, it also will be enhanced: Quite a few of the developer tools are written in FoxPro and the source is provided with the product. This is a great source of learning on how to use the language.

And everybody who knows Ken Levy could have imagined what followed now: Lots of lots of lots of lots of ... "Hey, wait a minute!" he most probably would have said here: "That's enough of the 'lots'!" Well, OK, we'll take back some of the lots, but believe us, there were really a great many of well designed examples from the huge wealth of new features of the new old Visual FoxPro. Some of these enhancements have been popping up here and there, but this was a very comprehensive compilation. Among others Ken showed examples to demonstrate these features:

  • The fonts in the Project Manager can be changed now.
  • Anchor: This new feature simplifies the resizing and relocation of objects on forms substantially.
  • Intellisense works now within the with/endwith, even several layers down.
  • Limit of 65000: This limit is not valid any more for arrays and - guess it - procedures within files.
  • The IIF(), which has been around for many years, will become a companion: The ICASE(), which will include multiple CASE and one OTHERWISE statement besides DO CASE and ENDCASE. So it works like a function delivering a return value.
  • The graphical presentation of nearly all controls has been improved and their graphical abilities vastly enhanced: They can rotate, move the picture around the caption, have hidden hot keys, and many more items. PolyPoints seems to have attracted Ken's special attention and invoked his fun to play with it.
  • XML Adapter, the universal genius in connecting to everything "on the 'net", which has or accepts data, has been enhanced even further: It now can represent hierarchical XML data (i.e. several tables which have a dependency) better and easier than ever before.

Properties got a special attention:

  • Now a developer can develop his favorite properties on any object (limited within Visual FoxPro unfortunately).
  • New Properties can be defined and added with their initial value just in one turn.
  • If member data (which mostly refers to properties) are very long, you can make them visible in a kind of a tooltip display.
  • Any code (Visual FoxPro's code only of course) will work on any property on any object at design time.

It might not be the most exiting thing on the first view: but the contents of a memo field can nor only be code colored (works since Visual FoxPro 8), but you now can have them "intellisensed" as well. This in effect means, that once you hook an spell check onto intellisense, then you use memo fields an input area for long texts with an integrated spell checker in the user interface.

And of course, the report generator has been finally brought into the modern age. So it will not anymore be the problem child of every developer. As the protection of investments in frx-s has been a major design goal, an unusual command had to be introduced:

SET REPORTBEHAVIOR 90
with which you can invoke the new features of the report generator. The default setting is to the old behavior of the report generator, so there is no need to change working old code.

There are too many new features to be described here, therefore there is a selection here:

  • The report now has properties (see the Beta for details), which can be set like all other properties, i.e. on runtime as well.
  • Preview in a Visual FoxPro form, which lets you have more control than ever, especially when allowing the user to run previews and change the output.
  • Protection of objects in the report. This refers to the same situation as the previous point: You can prevent a user changing certain portions of the report, once you allow him to run a preview and change the output.

If you do want more information, just download the Beta, install it and go to the "What is new section" in the Help file and release notes (also included), There is also a vast amount of information concerning the report writer.

As VFP 9.0 is still in the Beta stage for the moment, Ken asks everybody to download the VFP 9.0 public beta and the additional stuff (Whitepapers and samples). Ken asks everybody to run existing applications with it and report the feedback, in case, an error is found.

In the Internet you will find community resources, public VFP newsgroups and related VFP communities, so just check these places for more news and information. There is a VS Data Team Blog, a Ken Levy's Blog, a Calvin Hsia's Blog and a special edition of the CoDe Magazine for VFP 9.0 in fall 2004. Ken also recommended keeping an eye on FoxPro Advisor and FoxTalk 2.0, which will publish articles on Visual FoxPro 9.0 rather soon.

Visual FoxPro 9.0 Review

Everyone has been looking forward to Visual FoxPro 9.0. Now VFP 9.0 has arrived and many questions have to be answered. Is VFP 9.0 useful? Are there features and news which will help us to develop application much more effectively and useful?

This session was directed to present some new features of Visual FoxPro 9.0 and also about some items that do not work very well. Though Ken Levy took great efforts to present as much as he could, there was just not enough time to present all information what the new version has to offer or what the new version is able or unable to do.

So Pavel Celba made some overview through news of VFP 9.0, which nicely augmented the Key Note. He explained new data types like VARCHAR or BLOG, and then showed examples with some of new commands, using ICASE() and CAST(), which are very useful functions, or the new property autocomplete. Pavel also presented some new items of the Report Writer, which he thinks to be one of the major advantages of Visual FoxPro 9.0.

He also spoke about XML features, which he thinks to be very important in the future. We cite: "Without knowing XML we not only will not be able to understand our women in the future, but we also will not understand our refrigerators."

The good sense of humor of this speaker made it a fun to follow his session. At the end Pavel made an important remark: If you want many more versions of Visual FoxPro then go out and by Visual FoxPro 9. If many developers buy Visual FoxPro 9 and put forward their wishes on a wish list then there certainly will be a version 10 with even more features as proposed by the developer community.

Introduction To Business Object Programming and VFP Business Object Extensibility And Configuration

As Steven Black pointed out you can do everything in many ways. But, as the old Romans already said: "respice finem" or (rephrased but not translated) "consider, where you finally will arrive at" (Steven didn't quote this, it was slipped in by the reporters as a sign of admiration).

This session was not about how you design this or that detail of something, this session actually was about meta design rules. Steven concentrated on explaining how to use the available architectural design schemes to create applications, whose internal working does not only fit into the today's world of a user but also survives the unavoidable changes in that user's real world, without causing nightmares to the developer.

Of course there are many more benefits using this generalized design schemes such as greater adaptability to different environments etc. But as Steven pointed out, there is a price to be paid when using this approach: As the initial analysis and design considerations require considerable efforts, it needs to have larger application to have a decent payoff quickly. Small Systems are easier to build and maintain. To build large systems requires technology, a good system engineering approach, an ample amount of time and a sound financial basis.

Steven reviewed what Business Objects are, the VFP Business Objects programming patterns and Extensibility and Configurability of Business Objects. As these are related yet larger fields, Steven used two sessions to present these topics.

There are just 2 benefits from using technology in system design (and this is not restricted to system design and programming):

  • Increase in VALUE of the work
  • Increase in CONTROL over the work
and Business objects typically give us both. Now the question is: What are Business Objects?

Externally, Business objects mirror tangible things the business cares about, like:

  • Parties (people, organizations,...)
  • Transactions, orders, products, shipments, loads, routes, ..
  • Assets (vehicles, buildings, machines...)
  • Documents, work items,...
  • Processes, workflows, events,...

Internally, Business Objects can be designed to do many things, configured by metadata. For example:

  • Manage data,
  • enforce business rules and validation,
  • provide a variety of ancillary services, and
  • collaborate with other business objects

Steven went further into the details, which is far too much for this report. But being an experienced presentator, he also provided a paper to this topic, which can easily be downloaded

XML Web Services In Visual FoxPro, Step By Step

It is some time now, since Web Services became accepted as a standard for exchanging data among non-compatible applications and systems. So, it is to no surprise, that that XML Web Services became to evolve. In his session Jan Vít looked on the existing and on the new possibilities of working with Web Services from the FoxPro developer perspective.

The first third of the session was devoted to introducing Web Services standards, such as SOAP, WSDL and UDDI. The whole communication, which is exchanged between client and server, was demonstrated on a simple, but effective schema. This part was mostly for developers, who get involved with Web Services for the first time.

The other two thirds were pure demos of using and creating a Web Service in Visual FoxPro. The first demo showed already very familiar things - retrieving data from the FoxCentralNews Web Service. The second explained creating a Web Service from the scratch and, of course, demonstrated how to use it.

In this part, Jan also showed his tool called HttpTrace, which is capable of showing the exact SOAP requests and responses while HTTP-messages are exchanged.

To demonstrate that Web Services are software and platform independent, Jan accessed the newly created Web Service from Visual Basic Script, ASP page and even .NET.

As this was the first session Jan Vít ever did, everybody kept his fingers crossed for him including his parents. They came so that Jan had someone to look at who would always smile back. Well, all of this turned out to be completely unnecessary, because Jan mastered his first session with the ease of an experienced presentator, who perfectly knew, what he was talking about, always full in command of the audience. So, welcome in the Club, Jan! (Last paragraph added by Hans and Jan Král.)

Use Visual FoxPro To Provide And Consume XML

XML was designed as a language to serve as a platform independent transporting mechanism of data and other information. Yet XML is "only" a standard for describing how information is structured. This makes it much easier to structure information and to move it from one application to the next one, or from one program to another. On the other side, XML does not specify, how the information should be structured, though it provides means to describe the data structure, with these definitions also been written in XML (the DTD - Document Type Definition). In some ways XML is nothing but another Markup Language, yet as it has been widely accepted as THE mean of transporting data in the B2B world, it has by far outgrown its original intent.

One of the reasons of the popularity of XML is, that it is also well suited to transport data between applications or within applications, both on the web and the desktop. There is virtually no data end or data server (SQL or otherwise), which cannot provide its data as XML string or accept XML formated data.

Visual FoxPro's powerful XML support makes it easy for it to play well with others as both an XML provider and an XML consumer. Therefore Toni Feltman focused in this session on how to use the XML tools that are an integral part of Visual FoxPro since version 7.0.

Toni outlined the features, which are available in Visual FoxPro 8.0 to assist the developer in producing and consuming XML. These features include, but are not limited to:

  • CURSORTOXML(),
  • XMLTOCURSOR(),
  • XMLUPDATEGRAM(),
  • XMLAdapter,
  • XMLField,
  • XMLTable

With a wealth of examples Toni showed how each of these features can be used to both consume and produce well formed and valid XML documents. She includes carefully designed comparisons so the attendees could understand the different ways that Visual FoxPro can work with XML in order to have a better assessment of which features should be used in which situation that a developer may encounter in every project.

Toni enhanced her session with real world examples, which use Visual FoxPro power to produce and consume XML documents, which were based on the foundations that were laid out earlier in this session. A very nice take home from this session are two small working examples with classes that will streamline the process of working with XML documents in every developers' Visual FoxPro applications.

Toni also took care of the applications build with FoxPro 2.6, which are, because they are well built, still running and doing their job well. If a developer knows the twists and wrinkles of XML well he / she might also use the powerful TEXT / ENDTEXT in conjunction with the low level functions FCREATE, FOPEN FCLOSE FREAD FWRITE to create plain text files to send / receive XML data.

Example (courtesy F1 Technologies):

LOCAL ;
	lnI AS Integer, ;
	lcField AS Character 

* Open the data source.	
OPEN DATABASE Test
USE Offices

* Setup textmerge.
SET TEXTMERGE DELIMITERS TO [{], [}]
SET TEXTMERGE TO [Offices_TextMerge.xml]
SET TEXTMERGE ON NOSHOW

* Start to build the XML document by hand.
\\
\
\

* Add nodes for each record.
SCAN
	\
	FOR lnI = 1 TO FCOUNT()
		lcField = FIELD(lnI)
		\	<{PROPER(lcField)}>{ALLTRIM(TRANSFORM(EVALUATE(lcField)))}
	ENDFOR	
	\
ENDSCAN
\

* Cleanup
SET TEXTMERGE OFF
SET TEXTMERGE DELIMITERS TO
SET TEXTMERGE TO
USE
CLOSE DATABASE

Team Development With Visual FoxPro

At some point in each developer's career he or she will have to work at least with another developer on a project. In this session Mike and Toni Feltman gave a little insight into managing the developer team, as well as few proposals for a single developer, who wants to have his source code properly organized.

There are two things, you have to settle first:

  • Design, design, design ... Design is the most important thing. The application has to be based on modules. Each team can than develop their module independently and at the end, all modules can be combined and tested.
  • At the start, all teams should have their priorities. It can easily come to a situation, when one team needs a module from the other team to complete theirs and therefore has to wait. This can be more or less avoided if proper priorities are made and tasks are divided in the beginning.

Mike and Toni than explained the necessity that some people are made responsible for certain parts of the project. These people should divide tasks according to specific rules. The rule number one is, of course, skills. The other one is how much is the person occupied by now. This list could go on and on. You should not forget even about the secretary! While she has no phone call to handle, she can test some applications! Why? Additional testing is helpful and everybody should be able to handle your user-friendly GUI, right?

Together with demonstration of Visual SourceSafe Mike and Toni gave the ideas about on-line team communication (Outlook, Windows Messenger, Chat, etc.), naming and comments conventions and lots of other things.

And one thing at the end: When the project ends, no matter whether successfully or not, you certainly should get over the whole process once again and see, what was good, what went wrong and make some modifications to your strategy of leading the team, so you make sure you will avoid making the same mistakes next time.

Wednesday, June 23

by Hans-Otto Lochmann, Jan Vít and Jan Král

Case Study: How We Did It - Kostka

The first of the sessions "How We did It" is about Kostka. In this session Miroslav Krejcí introduced the audience to an economic and information server called Kostka. This system is using Microsoft SQL Server for saving data. The clients, which are used to retrieve data from Kostka, have been developed in Visual FoxPro.

Miroslav presented some very important design details, which were used to develop a system like this one, and which tools are necessary to be used or will be good to use.

There are many questions, which have to be solved, starting with the first one: Do we use Visual FoxPro to develop the application? Shall we use MS SQL Server to store the data? Is it safe? And so on.

So finally the decision was made to use both: Visual FoxPro is a very good tool and MS SQL is perfect for storing and maintaining data even if the database eventually will become very large. Both have been available.

The main focus of this session was a detailed description on building the data transfer between the Visual FoxPro application and the MS SQL Server using for example CursorAdapter, Pass-through and other Visual FoxPro tools. Miroslav also explained the settings of the MS SQL Server.

Miroslav also showed how to backup your own data on a SQL Server. He also showed how ActiveX and automation was used to integrate other applications like Excel, Outlook etc. He put a big emphasis on kind of an on-line usage of the Visual FoxPro Documenting Wizard, which will lay a good basis for the later user guide for the application.

OOP Heuristics

OOP Heuristics was a sessions on object oriented programming topic given by Steven Black, focusing on how to properly design applications in order to make them really reusable and to make them to be maintained easily.

At the beginning Steven emphasized, that heuristics are rules of the thumb. Then he went on with many recommendations to make well designed object oriented programs. Let's mention at least some of the most interesting ones:

"All properties should be hidden within its class."

This means that class properties should be hidden behind accessor methods. Thus prefer x.setFoo("bar") to x.Foo="bar".

The main motive for this heuristic is maintenance: Respecting this heuristic makes you more free to modify the behavior and implementation of the Foo property without having to take into consideration what other objects could do with this class, e.g. assigning a non permissible value.

Also, hiding a property, will prevent intellisense to show it. By that you can reduce the number of properties shown by intellisense to those, which are really important for the user of your object. This can, however, be very disturbing during debugging - you do not have a possibility to watch hidden properties from Visual FoxPro Debugger Watch window.

"Minimize the number of messages in the protocol of a class."

A real problem with vast interfaces is that it is hard to find what you need, and this greatly hurts reusability and maintainability. Having too many methods means either the class is doing too much, or that the methods have the wrong granularity. Using some easily to be understood examples Steven showed the consequence of "over-messaging" an object:

The wrong form:

x = Create("SomeClass")
x.OpenFiles()
x.DoSomething()
x.CloseFiles()

The right form is then, of course:

x = Create("SomeClass")
x.Process()

What are the advantages of the second way of doing it? Well, the first one is obvious. You will minimize the actual amount of data transmitted. The second one is kind of a logical one: Why does the client have to know that the object needs to open the data file first, that it then needs to do some processing and then the object has to care to close the data file. The object could have handled this sequence automatically.

Steven brought some more example, but reporting them would explode a report like this. See some of his papers on this topic.

Well, we could not resist to mention one, actually very thoughtful, example from the session:

"Object oriented Cow"

Imagine an object oriented cowshed, object oriented cows and, of course, object oriented milk.

Now comes the question: Should the oo-cow send the oo-milk the UnCowYourself() message (UnCow = "Get out of me!"), or should the oo-milk send the oo-cow the UnMilkYourself() message (UnMilk = Shed the milk!)"? - What is your decision?

Well, before digging too deep into a decision tree, consider what might be missing? - Well of course, the farmer!

Sometimes it is very useful to put some object (e.g. the farmer) into the middle (between the milk and the cow) to handle things in a better fashion, don't you agree?

As this was the last session, held by Steven Black, in this year's Prague DevCon, the attendance was very good and included even those who obviously do not master the English language too well.

Case Study: How We Did It - Clavius

The next of the sessions "How We did It" is about Clavius. It is a library system developed in and for a small town called Tabor, whose adaptable "client / server" architecture is using as well Microsoft SQL Server as Oracle9i for storing data.

The clients have been developed in Visual FoxPro. Jirí Šilha and Ivan Cerný explained important details on how to work with implementation in different versions of Visual FoxPro, updating program modules using HTTP protocol, while the program is still working on a network and how to work with different databases on different database servers.

Both explained the necessary basics of having applications communicate over a long distance and how to access the data server via internet. They also gave us some insight into their data structure - examples: They do not use .NULL. They advised us strongly that it is better not to use logical values in a Microsoft SQL Server.

At the end of the session they presented their business model. They also outlined some of the restriction of this application: for example, the front end can only handle a limited number of books.

XML Web Services For Advanced Developer

"Everybody heard about Web Services, many have tried to create them, but only few people are using them in real world applications." This is the motto of the whole session, presented by Petr Zaoral. He ventured to explain all those details about using and creating Web Services which you need to know in order to avoid falling into the many pitfalls you may encounter and wished you haven't.

Those pitfalls certainly include getting a "File access denied" error when you want to rebuild a DLL which is currently cached by IIS, how to make SLL and authenticated communication and so on. If you're behind the proxy, having an ability to configure the proxy settings might also become very handy.

Petr than explained what is the actual content of SOAP message, both request and response and described the most important parts.

Some developers like to use Microsoft SOAP Toolkit as some kind of a black box. Some like to have a full control of what the computer is doing. If you belong to latter type, you may find the SOAP object model useful.

If you combine the last two things mentioned above you could use SOAP headers to get better security or even make web services stateful! If you're wondering how you can make stateless technology stateful, just remember something from ASP or PHP. Those two languages are using special unique key for identifying each client. Once there has already been a communication with a particular key and the same client is calling again, the server now precisely knows where the previous communication has ended and can go on now.

By implementing a special class, which is designed exclusively for this purpose, SOAP headers can be modified. After explaining all the necessary theoretical stuff, Petr showed actual Visual FoxPro example forms.

At the end came the so called "philosophical conclusion": With this conclusion Petr wanted to empathize, that web services are very powerful and very flexible technology. While there are not so many implementations yet, certainly, new ones are becoming alive. Among others, Petr mentioned Google, which is almost always forehead in internet technologies and an eBay web service.

Connect Visual FoxPro To SQL Servers - For Beginners

Have you ever considered working with SQL Server but did not do it yet? If so then this session of Petr Bauer was the right one for you. This session was mainly about how to work effectively with the SQL Server and how to bring SQL Server and Visual FoxPro together.

First Petr explained the basics of SQL Servers and why SQL Servers are well suited to store the data. After this he continued to explain the different versions of SQL Server like Standard edition, Professional edition, Developer edition and also the MSDE and its limitations. The session also included the SQL Server tools.

Petr explained three important SQL Server tools:

  • Enterprise manager - security, creating tables, backup
  • Query analyzer - testing queries
  • SQL Server Service manager - starting and managing SQL Server

Petr also explained the most important aspects on how to connect SQL server and Visual FoxPro:

  • Using ODBC - it is a mediator between VFP and SQL Server
  • Using Connecting String

He also demonstrated the use of further important commands and features (CursorAdapter, SqlExec, Update), which you most likely will use when you start working with SQL Server. He also compared MySQL and SQL Server. Are you interested in his conclusions? MS SQL Server is not only more powerful, it is also more reliable and much faster than MySQL.

He also spoke about some easy to use frameworks for SQL Server, where you have to set just a couple of parameters and then start editing your own data on the SQL Server. Finally Petr showed some nice and very useful examples.

ABC#

(To be spoken in a low voice, so only your neighbor can hear it: Spell it a-be-cee-sharp!)

As usual, all the attendees were looking forward to see Milan Kosina's PowerPoint Show, which is getting more and more remarkable from year to year. -- Yes, you're right. -- The ONLY slide presented was the slide featuring the name of the session (quite short this time - ABC#) and Milan's name together with his email address.

When he closed the PowerPoint-"Presentation" a big applause started and everybody in the room was looking forward to Milan's session, composed of things coming from rich developer experience!

C# is very often to be considered as the main language of .NET. .NET is considered to be something very different from Visual FoxPro and something FoxPro developers will never need. - Lets reconsider! An extra knowledge can always become useful.

The main goal of this session was to get all attendees acquainted with the C# language from the very beginning. Milan knew that everybody in the room spoke FoxPro, so he took the role of a simultaneous interpreter between attendees and the projection screen.

If you expect Milan has just opened the VS.NET and started writing the code, you're wrong. He just opened the text file and there he had his code. After that, he ran the compile program, which is part of the free .NET Framework from Microsoft, and showed how easily he made a C# application!

He explained many new terms, which FoxPro developers are not familiar with (i.e. structs, namespaces, etc.), compared operators, coding techniques and finally got even to access a FoxPro DBF through an OLE DB driver.

Watching everybody leaving the session, it became immediately clear, that the attendees were seriously contemplating what they had just heard.

Introduction to Microsoft SQL Server Reporting Services

Michal Neuwirth's session was about the basics of Microsoft SQL Server Reporting Services, which are an enlargement of MS SQL Server to create and browse output reports.

First of all he was speaking about the architecture of the SQL Server Reporting Services and compared them with developing own reports using Visual Studio .NET or third party programs. Everybody, who bought SQL Server 2000, can use this Report Service. When the report is created, it can be used only with SQL Server 2000.

Which data sources can be used? The data source, which he used in his examples can be tables or databases from SQL Server. But the data source also can be OLE DB, .NET data providers, ODBC even Oracle. There are two types of connection:

  • 1. Share connection (for more than one report)
  • 2. Private connection (just for one report)

Michal showed the audience that the output from the SQL Server RS can be in different formats like .xls (Excel), XML, HTML 4.0 and even PDF. If you like you even can have the report send to you by e-mail after setting which type of output file would you like to have (of course, the SQL Server has to have a connection to a mail facility). Do you like nicely formatted reports and graphic design? No problem, with SQL Server RS you can use pictures, color lines, triangles and so on to make you report prettier.

Michal also showed the Item Properties (Border Style, Padding, Text align etc.) and the Report Parameters. Parameter can also be transmitted to other reports. He also dealt with the task how to secure reports. For each topic Michal presented convincing examples.

Client Server Data Access Techniques With Visual FoxPro

Mike Feltman presented the material on C/S data access techniques in two sessions. This report covers both of them.

Visual FoxPro offers numerous means of accessing remote data. Among those are

  • Remote Views,
  • Dynamic SQL Pass Through,
  • SQL Pass Through calling Stored Procedures,
  • ADO,
  • XML,
  • CursorAdapter.

Mike presented a comparison and put together pros and cons of each technique and gave some advice on what method to choose in a particular situation.

First section of the session was called "ease of use". Here, Mike went through every tool and described, how efficiently and easily you can put them to use by comparing them by these criteria

  • Ease of Use
  • UI and Tool Support
  • Normalcy
  • Plays Well With Others

Mike showed all interesting options you can set if you decided to access the remote data via a Remote View. Next came Dynamic SQL Pass-Through, where Mike described SQLEXEC() command and many of its possible parameters. He also pointed out that using questions marks helps to define queries better. When speaking about stored procedures Mike pointed out one strong disadvantage of their usage: You mostly have to update stored procedures together with change in your application and as they are not part of your application they are hard to maintain. But, of course, you get a very good performance compared to other access methods.

According to Mike, CursorAdapters are very useful, though at some part not designed, as he would like to have. He regrets that they came quite late.

Here is a very short summary of his comparison of the access methods:

  • Remote Views
    • . Least Maintenance
    • . Fastest Development
    • . Least Flexible
    • . Least Powerful
    • . Easy Deployment
  • Dynamic SQL
    • . Low Maintenance
    • . Fast Development
    • . Highly Flexible
    • . Powerful
    • . Easy Deployment
  • Stored Procedures
    • . Most Maintenance
    • . Slower Development
    • . Most Flexible
    • . Most Powerful
    • . Deployment Concerns
  • CursorAdapter with ODBC
    • . Poor Maintenance
    • . Fast Development
    • . Very Flexible
    • . Very Powerful
    • . Deployment depends on implementation
  • CursorAdapter with ADO
    • . Poor Maintenance
    • . Fast Development
    • . Very Flexible
    • . Very Powerful
    • . MDAC Required for Deployment

There is no best advice, what technique is best for all situations. For every single implementation the technique should to be chosen, which fits best to the particular situation. What should be taken into consideration, when contemplating this choice? Size and content matters, performance may be different, results can vary depending on the technique chosen, and so forth. Mike claims, that developers, who have much more experience than he has and who are taking care of large databases, swear, that stored procedures would be the best solution.

License Problems

Darina Vodrážková seminar was very interesting and at the same time quite unusual. Maybe one can say that it wasn't exactly a seminar of the usual type it was more something like a Questions & Answers Session. And as the audience had a vivid interest in this topic there were many questions and a good answer for each of them. So this seminar was very successful.

The seminar would help not to go astray from the area of legality and join the software pirates. It showed how you could prove that your software is legal. The discussion also included licensing of OEM version. Darina also discussed problems with distributing or copying software. There are - as everybody knows - tons of questions in this field. Darina focused on those questions, which have been in the focus of the audience.

These questions included how many of licenses you would need when you are working at your office or at home. Another of the questions of wide interest had been the licensing rules for SQL Server and Windows Server, for instance what to do if you have one processor license, but your server has two processors.

What is the situation if you use more then one version of a product at the same time? Is that legal? How many people and computers can share one license? As these questions concern the daily life of all developers the discussion and the participation of the audience were very vivid and everybody enjoyed the seminar.

Q & A

During the first two days of the conference, all attendees had an opportunity to write their technical questions onto a sheet of paper and put these question papers into a box at the conference reception. Traditionally, at the end of the second conference day, a panel of the speakers would answer these questions.

Right at the beginning Igor announced, that there will be a change in the handling of the Q&A since last years. This year there will be no evaluation of how many questions were answered successfully and how many were not. The organizers were afraid they might loose this year. At the end, all questions except one, which went to the technical support, were well answered - the audience was evaluating each answer. Everybody in the audience was happy, the panel was happy and Igor as well, as he got the panel well motivated just from the beginning <vbg>.

Out of the wealth of questions the reporters selected two, where they found the answers quite useful:

Q: What operating systems will the VFP9 Runtime and the Development environment run on?"
A: There are currently no changes planned compared to version 8. That means the runtime will need Windows 98 and up and the development environment will need at least Windows 2000.

Q: "Are the new Report tools going to be translated to Czech?"
(By the way this is quite an important question for FoxHeads in the Czech Republic.)
A: The whole runtime of Visual FoxPro 9 will be available in Czech, as it has always been. It isn't clear now, who will take care of the translations. However, it is not so hard to do it by ourselves using the header file supplied with those tools, it would certainly be nice to have it unified somehow.

Thursday, June 24

by Hans-Otto Lochmann, Jan Vít and Jan Král

SQL Features In Visual FoxPro 9.0

Whenever the name "Milan Kosina" appears in the conference schedule, the room will always be filled to the last seat. This session, concentrating on the SQL portion of the Visual FoxPro language as well as on other data commands, which are new to Visual FoxPro 9.0, was no exception.

The support of SQL language was significantly increased in Visual FoxPro 9.0. The first part of this session highlighted new and changed behavior of Visual FoxPro SQL language. In short: Various limitations of SQL SELECT command have been removed. You now can include SELECT almost anywhere in another select command. Among others there are new possibilities with the FROM clause in UPDATE SQL and DELETE SQL commands.

The second part started with two nice examples. The first one concentrated on the SET REFRESH command, which is enhanced in Visual FoxPro 9. This command will change the behavior of Visual FoxPro when retrieving data from DBF files. It specifies whether the data from are to be retrieved from the hard drive or from the cache.

The second example is quite scarier. It shows the new command, SET SQLBUFFERING, which, again, decides whether the data are retrieved from the disk or from the cache. When prepared in the "right" way, you may also get a mixture of the disk data and the cache data. In this case the data definitely will be surprising and might cause some head scratching.

Milan then concentrated on miscellaneous commands that have been either added or changed in version 9 and explained them one by one. Among them for example the GETAUTOINCVALUE(), CAST(), ICASE() and other commands. He then continued with explaining new data types in Visual FoxPro 9 and what has changed in the CursorAdapter since it first appeared in Visual FoxPro 8.

At the end of the session he included a question, which, when answered properly, might make you an owner of the Visual FoxPro DevCon Praha 2004 official rucksack (= backpack). If you wonder, what the question was, here it is. You can try to answer it as well, if you care:

LOCAL lnNumber as Numeric
lnNumber = 1.000
? GetDecimalPlaces(lnNumber)
Can you implement this function? - As far as we know, there are two possible answers!

Intellisense for Applications

Visual FoxPro 9.0 gives us Intellisense inside of memo fields. What does that mean for end-user applications? In her session Toni Feltman explored several real world uses for Intellisense in Visual FoxPro applications.

Toni started with going over some IntelliSense basics, which every Visual FoxPro developer uses every day: Type "MC" into the command window, hit the space bar and you get "MODIFY COMMAND". Most developers call this AutoComplete. Toni has chosen to call it AutoCorrect for two reasons:

  • It is the term that end-users will recognize because it performs in a fashion similar to AutoCorrect in Microsoft Office.
  • There is the new AutoComplete textbox in Visual FoxPro 9.0 and the users should not confusing AutoCorrect with AutoComplete.
Besides being expanded to MODIFY COMMAND a second thing happens when the spacebar is pressed: A small "tool-tip" like window displays the syntax for MODIFY COMMAND. This is called Quick Info Text.

Depending on the command, which is typed into the Command Window or a window of the Program Editor Intellisense presents a list of options for this command. These lists are called Quick Info Lists. These lists helps to build the command properly. As you scroll through one of the lists, Quick Info Text can accompany the selected item for additional details.

The next feature of Intellisense, which Toni showed, is usually called a script (referring to a specialized script within the Intellisense file): Basically, the user types a single word and when he/she presses the space bar, the word is replaced with one or more lines, which can be program code of anything else. But Toni sees it with the eyes of a user and prefers to call this feature a template, because whatever the user types is for him/for her a placeholder or a template for something, which is expanded to those lines of text which he/she identifies with the keyword, which he/she typed.

Based on these basics Toni presented a nice arsenal of tools, which utilizes these new features - Intellisense in memo fields. Of course these tools were presented in examples. All examples have been provided as source in the conference CD. - This set of features can immediately be use by each application developer (with some little adoption work) to provide additional benefits for his users. Make text entry as easy as it is in Microsoft Word! (See Word's feature AutoCorrect (Tools > AutoCorrect)).

One of Toni's strength is, that she not only cares for the grand scheme, she also cares for details: She outlined, that before IntelliSense can be used in memo fields at runtime, Syntax Coloring must be turned on for the memo field. In order for Syntax Coloring to be turned on, Word Wrap must be turned off. As the Editor properties are stored in the FoxUser file, it is a good idea to ship the application with a FoxUser file that already has syntax coloring turned on as the default for memo fields.

To do this, she recommends the following procedure: Set the resource file to a new filename. This can be done through the Environment Manager pane of the Task Pane Manager. After the new resource file is created, execute the following code:

create cursor junk (mNotes m)
modi memo mNotes

While the memo editing window is open, right click and choose properties. In the Edit Properties window do the following:

  • 1. Turn Word Wrap off.
  • 2. Turn Syntax Coloring on.
  • 3. Turn Save Preference on.
  • 4. Turn Apply to Memos on. (This one will make these settings the default for all newly opened memo fields.)
Another Configuration tool is the EditorOption property of the _VFP object. This property contains a combination of letters that turn on and off various Intellisense options. The default value for this property is "LQKT". (See Visual FoxPro's help file.)

Toni then presented 4 examples for her Intellisense tools:

  • Example #1 - AutoCorrect
    As mentioned earlier, Toni calls this AutoCorrect because that is what an end user would understand since it does the same thing as Microsoft Office AutoCorrect. Developers call it AutoComplete because it is a shortcut notation for common programming commands.
  • Example #2 - Custom Lists (Static)
    If you use the SET command in the Command Window and a space is typed, a list will be presented so that the user can choose from all the pre-defined SET commands. This same type of list might be useful in an evaluation where a person has a finite list of values they can pick from. Toni showed how to do that in code.
  • Example #3 - Custom Lists (Dynamic from a table)
    The hard coded list is fine. What if you want to build the list based on data in a table, so the table can be changed as needed? Toni showed how to expand Example #2 to create an IntelliSense entry that can build a dynamic list based on data in a body parts table.
  • Example #4 - Templates
    Finally, Toni's last example was for templates. In this scenario, a template is made up by an abbreviation that yields several lines of text. In the text, there can be text merge fields. These fields are evaluated when the abbreviation is used and the text merge fields are replaced with the actual data. This type of IntelliSense is much easier to configure than you would think. Toni showed how to do that, in an example taken from a recently finished application for the administration of a Physical Therapy station.

Having fun with Visual FoxPro and VFX

There are a lot of concepts in Visual FoxPro, that are different from the official theory, but help us with rapid application development. With his session title Rainer Becker was not aiming in entertaining a crowd of onlookers. In this session Rainer's goal was to show with some carefully selected examples "when, where and why" using VFP can be of a great advantage in software development, at least if you know what you are going to do. So the above motto means: "Don't worry (whether you employ the proper theory), be happy, know what you want to do, what are you going to do and do it - now!"

Though this session was intended be a vendor session, Rainer brought forward quite a few important facts, which we will report about. As for reasons of fairness against all other vendor session presenter we will leave out the vendor portion of his session (see below).

Rainer reminded on some basics, which, we, the reporter, think, is so important, every serious developer should write it on a large poster and put it on this wall and he/she should have it available as PowerPoint sheets or as leaflets whenever he/she visits a client. Every Visual FoxPro Developer should be proud to be member of this community:

  • Visual FoxPro Capabilities
    • Free unlimited application distribution
    • Free unlimited database distribution
    • Free unlimited report writer distribution
      • Just add "MODI REPO ?" to your menu
    • All in one tool (everything, which you need)
    • Partially via integration (Help, Install)
    • Fine-tuned over a decade of development
      • Lifecycle extended by Microsoft to 2014 with VFP 9
  • Visual FoxPro Language
    • Hybrid programming language
      • Procedural
        • Great for batch jobs
        • Self-modifying code
      • Data-aware commands
        • Compiled commands for local database engine
      • Object-based (like Visual Basic)
        • But using Containers instead of simple Frames
      • Object-oriented (with Business Objects)
        • Ignoring theory of total encapsulation
  • Visual FoxPro Database
    • Hybrid database commands
      • Fast xBase table commands (records)
      • SQL
      • Mixed use - xBase on cursor
      • Replace all a.val with b.val for seek(a.key, "b")
    • "Compiled" database access
      • Critics: no strict type checking in language
      • Vice versa: always database command strings...
  • Visual FoxPro Special
    • OOP Special:
      • Awareness of parent and all other objects
      • Container subclassing including ActiveX-Controls
      • Ease of redirection of subclassing
      • Not (yet) Collection-oriented
    • PROG Special:
      • Evaluate, Macro, ExceScript, Compile
      • Definition files are tables
      • Command window for direct execution

Rainer then went on explaining the virtues of VFX, which we leave out here, except for his general recommendations:

  • Software-architecture is very challenging and three-tiered applications with business objects are very powerful,
  • but only if you can afford them or your client is willing to pay for it.
  • Otherwise stick to RAD, get a good framework and build and sell applications.

Visual FoxPro Report Writer in Visual FoxPro 9.0

In the whole history of Prague DevCon, there never has been a session discussing the Report Writer. Can you imagine why? - Of course you can! There has never been anything to speak about. This now has changed with Visual FoxPro 9.0!

Because of the great demand in enhancing the Report Writer, the Visual FoxPro development team has decided to make the Report Writer a priority feature in the upcoming Visual FoxPro 9.0. Therefore Martin Haluza had certainly a large amount of items to report about in his session.

At the very beginning Martin stated, that the Visual FoxPro team kept the old version of the report writer alive in order to protect investments in the .frx-files. They added new modules, which are now "hanging" in the report generator. Those modules can be either be modified or replaced. That allows the developer to create his own builders and option dialogs. Martin then showed examples using these possibilities.

New features Visual FoxPro's new Report Writer were demonstrated right away, including multiple detail bands, tables with multiple relations, protection, codepage issue techniques, trimming of long fields.

ReportOutput.APP is taking care of sending the data to the output device, no matter whether the output is directed to the screen, the printer, an XML or an HTML page. The path of the APP file is saved in _REPORTOUTPUT system variable. This application contains a Report listener class, which takes care of many other listener classes. There is a different listener for each type of output. You can also put your own listeners under the control of the Report output application, or you can just create your own listener and use it right from the REPORT FORM call.

Martin showed further examples. Among others he demonstrated how to generate TIFF files, how to make your own preview form or how to draw directly to the report. For example drawing can be very useful when creating graphs. It needs just few lines in order to play with GDI+.

The whole atmosphere of the session was very comfortable. Martin made sure to go slowly enough that everybody in audience could keep up and that every one could find at least a few features, which he/she might be able to use in their applications right away.

Building N-tier Applications With VFP

Mike M. Feltman started his session on n-tier development with the well-established definition: N-tier development is the separation of various portions of applications into separate tiers. Generally speaking, all the code and all the objects that make up the user interface and performs appropriate operations are separated into one tier, all of the code that enforces the so called business rules is separated into another tier, and all of the code that takes care of storing, retrieving and maintaining the data lives in the data tier. Quite often this approach referred to as layered as well.

Whether these tiers are located on one machine or are separated onto different machines is not a question of the application architecture, but a question of deployment design.

Most important in this context is, that you can develop all three layers (or more of them if the design calls for that) with Visual FoxPro, which has been refined over the years to contain all elements, tools and wizards needed for all of these tiers. You even can use solely Visual FoxPro when the deployment requests that the tiers reside physically on different machines.

In order to allow this, the application must also have a logical separation of tiers. Simplified this means that different classes handle the different tiers in the application. This logical separation of the tiers is what Mike focused on in this session.

Traditionally the tiers of an n-tier application are user interface, business logic and data, which is why n-tier development is often referred to as three-tier development. Sometimes additional layers such as the data access tier and system tier have been mentioned in this context.

In today's deployment designs like web services have also to be taken into consideration. If you look on the top-tier, traditionally called the user interface, what does it do? If you look at it a little bit more abstractly, it asks the business layer to do things for it, generally saving or retrieving data. This top-layer could just as easily be something non-visual, like a web service. For this reason, it may be better to think of the top tier as a requester.

When a request is made from the requester, that request goes to the business tier and tells it what it wants to do. The business tier may do some negotiating, like checking the identity of the requester and if it has the appropriate access rights. If the requester is cleared then the business tier passes the request on to the data tier. In many ways, the business tier can then be thought of as the broker.

The data tier basically deals with persistence, generally it takes a request, gets the desired data and passes it back or it takes a request to save data, saves it and passes back that it was successful. In other words, the data tier can be thought of as the provider. The provider is the tier that actually does something with the data.

Using this concept Mike showed with the help of some code some of the most important feature of each of these 3 tiers. Finally he weighted the pros and cons of this design with the following comparison.

  • Advantages of n-Tier
    • Increased re-use of application components.
    • Applications are more responsive to change.
    • Allows business rules and data to be accessed from other applications.
    • Eases long-term maintenance.
    • Requires stronger emphasis on design.
    • Separates interface from implementation.
    • Scalability.
  • Disadvantages of n-Tier.
    • Requires Stronger Emphasis on Design.
    • More Complex Object Models.
    • Steeper Learning Curve.
    • Requires Strict Discipline.
    • Possible Performance Problems.

The conclusion of all of this is that Mike strongly believes in developing all applications using the n-tier architecture. The benefits simply outweigh the costs in my opinion. In addition, when the client wants it to happen, he is ready to take their application to the next platform. All but one of the disadvantages mentioned are disadvantages to the developer, not the user or client of the system. The only disadvantage to the client is the possible performance issue.

Visual FoxPro 9.0: New GUI Features In A Detailed Review

Making the GUI is one of the hardest parts in creating applications. Štepán Burian explained the new GUI features in this session, such as Anchor, PolyPoints, forms docking and many more of them.

Because everyone of the audience had already seen Ken Levy's Key Note together with demonstrations of many of new features included in Visual FoxPro 9, Štepán decided to take quite a different approach for his session. He took one new feature at a time and discussed its bright and dark sides. Unfortunately it is not the purpose of this report to go through the whole content of Štepán's session, we will pick just two most interesting features:

Auto-complete feature:
This newly implemented feature works in textbox. If properly configured, it registers all the things you write into the textbox to the DBF of your choice. Then, when you're using the textbox again, it will show you these values, so you can pick something similar to what you are typing now. It is actually pretty the same as in the navigate-to ComboBox in the Internet Explorer. So far the nice part.

The dark side could come from the fact that VFP9 is still a BETA. Implementations can change or will stay as they are now: Auto-complete does not work with numerics. Perhaps we can live with that behavior. If we need it, it could possibly be implemented through as a text entry, which is later converted to a numeric. More worrisome is the fact that there is no possibility to change the collation sequence of the index in the table, which VFP creates for the Auto-complete feature. That means that all the Czech signs like "Š", "R" will be put at the end of the ordered list of saved entries, instead of having them appearing in the "orderly" flow of the alphabet.

Rotating labels, lines and shapes:
This is a pretty cool feature, by the way. Have you ever needed to have your label positioned vertically? I am sure you have. Now you have a nice possibility to use the Rotation property. You can just specify it in degrees. You can rotate lines and shapes as well. - Wondering about the dark side? - Here they are: You can not rotate lines and shapes if they are not defined by PolyPoints, you only can rotate True Type fonts and they can not be underlined, crossed out, or any kind of this stuff. If you use "\<" for underlining a Hot Key, it will be lost when you rotate it. Since this is actually already described in the help file, it will probably be a feature.

Unleash The Power Of The Task Pane

The Task Pane Manager was introduced in Visual FoxPro 8.0. This tool can be used as the "Control Center" for all application development. In this session Toni Feltman investigated all of the built in features of the Task Pane Manager. These features alone can shave hours off of your development. In addition, Toni Feltman looked at several ways that the Task Pane Manager can be extended and customized to fit to your development style and tool set.

Under the motto "First Things First" Toni described her way to configure the Task Pane Manager. In the Options dialog (Options > Task Pane Manager > General) she sets the value of "Check for New Internet Content" to Never. The default is "Every time you start the Task Pane Manager". Each individual web based task pane has the similar options available, so set the needed frequency there. Toni found that by this setting, the Task Pane Manager appears to be much more lean and fit.

As can be seen by a brief look at the Task Pane Manager options, there are many ways to configure the existing Task Panes and even create your own ones. Before considering that, a careful look should be take at the existing Task Panes, where a lot of very valuable things can be found:

  • Start
    The Start pane is a general-purpose pane that displays recently used files, links to new file wizards, and general-purpose announcements.
  • Community
    The community task pane is the place where you can visit all of the different web sites related to Visual FoxPro.
  • Environment Manager
    Its purpose is to configure Visual FoxPro in different ways for different projects the developer is working on.
  • Solution Samples
    The Solutions Samples task pane is a way to get at the sample code that is located in the Sample folder.
  • XML Web Services
    The XML Web Services task pane allows to register, publish and manage web services.
  • Data Explorer
    This pane is new Visual FoxPro 9.0. It is very useful when dealing with data sources other than native Visual FoxPro tables and views.
  • Filer and Minesweeper
    The Filer and Minesweeper task panes are available for developer enjoyment and as coding examples.

The source code of these panes (and other tools as well) can be found by expanding xsource.zip, which is found in the folder Tools\sources in Visual FoxPro's home directory.

Toni then explained the Pane Types: Web Page, HTML, XML, VFP Controls. When viewing the details of a Task Pane, you have the option to view the information by Content or by Files. Toni explained what you can do with these options.

Finally Toni showed how to create your own New Task Pane. She demonstrated the capabilities of this feature by some of her favorite Task Panes:

  • The Weather Station: It tells the local weather forecast.
  • Developer Tools: It provides shortcuts to the most frequently used developer tools.

As usual Toni gave a very clear description on how to make you own Task Panes and provided also the required details and source code.

Vendor sessions

There have been altogether 7 vendor sessions. Here is a short list with links:

  • XFRX - Export VFP reports to electronic formats - by Martin Haluza
  • Visual FoxExpress - Complete OOP Framework for Visual FoxPro - by Mike Feltman
  • Visual Extend - RAD Tool for Fat Client Applications with Visual FoxPro - by Uwe Habermann and Venelina Jordanova
    Having fun with VFP and VFX - by Rainer Becker
  • ReFox - Decompiler and Brander for Visual FoxPro - by Jan Brebera
  • QFoks - a library with more than 500 useful software tools (in Czech language only) - by Jirí Becka
  • Stonefield Query: - The Next Generation of Reporting - by Martin Haluza

 

Farewell

The DevCon ended at lunchtime and everybody went home.

Thank you for reading so far!

Words Of Thanks

Now we are at the end of our report. Really? Well not exactly, some very important items are still uncovered. As in the last years we, the reporters, have had the honor to write this report. We are very grateful for that.

Though nobody authorized us to do so, we think that we do not speak only for ourselves, but also for all attendees including the speakers and everybody else:

We want to extend our thanks to the people and to the management of Daquas: you have done an excellent job, carefully preparing and arranging this beautiful event. We thank you for your ever present attention, for your care for even the smallest details, for your endless friendliness and your seemingly inexhaustible wits, which you invested into all the big and small things, which made this an unforgettable event.

You won our hearts and our affection!

Closing Words and Acknowledgements.

This has been the report about this year's DevCon in Prague. Including the speakers more than 450 people attended this DevCon (452 to be exact). Daquas' record of this year: 35 attendees have been coming from abroad (18 last year). This DevCon it lasted for 2 1/2 days. There have been 19 Czech speaking and 7 English speaking speakers; 1 Key Note plus 38 Sessions (plus 3 repeat sessions), out of which 17 were held in English (close to 50 % of the session were held in English), the sessions included 7 vendor sessions, out of which 3 were held in English, and an unknown number of parties (exact number not known as nobody cared to report duly).

We took the information for Day Zero from the various internet sites, cited in there, including all pictures and trademarks. All trademarks are property of their respective owners.

At the end Jan Vit and Jan Krŕl and myself want to extend our thanks to everybody who helped us preparing this report:

  • Quite a few people supported us by supplying with their material and in many other ways in writing this report. Thank you all!
  • Besides my wife, Gaby, who did the majority of the photos, Steven Black, Toni Feltman and - guess who? - the friendly people from Daquas supplied us with photos, so finally we had about 700 to select from. Thank you all!
  • Igor Vit - his persistence, creativity and never ending friendliness helped a great deal. Thank you, Igor!
  • Darina Vodrážková - her ability to keep lots of open ends in her hand without losing control and her smile held the organization together. Thank you, Darina!
  • Michel Fournier - he enabled UT, he invented this type of reporting and, above all, showed remarkable patience with us because we constantly missed the deadlines. Thank you, Michel!

 
Hans-Otto Lochmann, Dr. Lochmann Consulting Gmbh 
In the early 1970-s I spend my first professional years writing software for process control systems, using assembler and FORTRAN. I got my first PC in 1980 and bought dBase II. A couple of projects later dBase III Plus annoyed me with its "abnormalities" (nice word). In 1989 someone pointed me to FoxPro, which since then is my favorite development tool. Since January 1993 I am a member of the German user group. The people who take care of FoxPro have my deepest admiration, because they always have been able to place VFP at the top of the trade and they seem to be determined to keep it that way. Besides VFP I also use VB/VBA and Office Automation in my projects. Today I earn my living as partner of a very successful recruitment organization in Germany (http://www.baumann-ag.com).

 
Jan Vít, Vitsoft 
Jan Vít is a student of the University Of Economics in Prague. Since 1993 he has been actively interested in programming as well as other areas of information technology. His computer experience started with PC 80386 with FoxPro 1.02, later followed by higher versions for the DOS platform and since 1999 he has been using the newest Visual FoxPro versions together with other programming languages and tools. Presently he spends most of his time with Visual FoxPro 9.0, MS SQL Server and C# in WinForms as well as WebForms development. He has been a regular speaker on the Czech Visual FoxPro DevCons since 2004 and is also the co-author of many DevCon conference reports from Prague and Germany. His work now mainly consists of developing software for pharmacies.

 
Jan Kral 
My name is Jan Kral and I am studying Third Faculty of Medicine, Charles University in Prague. I am interested in computer technology and medical science. In my free time I develop applications using Visual FoxPro 7,8 and nowadays I use VFP 9.0, all mostly for my personal use. I have been a co-author of several Czech VFP DevCons' UT reports. I also develop internet web pages using PHP, JavaScript, CSS and so on. Feel free contact me at my email.



Copyright © 1993-2008, Level Extreme Inc., All Rights Reserved
62 Rue Doucet, Petit-Rocher, New Brunswick, E8J 1L3
Telephone: 1-506-783-9007 Email: mfournier@levelextreme.com