68
Visual FoxPro™ Seminar Presented by Presented by Jim Booth Jim Booth Email: [email protected] Email: [email protected] In cooperation with Rainer Becker In cooperation with Rainer Becker and the German FoxPro User’s Group and the German FoxPro User’s Group (dFPUG) (dFPUG) Visual FoxPro Visual FoxPro 6.0 6.0 Seminar Seminar

Visual FoxPro™ Seminar Presented by Jim Booth Email: [email protected] In cooperation with Rainer Becker and the German FoxPro User’s Group (dFPUG)

  • View
    226

  • Download
    5

Embed Size (px)

Citation preview

Page 1: Visual FoxPro™ Seminar Presented by Jim Booth Email: jbooth@jamesbooth.com In cooperation with Rainer Becker and the German FoxPro User’s Group (dFPUG)

Visual FoxPro™ Seminar

Presented byPresented by

Jim BoothJim BoothEmail: [email protected]: [email protected]

In cooperation with Rainer Becker and the In cooperation with Rainer Becker and the German FoxPro User’s Group (dFPUG)German FoxPro User’s Group (dFPUG)

Visual FoxPro 6.0Visual FoxPro 6.0SeminarSeminar

Page 2: Visual FoxPro™ Seminar Presented by Jim Booth Email: jbooth@jamesbooth.com In cooperation with Rainer Becker and the German FoxPro User’s Group (dFPUG)

Visual FoxPro™ Seminar

General Issues Related to General Issues Related to DevelopmentDevelopment

Understanding the costsUnderstanding the costs Lowering the costsLowering the costs

The Value of Conventions and The Value of Conventions and StandardsStandards

The Value of Object Oriented The Value of Object Oriented DesignDesign

The Development CycleThe Development Cycle Managing RisksManaging Risks

Page 3: Visual FoxPro™ Seminar Presented by Jim Booth Email: jbooth@jamesbooth.com In cooperation with Rainer Becker and the German FoxPro User’s Group (dFPUG)

Visual FoxPro™ Seminar

Database DesignDatabase Design

Characteristics of a “Relational Characteristics of a “Relational Database Management System”Database Management System”

Normalization of Data DesignNormalization of Data Design

Page 4: Visual FoxPro™ Seminar Presented by Jim Booth Email: jbooth@jamesbooth.com In cooperation with Rainer Becker and the German FoxPro User’s Group (dFPUG)

Visual FoxPro™ Seminar

NormalizationNormalization

Page 5: Visual FoxPro™ Seminar Presented by Jim Booth Email: jbooth@jamesbooth.com In cooperation with Rainer Becker and the German FoxPro User’s Group (dFPUG)

Visual FoxPro™ Seminar

Why bother with Why bother with NormalizationNormalization

Reduce the possibility of data Reduce the possibility of data inconsistenciesinconsistencies

Reduce the space required for Reduce the space required for storing datastoring data

Reduce possible update and Reduce possible update and delete anomaliesdelete anomalies

Increase the stability of the data Increase the stability of the data designdesign

Page 6: Visual FoxPro™ Seminar Presented by Jim Booth Email: jbooth@jamesbooth.com In cooperation with Rainer Becker and the German FoxPro User’s Group (dFPUG)

Visual FoxPro™ Seminar

First Normal FormFirst Normal Form

Reduce entities to firstReduce entities to first normal form (1NF) by normal form (1NF) by removing repeating or removing repeating or multi-valued attributes multi-valued attributes to another, child, entity.to another, child, entity.

Page 7: Visual FoxPro™ Seminar Presented by Jim Booth Email: jbooth@jamesbooth.com In cooperation with Rainer Becker and the German FoxPro User’s Group (dFPUG)

Visual FoxPro™ Seminar

First Customer PassFirst Customer Pass

Customer #

Customers

Company NameAddressContact 1Contact 2Phone 1Phone 2

Page 8: Visual FoxPro™ Seminar Presented by Jim Booth Email: jbooth@jamesbooth.com In cooperation with Rainer Becker and the German FoxPro User’s Group (dFPUG)

