Re: Need to open Visual Fox Pro 8 tables in VB6

From: Cindy Winegarden (cindy.winegarden_at_mvps.org)
Date: 02/05/04


Date: Wed, 4 Feb 2004 23:00:28 -0500

In news: FC556BA0-0745-4736-A8D7-104E6B83535F@microsoft.com,
JohnC <johnc1102@hotmail.com> wrote:
> For better or for worse I have been building VB6 apps using DAO and
> Access 2000 databases. A client wants me to write a new application
> which will look at 2 Visual Fox Pro 8 tables. The client provided me
> with the tables (.dbf, .fpt & .cdx) but I can't get them open.
>
> I tried linking the tables to an Access database & opening directly
> in VB6 but am not having any luck.

Hi John,

Below is something I've posted earlier on working with VFP tables. Some of
it may not apply to you. There are several formats of Visual FoxPro files.
VFP6 and below are readable via ODBC. In VFP7 and VFP8, new data features
were added and the tables are no longer readable via ODBC. You must use OLE
DB to read these tables. However, even though tables were created with VFP7
or VFP8, if none of the new features were used then you can read the tables
via ODBC.

>>
Start with the latest ODBC driver for FoxPro and Visual FoxPro, available
from http://msdn.microsoft.com/vfoxpro/downloads/updates/default.aspx.
Download and install it. (If you have trouble doing this, post back.)

You will need to determine whether you have FoxPro "free" tables or a
"database container" (contains metadata about the tables themselves). To do
this, navigate to your data directory and look for the presence of a DBC
file. If it's there you have a "database" otherwise you have free tables.

Now open up the ODBC dialog. In WinXP it's Start > Administrative Tools >
Data Sources (ODBC). Choose either the User DSN or the System DSN. (The
difference lies in whether you want other people to be able to see it if
they use your machine.)

Click Add... Scroll down to the Microsoft Visual FoxPro Driver. Scroll over
to verify that it's version 6.01.8629.01. Click Finish.

Now you're at the ODBC Visual FoxPr Setup dialog. In the first box (Data
Source Name) enter a friendly name that you will use to recognise this data
source - My FoxPro Data Source. You can add more text in the description
box.

Below are two options. Choose Visual FoxPro database (.DBC) or Free Table
Directory - whichever you have determined is correct.

Browse to locate your directory, or your specific DBC file.

You can click the Options>> button for more choices. The defaults should be
ok. "Exclusive" refers to whether you want to have exclusive access to the
data while you're using it. "Null" allows you to enter Null values or not.
Older FoxPro tables do not allow Nulls. "Deleted" means to hide deleted
records. This one's important if you are working with primary keys - more in
a minute. "Fetch data in background" will allow you to see the first few
lines of a large tablel while the rest is being retrieved. You can also
indicate a collating sequence if you're using a non-English alphabet.

Click OK and you're done.

Now, about deleted records. When a record is deleted in a FoxPro or Visual
FoxPro table it's merely marked as deleted and filtered out, but is still
physically present in the table. If you have a unique index and you delete
the record with a key value of 123 you can not enter another record with
this value, even though you can't see the record. To get rid of records
entirely, you must issue a PACK command. However, the best rule to follow is
to not reuse primary keys.

<<

-- 
Cindy Winegarden  MCSD, Microsoft Visual FoxPro MVP
cindy.winegarden@mvps.org  www.cindywinegarden.com