Introduction to Visual
FoxPro
|
|
|
Ted Roche |
|
Ted Roche & Associates, LLC |
Ground Rules
|
|
|
|
Pagers and cell phones silent, please. |
|
Rest breaks as appropriate |
|
How to ask questions |
|
Administrivia |
|
Conference Binder |
|
Schedule – Some sessions only given
once |
|
Trade Show – T-shirt Tuesday, Drawing
Wed. |
|
Evaluations - help the community |
|
Closing session questions – Wednesday
noon |
|
Drink Tickets! |
Goals for this morning
|
|
|
Learn the terminology used in VFP |
|
Understand the tools of VFP has |
|
Understand how VFP stores and retrieves
data |
|
Know what applications VFP can create |
|
Know resources to learn more |
Who is Ted Roche?
|
|
|
President of TR&A, LLC Consulting |
|
Microsoft Certified Solution
Developer,
Microsoft Certified Systems Engineer |
|
Co-Author of Hacker’s Guide to VFP 6 |
|
Author of Essential SourceSafe |
|
Microsoft Support MVP |
Outline
|
|
|
Ground Rules & Pop Quiz |
|
Episode I: It’s the Data |
|
Part B: It’s the Coding |
|
Act III: Advanced Topics |
|
Part 4: Putting it all together |
|
Epilogue: So, Now What? |
What is Visual FoxPro?
|
|
|
Visual FoxPro is… |
|
… a standalone tool for data
manipulation. |
|
… a development tool for standalone,
LAN, client-server, COM and Web applications. |
|
… a database engine. |
|
… a programming language. |
|
… part of Visual Studio. |
|
… an integral part of Microsoft Windows. |
|
… a religion. |
Slide 7
Episode I:
It’s the
Data
Episode I: It’s the Data
|
|
|
Terminology |
|
Data Design |
|
Normalization |
|
Reading and Writing Data |
|
Transactions and Buffering |
|
Client-Server Data |
Terminology
|
|
|
Field: single piece of data |
|
Datatype: describes contents and limits |
|
Record: single piece of information |
|
Table: set of records |
|
Cursor: CURrent Set Of Records |
Data Design
|
|
|
|
What goes where? |
|
Typically, data is assigned to table
that represent entities |
|
For example, customer, item, video,
dancer |
|
Caution: table entities may not be
objects! |
|
Field datatypes are chosen to represent
data |
|
Data are assigned to the entities
owning them |
Normalization
|
|
|
|
Why Be Normal? |
|
Easy applications from well-designed
data,
poorly designed data makes for tough apps |
|
Primary Key (PK) uniquely defines
record (1st) |
|
All parts of PK required to identify
record (2nd) |
|
No other fields needed for uniqueness
(3rd ) |
|
When a record wants to refer to
another, it stores the PK of that record. That field is a foreign key (FK) |
Relational Data
|
|
|
|
Different tables are related to one
another with primary and foreign key matches. |
|
Ex. Sales order table holds customer FK |
|
Relationships may be: |
|
(Zero or) One-to-one |
|
(Zero or) One-to-Many |
|
Self-join |
|
Relational Integrity (RI) can be
enforced with triggers, RI Builder, or code |
|
Ex. Cannot delete invoice with detail
items |
|
|
Reading and Writing Data
|
|
|
|
Interactive or Programmatic VFP
Commands |
|
REPLACE |
|
APPEND (BLANK) |
|
BROWSE / EDIT |
|
DELETE |
|
COPY |
|
SQL Commands |
|
INSERT |
|
UPDATE |
|
DELETE |
Transactions and
Buffering
|
|
|
Data on disk should always be complete
and consistent. |
|
Buffering allows you to make a series
of changes, and have the data in local cursors until you are ready to commit
it. |
|
Transactions allow you to lock the
affected records from the time you start and update until you complete it. |
Client-Server Data
|
|
|
|
Use Client-Server for low-bandwidth,
high security, large amounts of data, or high availability situations |
|
Remote Views |
|
Direct ODBC Functions |
|
SQLConnect(), SQLExecute() |
|
Data appears in VFP as a cursor |
Questions on Data?
|
|
|
Terminology |
|
Data Design |
|
Normalization
Reading and Writing Data |
|
Transaction and Buffering |
|
Client-Server Data |
Part B:
It’s the Coding
Part B: It’s the Coding
|
|
|
|
VFP Commands & Functions |
|
Controls, Forms, Classes & Objects |
|
Event Model |
|
The VFP Toolset: |
|
Project Manager |
|
Form and Class Designer |
|
Code Editor |
|
… and many more |
VFP Commands
|
|
|
Commands stand alone, functions return
values |
|
Structural: DO WHILE, IF, DO CASE |
|
Data: REPLACE, APPEND, DELETE |
|
I/O: @…SAY, LIST, REPORT |
|
Functions: |
Controls, Forms, Classes
& Objects
|
|
|
Controls are the widgets that display
stuff, present actions for the operator to take |
|
Forms are where you place your controls |
|
Classes are the templates for your
objects |
|
Objects are the instantiated (running)
entities based on classes. |
Event Model
|
|
|
|
Init() initializes, Destroy() at end |
|
Exception: Form’s DE before form |
|
Error() traps all errors in an object’s
code |
|
Activate() and Deactivate() events on
focus |
|
Mouse* on mouse events – up, down, move |
|
OLE Drag and Drop supported with a
series of events |
|
Events fire automatically, or when the
user chooses – use events to fire code in methods, never methods to call
events. |
VFP Toolset
|
|
|
Project Manager |
|
Form and Class Designer |
|
Code Editor |
Questions on Part B:
Coding?
|
|
|
|
VFP Commands |
|
Controls, Forms, Classes & Objects |
|
Event Model |
|
The VFP Toolset: |
|
Project Manager |
|
Form and Class Designer |
|
Code Editor |
|
… and many more |
Act III:
Advanced Topics
Act III: Advanced Topics
|
|
|
Object-oriented analysis and design |
|
N-tier Design |
|
COM, DCOM, COM+ |
|
ADO and ODBC |
|
User Interface Design |
|
Project Management |
Object Oriented Analysis
& Design
|
|
|
RTFM! |
|
Objects are containers of consistent
behavior and the data needed for those behaviors |
|
Encapsulation – behavior & data |
|
Polymorphism – same name, different
behavior |
|
Inheritance – overwrite the exceptions
only |
|
Composition – use groups of objects to
form complex behaviors – basis for GOF Patterns |
N-Tier Design
|
|
|
An n-tier design is any set of
components communicating via well-defined interfaces |
|
Classic monolithic coding is single
(really zero) tier |
|
Client-server is two-tier |
|
Web apps are often three (interface
management «
business logic « data mgmt |
|
Programming to interface is difficult
but more flexible, scalable and powerful |
COM, DCOM, COM+
|
|
|
Microsoft’s means of managing
components |
|
Publish interfaces for others to
consume |
|
Pool object in transaction services |
|
Heavyweight framework with runtime
expenses |
ADO and ODBC
|
|
|
ADO – Active Data Objects – high-level
COM layers on OLE DB interface to data |
|
ODBC – more primitive, less scalable
and manageable interface to data |
|
ODBC supported natively in VFP’s Remote
Views and Connections, SQL* functions |
|
ADO can be interfaced to VFP |
|
VFP 7 first with OLE-DB provider for
VFP data |
User Interface Design
|
|
|
Simpler is better |
|
Programmers typically do not have the
proper mindset for good user interface design |
|
When in doubt, borrow from the work of
others |
|
Study the resources available ACM-HCI |
|
Least expensive tool: watch an operator
run your application. |
Project Management
|
|
|
There are no silver bullets – Fredrick
P. Brooks |
|
|
|
There are, however, engineering
principles: |
|
Estimate it |
|
Measure it |
|
Plan it |
|
Manage it |
|
There are methodologies out there (RUP,
Agile, Crystal, Extreme) learn and use them |
Questions on Act III:
Advanced Topics
|
|
|
Object-oriented analysis and design |
|
N-tier Design |
|
COM, DCOM, COM+ |
|
ADO and ODBC |
|
User Interface Design |
|
Project Management |
Part 4:
Putting It All Together
Part 4: Putting It All
Together
|
|
|
Read The Fine Manuals |
|
Be One With The Fox |
|
Use A Framework |
|
Get A Support Group |
|
Sharpen The Saw |
|
Top Ten Mistakes |
Read The Fine Manuals
|
|
|
VFP Manuals are among the best in
Microsoft! |
|
The Help file is huge! |
|
There are many fine 3rd
party books |
|
Check out the magazines – Foxtalk,FPA,
Code |
|
99% of the questions answered on the
forums come right out of one of these sources |
Be One With The Fox
|
|
|
When you choose to ride the
tiger,
you must go where the tiger goes |
|
|
|
Learn the FoxPro Way of coding |
|
|
Use A Framework
|
|
|
Frameworks have 3 – 10 man-years of
effort, large customer base, varied applications |
|
Unlike your own framework, or sample
code, these have been tested in the real world |
|
Customer support available |
|
Manuals and tutorials |
Get A Support Group
|
|
|
How many have solved a problem by
explaining it to someone else? |
|
On-line forums: UT, CompuServe,
FoxForum.com |
|
Newsgroups: Microsoft and uunet |
|
User Groups: monthly, free (or cheap),
networking opportunity |
Sharpen The Saw
|
|
|
|
None of us know it all (except maybe
Calvin) |
|
Improve your development and consulting
techniques by: |
|
Attending conferences |
|
Reading journals |
|
Participating online |
|
Reading books (in and out of the
industry) |
Top Ten Mistakes
|
|
|
It ran fine on my system! |
|
It worked great with ten records! |
|
I could write that in a week! |
|
We’re just converting an existing
system – two weeks, maybe four weeks, max! |
|
Our situation is unique… |
Top Ten Mistakes
|
|
|
We don’t have time to document it now… |
|
I know how the system should work… |
|
Upper management has no idea what we
do. |
|
But, what if…. |
|
Those who fail to learn from the past… |
|
… are bound to be past by those of us
who have! |
|
|
Questions on Part
4:
Putting It All Together
|
|
|
Read The Fine Manuals |
|
Be One With The Fox |
|
Use A Framework |
|
Get A Support Group |
|
Sharpen The Saw |
|
Top Ten Mistakes |
Epilogue: So, Now What?
|
|
|
|
DevCon is a great opportunity to: |
|
Learn an awful lot about FoxPro |
|
Learn about emerging technologies |
|
Network for business opportunities |
|
Have some fun! |
|
Go for it! |
|
When you get back home, review your
notes, check the web site for updates, and dig up some of the resources
provided here. |
ADVISOR DEVCON Web Update
Page
|
|
|
|
|
|
|
http://www.Advisor.com/CMF0109p.nsf/w/vfppre |
|
|
|
|
|
|
|
This session WILL / WILL NOT |
|
have updates. |
"Thank you!"
|
|
|
|
|
Thank you! |
|
|
|
|
|
Please remember to fill out your
evaluation. |