Visual FoxPro™ Seminar

Company NameAddressContact 1Contact 2Phone 1Phone 2

Removing the Removing the

Repeating GroupsRepeating Groups Contacts

Phones

Customer #Contact #

NameAddressPhone Code

Customer #Phone Code

Area CodePhone Number

Customer #

Customers

Page 9: Visual FoxPro™ Seminar Presented by Jim Booth Email: jbooth@jamesbooth.com In cooperation with Rainer Becker and the German FoxPro User’s Group (dFPUG)

Visual FoxPro™ Seminar

2nd Normal Form2nd Normal Form

Reduce 1NF entities to second normal form (2NF) by removing attributes that are not dependent on the whole primary key.

Page 10: Visual FoxPro™ Seminar Presented by Jim Booth Email: jbooth@jamesbooth.com In cooperation with Rainer Becker and the German FoxPro User’s Group (dFPUG)

Visual FoxPro™ Seminar

Invoice Line Item FileInvoice Line Item File

Invoice NumberInvoice Number

Line NumberLine Number

Customer IDCustomer ID

Product IDProduct ID

Page 11: Visual FoxPro™ Seminar Presented by Jim Booth Email: jbooth@jamesbooth.com In cooperation with Rainer Becker and the German FoxPro User’s Group (dFPUG)

Visual FoxPro™ Seminar

Remove the Non-Remove the Non-Dependent FieldsDependent Fields

Customer ID

Line Item

Invoice

Page 12: Visual FoxPro™ Seminar Presented by Jim Booth Email: jbooth@jamesbooth.com In cooperation with Rainer Becker and the German FoxPro User’s Group (dFPUG)

Visual FoxPro™ Seminar

3rd Normal Form3rd Normal Form

Reduce 2NF entities to third normal form (3NF) by removing attributes that depend on other, non-key attributes (other than alternate keys).

Page 13: Visual FoxPro™ Seminar Presented by Jim Booth Email: jbooth@jamesbooth.com In cooperation with Rainer Becker and the German FoxPro User’s Group (dFPUG)

Visual FoxPro™ Seminar

Purchase OrderPurchase Order

Order NumberOrder Number

Vendor IDVendor ID

Vendor CityVendor City

Page 14: Visual FoxPro™ Seminar Presented by Jim Booth Email: jbooth@jamesbooth.com In cooperation with Rainer Becker and the German FoxPro User’s Group (dFPUG)

Visual FoxPro™ Seminar

Purchase Order

Vendor

Remove Fields Remove Fields Depending on Non-key Depending on Non-key

attributesattributes

Vendor City

Page 15: Visual FoxPro™ Seminar Presented by Jim Booth Email: jbooth@jamesbooth.com In cooperation with Rainer Becker and the German FoxPro User’s Group (dFPUG)

Visual FoxPro™ Seminar

Boyce/Codd Normal Boyce/Codd Normal FormForm

Reduce 3NF entities to Boyce/Codd normal form (BCNF) by ensuring that they are in 3NF for any feasible choice of candidate key as primary key.

Page 16: Visual FoxPro™ Seminar Presented by Jim Booth Email: jbooth@jamesbooth.com In cooperation with Rainer Becker and the German FoxPro User’s Group (dFPUG)

Visual FoxPro™ Seminar

EmpId

Employee Number

Clock Number

An Employee TableAn Employee Table

Page 17: Visual FoxPro™ Seminar Presented by Jim Booth Email: jbooth@jamesbooth.com In cooperation with Rainer Becker and the German FoxPro User’s Group (dFPUG)

Visual FoxPro™ Seminar

EmpId

Employee Number

Clock Number

An Employee TableAn Employee Table

Page 18: Visual FoxPro™ Seminar Presented by Jim Booth Email: jbooth@jamesbooth.com In cooperation with Rainer Becker and the German FoxPro User’s Group (dFPUG)

