====================================== FoxPro Developers Network of San Diego ====================================== FoxDev TipsLetter #00-11 October 31, 2000 Website: Editor: ---------------------------------------------------------------------- CONTENTS: * Calendar * Tech Tips: The Definition Of This... Stephen Settimi Where Do I Find...? * Other Stuff: Elections Are Here! "Emergent" Systems Development Dan Covill Consultants On Demand Barbara Peisch What Is Visual FoxPro? Author Unknown W2K Is a Virus? Jose Alicante What's An Alitum? * Administrivia ====================================================================== CALENDAR: We alternate meetings between Escondido and Sorrento Mesa. All meetings are at 7:00 pm. ****************************************************** *** NOTE: NEW LOCATION FOR SORRENTO MESA MEETINGS! *** ****************************************************** Nov 1 - Escondido ----------------- Board member Art Bergquist will show us how to use dynamic controls in a grid. ** We will be raffling off a new copy of SQL2000, courtesy of Board member Nick Nikula. Dec 6 - Spaghetti Factory - San Marcos -------------------------------------- 7:00pm. Our annual holiday dinner party. We've decided to alternate locations for the party as well as our meetings. Since the last 2 years have been in Mission Valley, we're partying in North County this year. This traditional get together is a great chance to hob nob with other members, and dinner is free for all paid members! Spouses are welcome, but must pay for their own meal. The Spaghetti Factory is at 111 N. Twin Oaks Valley Rd. There's a Twin Oaks Valley Rd. exit off of route 78. After you exit, head north. Jan 3 - Sorrento Mesa --------------------- Eric Lendvai will demonstrate how to debug code using VFP COM objects running under ASP. Feb 7 - Escondido ----------------- Nick Nikula will show us how to use Remote Automation Server running in asynchronous mode. March - Sorrento Mesa --------------------- Barbara Peisch will discuss some of the basics of using views, the limitations of the view designer, how to build views in code, and the advantages of keeping views in a separate DBC. April - Escondido ----------------- Dan Covill will show us how to create an audit trail using XML. -------------------------------------------------------------------- Escondido meetings are at Bergelectric, 2222 Meyers Avenue. Take the Nordahl exit from Highway 78 (west of I-15). Head South. Right on Meyers Ave, first right past Mission. It's a one-story building on the right (there's no sign). Sorrento Mesa meetings are at Alitum at 10509 Vista Sorrento Parkway. From the south: Take 805 to the Mira Mesa Blvd. exit and continue straight at the light. The exit ramp becomes Sorrento Vista Parkway. From the north: Take 805 to the Mira Mesa Blvd. exit. Turn left (up the hill). Left again at the first light onto Vista Sorrento Parkway. Alitum's office is just before you reach Lusk Blvd, on the 2nd floor. ====================================================================== TIPS ====================================================================== THE DEFINITION OF THIS... by Stephen Settimi Here's an interesting variance in the way code works.. or doesn't work, depending on the object in play and the coding style. In the InteractiveChange of a listbox the first two code samples will work: 1. thisform.Addproperty('cEmployeeName',this.ListItem(this.ListIndex,1)) thisform.Addproperty('cSSN',this.ListItem(this.ListIndex,2)) thisform.Addproperty('iId',Int(val(this.ListItem(this.ListIndex,3)))) 2. with this .Addproperty('cEmployeeName',this.ListItem(this.ListIndex,1)) .Addproperty('cSSN',this.ListItem(this.ListIndex,2)) .Addproperty('iId',Int(val(this.ListItem(this.ListIndex,3)))) endwith The following code will NOT work: 3. with thisform .Addproperty('cEmployeeName',this.ListItem(this.ListIndex,1)) .Addproperty('cSSN',this.ListItem(this.ListIndex,2)) .Addproperty('iId',Int(val(this.ListItem(this.ListIndex,3)))) endwith It doesn't throw an error, it just doesn't retain the new properties/values. Stepping through it in the debugger you can see the properties being added to the form Some discussion via e-mail: Q. Does the problem have to do with what ".this" means in the different examples? Used in a parameter expression, it can't very well mean the object that will be created, can it? In which case it means whatever object you had selected when the statement was issued. [DC] A. It's almost like the property values of the listbox aren't in scope while inside a WITH ...ENDWITH of another object, The object being addressed in the case that doesn't work is the form but while in the current object (listbox) it does! [SS] Comment: [It's pretty clear that the first case has a nice, clean separation between the meaning of thisform and this. The second case ("with this") is still unambiguous because the with doesn't change the meaning of the "this." inside each statement. It looks to me like it does something different, though, because it would add the properties to the object rather than to the form. I'm guessing that the third case gets into trouble because the "with thisform" somehow changes what "this." means. But I'm a long ways from clear on just how or why! DC] [I'm guessing also. SS] [OK, does anybody KNOW why two work and one doesn't? DC] ---------------------------------------------------------------------- WHERE CAN I FIND...? A (semi) permanent list of places to look for technical help when you get blind-sided by the latest urgent requirement. We don't give specific URLs for MSDN articles because (a) they're too long and (b) they change too often! ------------------------------- MSDN ON LINE: There's a ton of stuff here, look at the Magazines tab, and read some of the regular columns. MSDN Library Look in Technical Articles | Visual Studio | Visual FoxPro 3-Tier Apps: MSDN Library: "Building Three-Tier Client/Server Applications with Visual FoxPro" ADO MSDN Library: ADO Jumpstart for Microsoft Visual FoxPro Developers John V. Petersen, April 1999 DNA (Distributed interNet Architecture): MSDN On-line: "Top Windows DNA Performance Mistakes and How to Prevent Them" MTS: Microsoft Transaction Server MSDN Library: "Microsoft Transaction Server for Visual FoxPro Developers" ODBC: MSDN Library: "Using Visual FoxPro to Access Remote Data" VS Installer: MSDN Library: a. "Using Visual Studio Installer for VFP 6.0 Applications" b. "VFP 6.0 and VS Installer Tutorial" Windows General XML - What's New in XML for Microsoft Windows 2000 [Contributions solicited. DC] ====================================================================== OTHER STUFF ====================================================================== ELECTIONS ARE HERE! The November meeting will include our annual election. It is my understanding that all current board members are willing to be re-elected and that there are no other candidates. If that remains the case, we'll be re-elected and it will be all your fault! ---------------------------------------------------------------------- "EMERGENT" SYSTEMS DEVELOPMENT by Dan Covill This is a summary of the article "Growing Systems in Emergent Organizations", in Communications of the ACM, August 1999, Vol 42, No. 3, pages 117-123, by Truex, Baskerville, and Klein. The theme of the article is that systems development should "emerge" from its traditional goals of careful design, low maintenance, and long life spans and adopt a paradigm better suited to the dynamics of modern organizations. Traditional Goals: The traditional IS goals are held to be unsuitable to the requirements of today's dynamic organizational environment. 1. Formal analysis and design. Lengthy analysis is a poor investment; the problem will change before you can complete the analysis. 2. User satisfaction. User satisfaction is improbable; their needs will change. 3. Abstract requirements, transcending day-to-day variability. Abstract requirements are largely imaginary; they are little more than a history lesson and useless in predicting the future. 4. Complete specifications. Complete specifications are ineffectual; they increase the front-end expense and the cost of modifications. 5. Rigorous planning of new projects. New projects denote failure; systems that evolve continuously do not need complete replacement. Revised Goals for Emergent Organizations: The authors propose that "Systems should be under constant development, can never be fully specified, and are subject to constant adjustment and adaptation." 1. "Always" analysis. Analysis activities are an ongoing service of the IS group, in parallel with system operation. Analysis is not a component of a project, but an ongoing activity. 2. Dynamic requirements negotiation. Requirements become a negotiated outcome of the changing charactistics of the business processes. 3. Incomplete and "usefully ambiguous" specifications. Because requirements are in motion, specifications must be open-ended and easily modified. 4. Continuous redevelopment. Preserve existing applications by continuously enhancing them to match organizational requirements. The goal is to prevent obsolescence, and thereby eliminate new development projects. 5. Adaptability orientation. Ease of modification must be deeply embedded in every system. The distinction between development and maintenance disappears. ---------------------------------------------------------------------- CONSULTANTS ON DEMAND by Barbara Peisch There is a web site called www.consultants-on-demand.com which is something like an on-line job shop. You register with them and tell them your skills, and they connect you with available jobs. ---------------------------------------------------------------------- WHAT IS VISUAL FOXPRO? (Author unknown) Visual Foxpro is a dynamic object oriented language that supports multiple class libraries, with a class browser. It provides programmable dynamic (run-time) subclassing, and data dictionary capabilities. Microsoft Corporation released Visual Foxpro (3.0) in September 1995, shortly after the introduction of Windows 95. Similar to Visual Basic, Visual Foxpro (VFP) is a RAD tool that uses ActiveX visual components, and interoperates through OLE automation or by creating COM servers. VFP can also subclass ActiveX components and COM automation objects. Like Smalltalk, Visual Foxpro operates on dynamic inheritance. It instantiates classes from a library or from base classes. It can also modify and save classes - including contained objects into the class library at run time. VFP Wizards provide UML re-engineering and code generation with Rational Rose and Microsoft Visual Modeler. There are three major versions of Visual Foxpro: the original VFP 3.0, released in 1995, runs on 32-bit and 16-bit versions (WfW, 3.1, 3.1.1) as well as the Macintosh, but does not provide complete ANS SQL or COM server building capabilities. VFP 5.0, first released in September 1996, and the current VFP 6.0 are considerably enhanced and run exclusively on 32-bit Windows operating systems. Visual Foxpro is one of several OO 4GLs, languages that combine OOP and inheritance with native SQL and other relational database capabilities. These languages tend to treat simple variables, object properties, and table fields similarly, allowing operations that include all three. In addition to VFP, three languages: Visual dBase, Alpha 5 Pro, and Visual Objects were also "xBase" languages, meaning they evolved from dBase II/III. Visual dBase 7, from Borland International, now an object oriented language is the direct descendant of dBase. Visual dBase provides some interesting Java-like OO extensions such as string classes and methods. Alpha 5 Pro from Alpha Software is based on a xBase variant called "xbasic." Visual Objects, which evolved from Clipper, was the first xBase language to include object extensions. However, Centura, originally SQL Windows, was the first 4GL on Windows and now has OO extensions. Finally, PL/SQL from Oracle Corporation for Oracle 7 and Oracle 8 is also an OO 4GL. It is not based on xBase, and is a server language rather than a Windows client, but does provide both native SQL as well as classes and objects. VFP and other Windows clients interoperate with PL/SQL through ODBC and OLE Objects for Oracle (OO4O). [Stephen Wolfe found this "somewhere on the web" while searching for OCX tools, and posted it to the ProFox forum. It's a bit out of date, but it's still a good summary of just what VFP is and its relationship to other languages. DC] ---------------------------------------------------------------------- W2K IS A VIRUS Jose Luis Alicante I'm reasons to think W2K are a Virus. Netscape has a navigatore, MS make IE Quiken has a PIM, MS make (buy) Outlook Fox Software has a dbase compatible software, MS make (buy) Foxpro Borland and other have CORBA, MS make OLE 1.0, OLE 2.0, COM, DCOM, COM+ Oracle has Oracle DB, MS make (buy) Sql Server Mac have Mac OS, MS make Windows Some enterprise have Game, MS have (buy) AOE II (GOOD BUY !!!) ... Some people make viruses, MS have W2k and W Me. Jos‚ Luis Alicante - Espa¤a [Found on the ProFox listserve] ---------------------------------------------------------------------- ALITUM Solutions Consulting Group is now Alitum, and have moved their office to 10509 Vista Sorrento Parkway. They remain the host for our Sorrento Mesa meetings. --------------------------Administrivia------------------------------- This newsletter is a service to members of the FoxPro Developers Network of San Diego (FPDN). The editor (Dan Covill) is solely responsible for the content, Barbara Peisch does the distribution. E-mail the editor YOUR tips, comments, complaints, and rebuttals. Editor: Dan Covill 858-272-2448 dcovill@acm.org Board of Directors: Eric Lendvai - President 760-734-4929 eric@elsoftware.com Art Bergquist - Vice Pres 760-740-0428 abergquis@cs.com Claude Nikula - Secretary 619-615-6318 nikula@worldnet.att.net Barbara Peisch - Treasurer 760-729-9607 barbara@peisch.com Dan Covill - Director 858-272-2448 dcovill@acm.org Thad V'Soske - Director 619-544-9900 tvsoske@hanoverdirect.com ----------------------------------------------------------------------