Friday, November 7
by Hans-Otto Lochmann and Armin Neudert
Track .NET
Today the .NET track that started yesterday continued with six more sessions.
Track .NET: An ASP.NET Web Shop for free - experiences from the development of the upcoming dFPUG web shop
Norbert Abb, one of the owners of Wizards & Builders GmbH, showed a web shop application and explained its development using the upcoming dFPUG web shop as an example. The application is based on ASP.NET. He not only talked about the design and implementation, he also provided detailed information about deployment and maintenance issues.
Norbert pointed out, that we not necessarily need Visual Studio .NET in order to develop an ASP.NET application, since Microsoft also supplies a free tool called WebMatrix. So the web shop application Norbert was going to show can be customized with a free tool, but furthermore it is also based on source code that is available freely. The sample web shop application is called IBuySpy, which you can download from the Internet.
The data for IBuySpy is originally for MSDE or SQL Server, but Norbert showed that you can also use a VFP database for the shop. Actually, the dFPUG shop works with VFP data. The source and the VFP data for the IBuySpy sample can be downloaded from the conference website so you don’t need MSDE or SQL Server. You can stick with VFP.
Norbert also showed us a possibility to get demo web space for ASP.NET pages with access to SQL Server for free from Microsoft on www.webmatrixhosting.net. That was something many people did not know before!
Track .NET: Mere Mortals .NET Framework
In this session, Kevin McNeish demonstrated the new capabilities of MM .NET version 1.1. He demonstrated how the framework is a RAD tool for building .NET Windows Forms, Web Forms, and Web Service applications.
MM .NET "fixes" data binding in .NET allowing you to bind user interface controls to data by simply setting a few properties (similar to Visual FoxPro). This eliminates the need to write many lines of .NET data binding logic.
Kevin also demonstrated MM .NET's enhanced user security features in both Windows Forms and Web Forms that make it easy for end users to easily configure application security for users and roles.
MM .NET is integrated into the Visual Studio .NET IDE providing a helping hand when first creating applications all the way through the entire development process.
The Framework provides business object base classes that allow you to easily create n-tier applications in .NET. Kevin explained that MM .NET also comes with source code so you can see what's going on behind the scenes and customize the framework to suit your needs.
Practical Uses of the Windows API
Marcia Akins was the first attendee (not counting speakers) from the USA at the Frankfurt conference in 1998!
She and her husband Andy Kramek (whom we are all missing this year) have only missed one conference since then and attended all the others, but of course as speakers.
This session’s goal was to introduce Windows API programming to Visual FoxPro developers. Marcia began by reviewing what the Windows API is. She pointed out that there are many VFP examples available that are showing how to call a certain API function. But there are a lot more Visual Basic and, of course, further more samples written in C available. Marcia explained to the audience, how the samples not written in VFP can be translated to our beloved Visual FoxPro code. She provided a very clear explanation on how to convert data types and how to deal with structures, which obviously is one of the hardest parts when doing API calls from Visual FoxPro. Marcia mentioned Christof Lange’s Struct class as a great help when using structures. Www.news2news.com, the UniversalThread API section and the FoxWiki are good places providing samples for VFP developers that want to use the Windows API, she pointed out.
Then Marcia presented several practical examples using Windows API functions to do things that cannot be accomplished using native Visual FoxPro commands. These examples included code to read the Windows Registry and to retrieve user settings from the Control Panel, code to ensure that the screen is really locked when we must manipulate the appearance of ActiveX controls in our VFP forms, and much more.
At the end of this session, everyone knew how Window API functions can be coded in Visual FoxPro, what the common pitfalls are and where to find samples. The use of samples is usually the easier way to get API calls up and running, especially when it comes to more complicated API calls.
As always it was fun to listen to Marcia speaking!
VFP Grid Techniques
Who ever listened to a session of Drew Speedie knows two things: He speaks loud, fast, clear and audible. And Drew has everything in one box: His famous Grid-Box, in which he puts a wealth of knowledge, Know-How and information.
He is also one of the pillars of the Fox community: He is a VFP Developer, Consultant, Trainer, Chief Software Architect of the Visual MaxFrame Professional framework, Contributing Editor to the FoxPro Advisor Magazine and eventually Technical Editor.
Today he presented a new chapter of a never-ending story: how to convince the touchy beast of Grid to do what you want and not what it wants. Among the many examples he presented (all source code is on the conference CD), have been
- How to add a 2-Column DropDown to a Column.
- How to augment LockColumns: Header, Picture and Column.BackColor.
- How to change the order of columns, including the object dropdown.
- How to combine current row highlight colors with Dynamic Colors.
- How to prevent mouse-selection in a ReadOnly cell.
- How to render rows and cells respectively, which are conditionally ReadOnly.
- How to set complex DynamicCurrentControl in a custom method.
- How to suppress interactive LockColumns assignment.
Workarounds: What to do when ...
- AllowCellSelection = .F. grid allows mouse-clicking into custom column control.
- Black HighlightForeColor is ignored.
- Cannot set Name for member class.
- Current row highlight ignored for Column.Sparse = .F.
- Enforce validation of data.
- Grid.When()=.F./Grid.Enabled=.F. ignored when grid.AllowCellSelection = .F.
- Leftward keyboard navigation from first column shifts columns.
- RETURNing .F. from Control.Valid() doesn’t prevent cell from losing focus.
- Rightward keyboard navigation shifts columns.
- .SCX-based forms won’t load when ControlSources set in Properties Sheet.
Design Patterns - practical use for the nice sounding theory
In this session Marcus Alt started off with a small introduction of Design Pattern history and explained what design patterns are and from where you can get further information. Afterwards he went through different examples of easy to code patterns and showed the idea behind them as well as the according code. He although gave ideas of where to use the patterns in real world applications.
Starting with a BINDEVENTS implementation of the subject-observer pattern, Marcus went through the following patterns:
- Strategy
- The Template pattern which can be used while coding the strategy
- The Abstract Factory that is used to instantiate Strategy objects
- The hook pattern
Many examples helped attendees to get a feeling of what design patterns are and for being interested to keep up with the topic in the future.
Track Microsoft SQL Server
And here’s another track, which was introduced last year. Speakers are Dan Jurden (four sessions in this track), Daniel LeClair (also four sessions) and Venelina Jordanova (one session). This year, the track consists of nine different sessions in total and covers several interesting topics like an introduction to SQL Distributed Management Objects, the Data Transformation Services (DTS), SQL Server’s XML features, User Defined Functions, DMO, the sessions covered below and several more. This track completely consists of English sessions. It’s always a pity that we cannot be in and write about every session, to cover all of the interesting topics.
Track SQL Server: Beyond SELECT: Advanced Queries for SQL Server
Daniel LeClair, an independent consultant, covered a whole lot of things we can do with SQL Server’s built in programming language T-SQL. He first explained the difference between the way data can be retrieved and manipulated in T-SQL. He pointed out that this works quite similar like we are used to with Visual FoxPro in some places, but that there is a main difference: In T-SQL you are mainly working with "sets" of data in contrast to VFP, where we are more used to access single rows of data. Daniel pointed out that he is mainly showing us things that are not only applicable to SQL Server 2000, but also to SQL Server 7, so that people still using the older version will have a benefit of his session, whereas some things are limited to MSSQL 2000.
Daniel explained and presented interesting things like the use of dynamic SQL statements, using system tables in queries, using temporary tables and cursors, and other T-SQL capabilities beyond just getting back a result set. Using Cursors, Dynamic SQL Statements, UDFs, the Table Variable Type, CASE statements, Derived tables were covered as well.
Track SQL Server: Extending T-SQL with COM
First, Dan Jurdan, working as a Senior Application Developer for EPS-Software Corp, explained that T-SQL (SQL Server’s built in programming language) has strong limitations when it comes to more complex tasks that are not directly related to data access. Many people have faced this problem (note from the reporter: you can count me to them, as well). However, it is possible to use COM objects, like we can create them with Visual FoxPro, in T-SQL to extend the functionality, Dan pointed out.
He went on, explaining all Stored Procedures that are provided by SQL Server in order to access COM servers and showing us, what the T-SQL code using these SPs looks like:
- sp_OACreate
- sp_OASetProperty
- sp_OAGetProperty
- sp_OAMethod
- sp_OADestroy
- sp_OAGetErrorInfo
- sp_OAStop
At the end of his session, Dan outlined that we should be careful using COM server calls e.g. on a high volume Web server, since using this technology can cause a considerable performance problem. On the other hand, he told us, using COM servers might come in quite handy, when using them on a server that is not that busy all the time, and not too many users are working with.
And another note from the reporter: YAG announced a great new possibility to extend T-SQL in a seamless way with the upcoming new versions of VS.NET and SQL Server. We will then be able to create Stored Procedures with any language included in VS.NET!
The Class of '94
Ever met the Class of '94? Never? Well, you should have attended this conference. Due to a carefully designed and well-coded application the team of the dFPUG was in the position to identify the Class of '94. Who are the members of this class? Rainer proudly presents "his" Class of '94, the persons who have been attending the German DevCon for 10 consecutive years in a row: They are:
- Norbert Abb
- Alfred Bechtel
- Alf Borrmann
- Martin Dubovy
- Sebastian Flucke
- Peter Krause
- Wilfried Laßat
- Hans-Otto Lochmann
- Elfrun Scheel
- Hanno Ritzerfeld
- Kai Rogler
- Eugen Wirsing
- Jürgen Wondzinski
Three of them (Jürgen Wondzinski, Sebastian Flucke, and Norbert Abb) have also been speakers in all of these DevCons and one of them (Eugen Wirsing) develop himself from a simple attendee into a well esteemed speaker.
The closing session
Well, this is the last session of this year's Frankfurt Conference. Rainer Becker told us that everything went so smoothly this year that he sometimes thought he was unemployed (big laughter in the audience!). Of course, he was busy enough, just not the whole day and longer - only the whole day. He thanked the audience for coming and told the usual stories about how he finally convinced the "chef de cuisine" of the hotel to offer Hamburgers during at least one break. You have to know that the food here is really amazing! You can see some photos of the buffet using the picture archive of this coverage.
As an outlook for next year’s conference, Rainer mentioned that we would have a new track about the "Report Writer". Please see our report of the Europa keynote, so you can see that we will get so many enhancements so that you really can do a whole track to cover all of them.
Then we got to the usual raffle. All people that filled in evaluation forms now can win a price. Like in every year before, Rainer gave away prices like a Visual MaxFrame Professional package sponsored by Vision Data Solutions handed over by Drew Speedie, a List&Label Report Writer package sponsored by ProLib, two signed Megafox Books and two packages of Visual Extend sponsored by the dFPUG itself and more.
Acknowledgements.
Ever wondered, why certain events like this DevCon happen so successfully? Well, this is one the reason: There is a jointly pushing team behind it. Here it is the team, which always strongly, knowingly and reliable supported Rainer Becker:
- Tina Flieher-Ojen,
- Andelko Sicenica,
- Michael Vogel,
- Sven Wilke
This team virtually knew everybody and everything. It also mastered the art of omnipresece: At least one team member was always available, when there was the slighest chance that anything could go wrong. Therfore: Great thanks to this team!
And of course there was ample support from the well tried, reliable, and experienced proof reader Brent Speedie (11), who helped to make the wording of this report to become "real English".
The pictures of Frankfurt were take from
http://www.meinestadt.de/frankfurt-am-main and
http://www.cometome.de/frankfurt. All others were taken by Gaby L. and some "helping hands".