Visual FoxPro™ Seminar

EmpId

Employee Number

Clock Number

An Employee TableAn Employee Table

Page 19: Visual FoxPro™ Seminar Presented by Jim Booth Email: jbooth@jamesbooth.com In cooperation with Rainer Becker and the German FoxPro User’s Group (dFPUG)

Visual FoxPro™ Seminar

Fourth Normal FormFourth Normal Form

Reduce BCNF entities to Fourth normal form (4NF) by removing any independently multi-valued components of the primary key to two new parent entities.

Page 20: Visual FoxPro™ Seminar Presented by Jim Booth Email: jbooth@jamesbooth.com In cooperation with Rainer Becker and the German FoxPro User’s Group (dFPUG)

Visual FoxPro™ Seminar

Employee - Skill - Objective Employee - Skill - Objective TableTable

NameSkill - NameObjective - Text

Jones accounting more money

Jones accounting prestige

Jones public speaking more money

Jones public speaking prestige

Page 21: Visual FoxPro™ Seminar Presented by Jim Booth Email: jbooth@jamesbooth.com In cooperation with Rainer Becker and the German FoxPro User’s Group (dFPUG)

Visual FoxPro™ Seminar

Fourth Normal FormFourth Normal Form

Name

Skill - Name

Employee - Skill

Name

Objective - Text

Employee - Objective

Page 22: Visual FoxPro™ Seminar Presented by Jim Booth Email: jbooth@jamesbooth.com In cooperation with Rainer Becker and the German FoxPro User’s Group (dFPUG)

Visual FoxPro™ Seminar

Fifth Normal FormFifth Normal Form

Reduce 4NF entities to fifth normal form (5NF) by removing pair-wise cyclic dependencies (appearing within composite primary keys with three or more component attributes) to three or more new parent entities.

Page 23: Visual FoxPro™ Seminar Presented by Jim Booth Email: jbooth@jamesbooth.com In cooperation with Rainer Becker and the German FoxPro User’s Group (dFPUG)

Visual FoxPro™ Seminar

Mary Jordache JeansMary Jordache SneakersSally Jordache JeansMary Liz Claiborne BlousesSally Liz Claiborne Blouses

BuyerVendorProduct

BuyingSuppose Liz Claiborne adds jeans totheir list of products. We need to addtwo updates to our table because bothMary and Sally buy jeans and buy fromLiz Claiborne.

Retail Store BuyersRetail Store Buyers

Page 24: Visual FoxPro™ Seminar Presented by Jim Booth Email: jbooth@jamesbooth.com In cooperation with Rainer Becker and the German FoxPro User’s Group (dFPUG)

Visual FoxPro™ Seminar

Fifth Normal FormFifth Normal Form

BuyerVendor

Buy-Vend

Vendor

Vend-Prod

BuyerProduct

Buy-Prod

Product

Page 25: Visual FoxPro™ Seminar Presented by Jim Booth Email: jbooth@jamesbooth.com In cooperation with Rainer Becker and the German FoxPro User’s Group (dFPUG)

Visual FoxPro™ Seminar

DenormalizationDenormalization

NameAddressCityCountry

Postal Code

Denormalized

Postal CodeCityCountry

Postal Code

NormalizedName

Address

Postal Code

Page 26: Visual FoxPro™ Seminar Presented by Jim Booth Email: jbooth@jamesbooth.com In cooperation with Rainer Becker and the German FoxPro User’s Group (dFPUG)

Visual FoxPro™ Seminar

Want to read more?Want to read more?

Handbook of Relational Database DesignCandace C. Fleming and Barbara von Halle

Addison-Wesley Publishing CompanyISBN: 0-201-11434-8

Relational DatabaseSelected Writings

C. J. DateAddison-Wesley Publishing Company

ISBN: 0-201-14196-5

Page 27: Visual FoxPro™ Seminar Presented by Jim Booth Email: jbooth@jamesbooth.com In cooperation with Rainer Becker and the German FoxPro User’s Group (dFPUG)

