Visual Foxpro

This forum is for eXpress++ general support.
Post Reply
Message
Author
User avatar
rdonnay
Site Admin
Posts: 4729
Joined: Wed Jan 27, 2010 6:58 pm
Location: Boise, Idaho USA
Contact:

Visual Foxpro

#1 Post by rdonnay »

Does anyone know if Visual Foxpro is available to download and install?

Searching the internet is very confusing about this.

I have a customer who wants me to help convert their Clipper applications to Xbase++.
They require concurrency of the FoxCDX data, meaning that Clipper, FoxPro and Xbase++ programs will all need to access the same data.

They reindex all their CDX files every night, using FoxPro, and this cause failures of the Xbase++ program when accessing the data. Seeks fail.
Reindexing with Xbase++ causes Foxpro to fail with a corrupted index tag.

I have never heard that there are concurrency problems between FoxPro 2x and Xbase++.
It's not easy to figure this out without having Foxpro on my computer.
The eXpress train is coming - and it has more cars.


k-insis
Posts: 100
Joined: Fri Jan 28, 2011 4:07 am

Re: Visual Foxpro

#3 Post by k-insis »

@rdonnay

I remembered I had bookmarks on cdx compatibility from some time ago

One: Years ago Richard Pullman posted this - it might help, but it is not directly quoted to vfp

*********************
First, I will like to thank Andreas Gehrs-Pahl from Absolute Software, LLC for helping me solve compatibility issues between Clipper 5.2e FOXCDX indexes and
XBase++ 1.9 FOXCDX indexes.


In my XBase++ procedure AppSys() I placed this two lines:

SET CHARSET TO OEM
SET COLLATION TO ASCII

In my DbeSys() after building the FOXCDX engine, I placed the following lines:

DBESETDEFAULT("FOXCDX")

IF DBESETDEFAULT()="FOXCDX" // FOXCDX setup stuff.
DBEINFO(COMPONENT_DATA,FOXDBE_CREATE_2X,TRUE)
DBEINFO(COMPONENT_DATA,FOXDBE_LOCKMODE,FOXDBE_LOCKMODE_2X)
DBEINFO( COMPONENT_ORDER, CDXDBE_MODE, CDXDBE_COMIX )
DBEINFO( COMPONENT_DATA, FOXDBE_LOCKRETRY, 100000 )
DBEINFO( COMPONENT_ORDER, CDXDBE_LOCKRETRY, 100000 )
ENDIF


A little note: Clipper does not suppor SET CHARSET TO (uses OEM) or SET COLLATION TO ....

Best regards. Hope to make your life easier.

Richard -
*********************

Two: And Mr. Andreas posted:

########################

The distinction is between FoxPro and Visual FoxPro (or VFP). To be
compatible with FoxPro (versions 1.0 through 2.6), you need to use the
DBE settings that you mentioned in your post. To be compatible with VFP
(versions 3 through 9), you can use the default settings of the DBEs,
or you can explicitly set them to the following (default) values:

DbeInfo(COMPONENT_DATA , FOXDBE_CREATE_2X, .f.)
DbeInfo(COMPONENT_DATA , FOXDBE_LOCKMODE , FOXDBE_LOCKMODE_VISUAL)
DbeInfo(COMPONENT_ORDER, CDXDBE_MODE , CDXDBE_VFOXPRO)

The first setting only affects the creation of new database files. The
second setting is only relevant if you use your database files concurrently
from other FoxPro, VFP, or Clipper, applications. The third option is also
only relevant if you use the index files from other FoxPro, VFP, or Clipper,
applications.

Otherwise -- if your Xbase++ application is the only program accessing the
database and index files -- those settings are actually of no importance.


Andreas


#########################

Victorio
Posts: 621
Joined: Sun Jan 18, 2015 11:43 am
Location: Slovakia

Re: Visual Foxpro

#4 Post by Victorio »

Hi Roger,
I can confirm, there is compatibility problems between VFP an Xbase++.
I solved it a long time ago, also consulted here on the forum, but I did not manage to solve it 100%. therefore, with some indexes, I solve it by opening a database shared with another VFP application, before opening the DBF, I create my own CDX in the TEMP directory. So it works pretty well for me. Although it is not possible to ensure online synchronization of DBF with CDX if someone adds records in VFP.
I had a problem mainly when sorting strings in DBF if they contain diacritics, or if I needed to use my own function to remove diacritics and upper, etc.

In my case, it is usable because my program opens the database read only, while the VFP application also writes to the DBF.
In some cases, I also had to use the creation of a DBF copy, because the old VFP application has an exclusive opening in the source code, and there is no one to fix the old VFP application, the technical support for it ended a long time ago.

In addition, I also use the VFP ODBC SQL driver, in this case it is also an old ODBC, and it works to a limited extent

User avatar
digitsoft
Posts: 451
Joined: Thu Jan 28, 2010 1:33 pm
Location: Republica Dominicana
Contact:

Re: Visual Foxpro

#5 Post by digitsoft »

hello Roger
what I recommend is to migrate everything to Postgress SQL when the whole system is functional migrate the data because if the dbf are very large they suffer from corrupting the indexes.
Nolberto Paulino
Regards

User avatar
Auge_Ohr
Posts: 1407
Joined: Wed Feb 24, 2010 3:44 pm

Re: Visual Foxpro

#6 Post by Auge_Ohr »

hi,

Customer say
They require concurrency of the FoxCDX data, meaning that Clipper, FoxPro and Xbase++ programs will all need to access the same data.
so PostgreSQL is not a Option.

---

when use Cl*pper DBF "normal" are OEM and have *.NTX
to use CDX with Cl*pper you need SixDrive or Comix which "can use" ANSI

it "might" be that they have used "old" Cl*pper OEM DBF and "just" change Index Type from NTX into CDX.
when later FoxPro App was written they use "same" DBF / CDX which might be OEM

---

Xbase++ default is OEM

i use Xbase++ and harbour and have this in DBESYS

Code: Select all

   // FoxPro 2.x compatible  using Cl*pper Comix/SixDrive
   DbeInfo( COMPONENT_DATA, FOXDBE_CREATE_2X, .T. )
   DbeInfo( COMPONENT_DATA, FOXDBE_LOCKMODE, FOXDBE_LOCKMODE_CLIPPER )
   DbeInfo( COMPONENT_ORDER, CDXDBE_MODE, CDXDBE_FOXPRO2X )
and this in harbour

Code: Select all

   RDDSETDEFAULT( "DBFCDX" )
   SET DBFLOCKSCHEME TO DB_DBFLOCK_CLIPPER

   hb_cdpSelect( SP_Codepage() )   // DE850
   hb_langSelect( SP_Language() )  // DE
in Xbase++ you need LOCKING_STANDARD
but Codepage might be a Problem when using Xbase++

also do not use Xbase++ Option like "Rushmore" or "Smartfilter" as "other" do not know these Option

if you need Re-Index use "oldest" Version : 1st. Cl*pper, than FoxPro/harbour but NOT Xbase++ (will grow-up Index)
greetings by OHR
Jimmy

Post Reply