ID: Q113525
2.50 2.50a 2.50b 2.60 | 2.50 2.50a 2.50b 2.60
WINDOWS | MS-DOS
The information in this article applies to:
Currently, you can only use GENXTAB.PRG with the first three fields of a database even though the comments in GENXTAB.PRG say otherwise. The comments read as follows:
Calling example:
DO genxtab WITH 'XTAB.DBF',.T.,.T.,.T.,1,2,5,.T.
This command causes GENXTAB to write the output database to
'XTAB.DBF'. However, XTAB.DBF will be deleted and the output
stored to a cursor called XTAB. The input database will be closed
at the conclusion of the program. The rows in XTAB.DBF will
contain the unique values of field 1 in the database that is
selected when GENXTAB is called, the columns will contain
unique values of field 2 in the input database, and the
cell values will come from field 5 in the input database.
The thermometer will be shown. A total field will be created.
All the parameters work correctly except the row, column, and cell
parameters. GENXTAB.PRG always uses the first field as the row, the second
field as the column, and the third field as the cell.
To correct this problem, modify GENXTAB.PRG using the code below and save it as GENXTABX.PRG.
For more information about the meaning of the parameters, please see the following article(s) in the Microsoft Knowledge Base:
ARTICLE-ID: Q113971
TITLE : How to Call GENXTAB.PRG
To make the modifications, choose Go To from the Edit menu, and then change the lines below.
WARNING: All of the following modifications must be made at the same time in order to maintain the functionality of GENXTABX.PRG.
Line 238
ORIGINAL CODE:
IF inpfields[1,2] $ 'MGP'
CHANGE TO:
IF inpfields[m.rowfld,2] $ 'MGP'
Line 242
ORIGINAL CODE:
IF inpfields[2,2] $ 'MGP'
CHANGE TO:
IF inpfields[m.colfld,2] $ 'MGP'
Line 246
ORIGINAL CODE:
IF inpfields[3,2] $ 'MGP'
CHANGE TO:
IF inpfields[m.cellfld,2] $ 'MGP'
Line 310
ORIGINAL CODE:
outarray[1,1] = mapname(inpfields[1,1])
CHANGE TO:
outarray[1,1] = mapname(inpfields[m.rowfld,1])
Line 311
ORIGINAL CODE:
outarray[1,2] = inpfields[1,2]
CHANGE TO:
outarray[1,2] = inpfields[m.rowfld,2]
Line 312
ORIGINAL CODE:
outarray[1,3] = inpfields[1,3]
CHANGE TO:
outarray[1,3] = inpfields[m.rowfld,3]
Line 313
ORIGINAL CODE:
outarray[1,4] = inpfields[1,4]
CHANGE TO:
outarray[1,4] = inpfields[m.rowfld,4]
Line 317
ORIGINAL CODE:
outarray[i,2] = inpfields[3,2] && field type
CHANGE TO:
outarray[i,2] = inpfields[m.cellfld,2] && field type
Line 318
ORIGINAL CODE:
outarray[i,3] = inpfields[3,3] && field length
CHANGE TO:
outarray[i,3] = inpfields[m.cellfld,3] && field length
Line 319
ORIGINAL CODE:
outarray[i,4] = inpfields[3,4] && decimals
CHANGE TO:
outarray[i,4] = inpfields[m.cellfld,4] && decimals
Line 325
ORIGINAL CODE:
outarray[ALEN(coluniq)+2,2] = inpfields[3,2]
CHANGE TO:
outarray[ALEN(coluniq)+2,2] = inpfields[m.cellfld,2]
Line 326
ORIGINAL CODE:
outarray[ALEN(coluniq)+2,3] = inpfields[3,3]
CHANGE TO:
outarray[ALEN(coluniq)+2,3] = inpfields[m.cellfld,2]
Line 327
ORIGINAL CODE:
outarray[ALEN(coluniq)+2,4] = inpfields[3,4]
CHANGE TO:
outarray[ALEN(coluniq)+2,4] = inpfields[m.cellfld,4]
Save the file as GENXTABX.PRG so that the original GENXTAB can be used.
This completes the changes necessary to make GENXTABX.PRG work with any
database and any character or numeric fields you choose. To test the
changes, use the following example, which uses the SALESMAN.DBF file in the
TUTORIAL subdirectory off the main FoxPro directory.
*** CODE BEGINS HERE ***
CLOSE DATA
newgxtx=GETFILE('PRG',"Select GENXTABX.PRG","Select")
oldgxt=_genxtab
_genxtab=newgxtx
SELECT 0
gxtname=GETFILE('DBF',"Chose SALESMAN.DBF","USE")
USE (gxtname) EXCLUSIVE
SET SAFETY OFF
INDEX ON name+state TAG combo
SET SAFETY ON
DO (_GENXTAB) WITH 'TEST_GXT',.T.,.T.,.T.,4,9,5,.T.
BROWSE
CLOSE DATA
_genxtab=oldgxt
*** CODE ENDS HERE ***
To make GENXTABX your default _genxtab, add the following line to your
CONFIG.FP or CONFIG.FPW file:
_GENXTAB=<path to FoxPro directory>\GENXTABX.PRG
Additional reference words: FoxDos FoxWin 2.50 2.50a 2.50b 2.60 crosstab
KBCategory:
KBSubcategory: FxenvConfigfp
Keywords : kbcode FxenvConfigfp
Version : 2.50 2.50a 2.50b 2.60 | 2.50 2.5
Platform : MS-DOS WINDOWS
Last Reviewed: May 22, 1998