Visual FoxPro™ Seminar

Visual FoxPro Database Visual FoxPro Database ContainerContainer

Data dictionaryData dictionary RelationshipsRelationships Field level domains (Field Rule)Field level domains (Field Rule) Table level domains (Table Rule)Table level domains (Table Rule) Referential IntegrityReferential Integrity Stored ProceduresStored Procedures DbGetProp() and DbSetProp()DbGetProp() and DbSetProp()

Page 28: Visual FoxPro™ Seminar Presented by Jim Booth Email: jbooth@jamesbooth.com In cooperation with Rainer Becker and the German FoxPro User’s Group (dFPUG)

Visual FoxPro™ Seminar

View DesignerView Designer

UpdateableUpdateable The Update Tab in the view The Update Tab in the view

designerdesigner

JoinsJoins InnerInner OuterOuter

Left, Right, and FullLeft, Right, and Full

Top NTop N

Page 29: Visual FoxPro™ Seminar Presented by Jim Booth Email: jbooth@jamesbooth.com In cooperation with Rainer Becker and the German FoxPro User’s Group (dFPUG)

Visual FoxPro™ Seminar

Using SQL in the Visual Using SQL in the Visual FoxPro LanguageFoxPro Language

Why use SQL at all?Why use SQL at all? The SQL Commands in Visual The SQL Commands in Visual

FoxProFoxPro SELECTSELECT UPDATEUPDATE DELETEDELETE CREATECREATE INSERT INTOINSERT INTO

Page 30: Visual FoxPro™ Seminar Presented by Jim Booth Email: jbooth@jamesbooth.com In cooperation with Rainer Becker and the German FoxPro User’s Group (dFPUG)

Visual FoxPro™ Seminar

Designing User Designing User InterfacesInterfaces

Page 31: Visual FoxPro™ Seminar Presented by Jim Booth Email: jbooth@jamesbooth.com In cooperation with Rainer Becker and the German FoxPro User’s Group (dFPUG)

Visual FoxPro™ Seminar

The User Is The User Is In ControlIn Control

Principle 1Principle 1

Page 32: Visual FoxPro™ Seminar Presented by Jim Booth Email: jbooth@jamesbooth.com In cooperation with Rainer Becker and the German FoxPro User’s Group (dFPUG)

Visual FoxPro™ Seminar

Principle 2Principle 2

Follow The Follow The Object-Action Object-Action

ParadigmParadigm

Page 33: Visual FoxPro™ Seminar Presented by Jim Booth Email: jbooth@jamesbooth.com In cooperation with Rainer Becker and the German FoxPro User’s Group (dFPUG)

Visual FoxPro™ Seminar

Be ConsistentBe Consistent

Principle 3Principle 3

Page 34: Visual FoxPro™ Seminar Presented by Jim Booth Email: jbooth@jamesbooth.com In cooperation with Rainer Becker and the German FoxPro User’s Group (dFPUG)

Visual FoxPro™ Seminar

Make ThingsMake ThingsSelf EvidentSelf Evident

Principle 4Principle 4

Page 35: Visual FoxPro™ Seminar Presented by Jim Booth Email: jbooth@jamesbooth.com In cooperation with Rainer Becker and the German FoxPro User’s Group (dFPUG)

Visual FoxPro™ Seminar

Pay Attention To Pay Attention To AestheticsAesthetics

Principle 5Principle 5

Page 36: Visual FoxPro™ Seminar Presented by Jim Booth Email: jbooth@jamesbooth.com In cooperation with Rainer Becker and the German FoxPro User’s Group (dFPUG)

Visual FoxPro™ Seminar

Give The User Give The User FeedbackFeedback

Principle 6Principle 6

Page 37: Visual FoxPro™ Seminar Presented by Jim Booth Email: jbooth@jamesbooth.com In cooperation with Rainer Becker and the German FoxPro User’s Group (dFPUG)

Visual FoxPro™ Seminar

Be ForgivingBe Forgiving

Principle 7Principle 7

Page 38: Visual FoxPro™ Seminar Presented by Jim Booth Email: jbooth@jamesbooth.com In cooperation with Rainer Becker and the German FoxPro User’s Group (dFPUG)

Visual FoxPro™ Seminar

Object Oriented Object Oriented DevelopmentDevelopment

Page 39: Visual FoxPro™ Seminar Presented by Jim Booth Email: jbooth@jamesbooth.com In cooperation with Rainer Becker and the German FoxPro User’s Group (dFPUG)

Visual FoxPro™ Seminar

OO TerminologyOO Terminology

ClassClass ObjectObject AbstractionAbstraction PolymorphismPolymorphism InheritanceInheritance MessagingMessaging ContainershipContainership

Page 40: Visual FoxPro™ Seminar Presented by Jim Booth Email: jbooth@jamesbooth.com In cooperation with Rainer Becker and the German FoxPro User’s Group (dFPUG)

Visual FoxPro™ Seminar

Analysis and Design in an Analysis and Design in an OO worldOO world

The Iterative ApproachThe Iterative Approach InceptionInception ElaborationElaboration ConstructionConstruction

Analysis, Design, Coding, Analysis, Design, Coding, Testing, Implementation, Testing, Implementation, Training, Maintenance/EvolutionTraining, Maintenance/Evolution

TransitionTransition

Page 41: Visual FoxPro™ Seminar Presented by Jim Booth Email: jbooth@jamesbooth.com In cooperation with Rainer Becker and the German FoxPro User’s Group (dFPUG)

Visual FoxPro™ Seminar

Analysis and Design in an Analysis and Design in an OO worldOO world

There is a constant looping back in There is a constant looping back in this OO development cycle.this OO development cycle.

New requirements discovered New requirements discovered during coding or implementation during coding or implementation feed back into the design phase.feed back into the design phase.

New functional requirements New functional requirements discovered alter future iterationsdiscovered alter future iterations

Page 42: Visual FoxPro™ Seminar Presented by Jim Booth Email: jbooth@jamesbooth.com In cooperation with Rainer Becker and the German FoxPro User’s Group (dFPUG)

Visual FoxPro™ Seminar

The Visual FoxPro Class The Visual FoxPro Class DesignerDesigner

Save As Class menu optionSave As Class menu option Adding properties and methods Adding properties and methods

to a classto a class Specifying an Include file for a Specifying an Include file for a

classclass Creating subclassesCreating subclasses Adding controls to the form Adding controls to the form

designer’s toolbar from your designer’s toolbar from your ClassesClasses

Page 43: Visual FoxPro™ Seminar Presented by Jim Booth Email: jbooth@jamesbooth.com In cooperation with Rainer Becker and the German FoxPro User’s Group (dFPUG)

Visual FoxPro™ Seminar

The Application FrameworkThe Application Framework

What is a framework?What is a framework? The overview of the architecture The overview of the architecture

of the frameworkof the framework Strategies for maximizing Strategies for maximizing

maintainabilitymaintainability

Page 44: Visual FoxPro™ Seminar Presented by Jim Booth Email: jbooth@jamesbooth.com In cooperation with Rainer Becker and the German FoxPro User’s Group (dFPUG)

Visual FoxPro™ Seminar

The Framework In DetailThe Framework In Detail

The Application ManagerThe Application Manager The form classThe form class The startup programThe startup program Building an application using the Building an application using the

frameworkframework The formThe form The MenuThe Menu Enhancing your frameworkEnhancing your framework

Page 45: Visual FoxPro™ Seminar Presented by Jim Booth Email: jbooth@jamesbooth.com In cooperation with Rainer Becker and the German FoxPro User’s Group (dFPUG)

Visual FoxPro™ Seminar

Form and Class DesignForm and Class Design

Coding methods in a reusable Coding methods in a reusable wayway

Using THISFORM, THIS, and the Using THISFORM, THIS, and the Parent propertyParent property

Using WITH/ENDWITHUsing WITH/ENDWITH Using collections to address the Using collections to address the

contents of a containercontents of a container

Page 46: Visual FoxPro™ Seminar Presented by Jim Booth Email: jbooth@jamesbooth.com In cooperation with Rainer Becker and the German FoxPro User’s Group (dFPUG)

Visual FoxPro™ Seminar

Simple Base ClassesSimple Base Classes

Label, Textbox, EditBox, CheckBox,Label, Textbox, EditBox, CheckBox,

Option Button, Option GroupOption Button, Option Group

Command Button, Command GroupCommand Button, Command Group

Spinner, Image, Line, Shape, TimerSpinner, Image, Line, Shape, Timer

Container, and SeparatorContainer, and Separator

Page 47: Visual FoxPro™ Seminar Presented by Jim Booth Email: jbooth@jamesbooth.com In cooperation with Rainer Becker and the German FoxPro User’s Group (dFPUG)

Visual FoxPro™ Seminar

Complex Base ClassesComplex Base Classes

ComboBox, ListBox, and GridsComboBox, ListBox, and Grids

PageFrames PageFrames

Custom, Container, and ControlCustom, Container, and Control

Form, Formset, and ToolbarForm, Formset, and Toolbar

Page 48: Visual FoxPro™ Seminar Presented by Jim Booth Email: jbooth@jamesbooth.com In cooperation with Rainer Becker and the German FoxPro User’s Group (dFPUG)

Visual FoxPro™ Seminar

Using BuildersUsing Builders

The Visual Foxpro BuildersThe Visual Foxpro Builders Make it easier to setup the complex Make it easier to setup the complex

controlscontrols

Building your own buildersBuilding your own builders Builder.dbf and Builder.appBuilder.dbf and Builder.app ASELOBJ()ASELOBJ() Using the special Builder property Using the special Builder property

of a classof a class

Page 49: Visual FoxPro™ Seminar Presented by Jim Booth Email: jbooth@jamesbooth.com In cooperation with Rainer Becker and the German FoxPro User’s Group (dFPUG)

Visual FoxPro™ Seminar

OLE Base ClassesOLE Base Classes

OLEBoundControlOLEBoundControl Bound to a General Field in a DBF Bound to a General Field in a DBF

filefile

OLEControlOLEControl Predefined contents at design time.Predefined contents at design time.

Page 50: Visual FoxPro™ Seminar Presented by Jim Booth Email: jbooth@jamesbooth.com In cooperation with Rainer Becker and the German FoxPro User’s Group (dFPUG)

Visual FoxPro™ Seminar

ActiveX AutomationActiveX Automation

Structure of ActiveXStructure of ActiveX Direct Manipulation of an Direct Manipulation of an

ActiveX serverActiveX server Automation of an Object Inside Automation of an Object Inside

of an OLEControlof an OLEControl

Page 51: Visual FoxPro™ Seminar Presented by Jim Booth Email: jbooth@jamesbooth.com In cooperation with Rainer Becker and the German FoxPro User’s Group (dFPUG)

Visual FoxPro™ Seminar

Multi-user IssuesMulti-user Issues

What is the multi-user problem?What is the multi-user problem? Two strategies (Philosophies)Two strategies (Philosophies)

OptimisticOptimistic It is unlikely that there will be a It is unlikely that there will be a

problem when I try to save.problem when I try to save. PessimisticPessimistic

It is very likely there will be a It is very likely there will be a problem when I try to save.problem when I try to save.

Page 52: Visual FoxPro™ Seminar Presented by Jim Booth Email: jbooth@jamesbooth.com In cooperation with Rainer Becker and the German FoxPro User’s Group (dFPUG)

Visual FoxPro™ Seminar

Data BufferingData Buffering

How did we do this before?How did we do this before? What’s new and different now?What’s new and different now? Row versus Table bufferingRow versus Table buffering Pessimistic versus Optimistic Pessimistic versus Optimistic

bufferingbuffering Choosing the correct buffering Choosing the correct buffering

modemode

Page 53: Visual FoxPro™ Seminar Presented by Jim Booth Email: jbooth@jamesbooth.com In cooperation with Rainer Becker and the German FoxPro User’s Group (dFPUG)

Visual FoxPro™ Seminar

Setting the Buffering ModeSetting the Buffering Mode

CursorSetProp() (CursorGetProp())CursorSetProp() (CursorGetProp())Using a Cursor’s Using a Cursor’s

BufferModeOverride propertyBufferModeOverride property

Page 54: Visual FoxPro™ Seminar Presented by Jim Booth Email: jbooth@jamesbooth.com In cooperation with Rainer Becker and the German FoxPro User’s Group (dFPUG)

Visual FoxPro™ Seminar

Saving Buffered EditsSaving Buffered Edits

TableUpdate()TableUpdate() TableRevert()TableRevert() GetFldState()GetFldState() GetNextModified()GetNextModified()

Page 55: Visual FoxPro™ Seminar Presented by Jim Booth Email: jbooth@jamesbooth.com In cooperation with Rainer Becker and the German FoxPro User’s Group (dFPUG)

Visual FoxPro™ Seminar

Transaction ProcessingTransaction Processing

The all or none approachThe all or none approach

BEGIN TRANSACTION, END TRANSACTION, and BEGIN TRANSACTION, END TRANSACTION, and ROLLBACKROLLBACK

Resolving conflicts using CURVAL() and Resolving conflicts using CURVAL() and OLDVAL()OLDVAL()

Page 56: Visual FoxPro™ Seminar Presented by Jim Booth Email: jbooth@jamesbooth.com In cooperation with Rainer Becker and the German FoxPro User’s Group (dFPUG)

Visual FoxPro™ Seminar

Client/Server - Is It For Client/Server - Is It For You?You?

When does Client/Server make When does Client/Server make sense?sense? SecuritySecurity ScalabilityScalability Central Control of DataCentral Control of Data

Page 57: Visual FoxPro™ Seminar Presented by Jim Booth Email: jbooth@jamesbooth.com In cooperation with Rainer Becker and the German FoxPro User’s Group (dFPUG)

Visual FoxPro™ Seminar

Remote Data SourcesRemote Data Sources

Setting up data sources under Setting up data sources under Windows (95, NT,98)Windows (95, NT,98)

Connections in Visual FoxProConnections in Visual FoxPro Using Remote ViewsUsing Remote Views Using SQL Passthrough Using SQL Passthrough

functionsfunctions

Page 58: Visual FoxPro™ Seminar Presented by Jim Booth Email: jbooth@jamesbooth.com In cooperation with Rainer Becker and the German FoxPro User’s Group (dFPUG)

Visual FoxPro™ Seminar

Designing Client/Server Designing Client/Server ApplicationsApplications

User Interface DesignUser Interface Design No more BROWSE of the customer No more BROWSE of the customer

tabletable

Awareness that your code does Awareness that your code does not have absolute control over not have absolute control over the data updates.the data updates.

Page 59: Visual FoxPro™ Seminar Presented by Jim Booth Email: jbooth@jamesbooth.com In cooperation with Rainer Becker and the German FoxPro User’s Group (dFPUG)

Visual FoxPro™ Seminar

Using Visual FoxPro to Using Visual FoxPro to Create an ActiveX ServerCreate an ActiveX Server

OLEPublic classesOLEPublic classes Designing the ServerDesigning the Server

Page 60: Visual FoxPro™ Seminar Presented by Jim Booth Email: jbooth@jamesbooth.com In cooperation with Rainer Becker and the German FoxPro User’s Group (dFPUG)

Visual FoxPro™ Seminar

Creating Your Own ActiveX Creating Your Own ActiveX Automation ServersAutomation Servers

In-Process versus Out of In-Process versus Out of process serversprocess servers DLL versus EXEDLL versus EXE

Compiling the serverCompiling the server Registering the serverRegistering the server Using the serverUsing the server

Page 61: Visual FoxPro™ Seminar Presented by Jim Booth Email: jbooth@jamesbooth.com In cooperation with Rainer Becker and the German FoxPro User’s Group (dFPUG)

Visual FoxPro™ Seminar

The Visual FoxPro DebuggerThe Visual FoxPro Debugger

The debugger as a developer’s The debugger as a developer’s tooltool

Choosing a FoxPro frame or the Choosing a FoxPro frame or the debugger framedebugger frame

Saving and restoring debugger Saving and restoring debugger settingssettings

Hot Keys in the debuggerHot Keys in the debugger

Page 62: Visual FoxPro™ Seminar Presented by Jim Booth Email: jbooth@jamesbooth.com In cooperation with Rainer Becker and the German FoxPro User’s Group (dFPUG)

Visual FoxPro™ Seminar

The Debugger WindowsThe Debugger Windows

TraceTrace WatchWatch LocalsLocals Call StackCall Stack OutputOutput

SET DEBUGOUT TOSET DEBUGOUT TO Event TrackingEvent Tracking Setting BreakpointsSetting Breakpoints

Page 63: Visual FoxPro™ Seminar Presented by Jim Booth Email: jbooth@jamesbooth.com In cooperation with Rainer Becker and the German FoxPro User’s Group (dFPUG)

Visual FoxPro™ Seminar

Coverage Analysis/ Coverage Analysis/ Application profilingApplication profiling

SET COVERAGE TO <FileName>SET COVERAGE TO <FileName> Turning coverage on and offTurning coverage on and off Using the Coverage ProfilerUsing the Coverage Profiler

Page 64: Visual FoxPro™ Seminar Presented by Jim Booth Email: jbooth@jamesbooth.com In cooperation with Rainer Becker and the German FoxPro User’s Group (dFPUG)

Visual FoxPro™ Seminar

Using AssertionsUsing Assertions

The ASSERT commandThe ASSERT command SET ASSERTS ON/OFFSET ASSERTS ON/OFF

Page 65: Visual FoxPro™ Seminar Presented by Jim Booth Email: jbooth@jamesbooth.com In cooperation with Rainer Becker and the German FoxPro User’s Group (dFPUG)

Visual FoxPro™ Seminar

Using The DebugOut Using The DebugOut CommandCommand

Does not mess up your Does not mess up your application screenapplication screen

Does not introduce extra window Does not introduce extra window focus events to your applicationfocus events to your application

Page 66: Visual FoxPro™ Seminar Presented by Jim Booth Email: jbooth@jamesbooth.com In cooperation with Rainer Becker and the German FoxPro User’s Group (dFPUG)

Visual FoxPro™ Seminar

Visual FoxPro and the Visual FoxPro and the InternetInternet

What is HTML?What is HTML? How does the Internet work?How does the Internet work? The Internet Search WizardThe Internet Search Wizard Accessing the search wizard Accessing the search wizard

pagepage The Web Publishing WizardThe Web Publishing Wizard

Page 67: Visual FoxPro™ Seminar Presented by Jim Booth Email: jbooth@jamesbooth.com In cooperation with Rainer Becker and the German FoxPro User’s Group (dFPUG)

Visual FoxPro™ Seminar

Advanced Class Design Advanced Class Design ConceptsConcepts

Inheritance HierarchyInheritance Hierarchy The is-a relationshipThe is-a relationship

Containership HierarchyContainership Hierarchy The has-a relationshipThe has-a relationship

Design PatternsDesign Patterns

Page 68: Visual FoxPro™ Seminar Presented by Jim Booth Email: jbooth@jamesbooth.com In cooperation with Rainer Becker and the German FoxPro User’s Group (dFPUG)

Visual FoxPro™ Seminar

Accessing the Windows Accessing the Windows API from Visual FoxProAPI from Visual FoxPro

What is the API?What is the API? DECLARE commandDECLARE command Calling an API functionCalling an API function