Unless we are very clear with your requirements, we can not suggest what is appropriate for you.
We can only suggest some approaches.
#include "fivewin.ch"
REQUEST DBFCDX
//----------------------------------------------------------------------------//
function Main()
field COUNTRY,REGION
local aData
CreateTables()
USE REGION NEW VIA "DBFCDX"
SET ORDER TO TAG CODE
GO TOP
USE COUNTRY NEW VIA "DBFCDX"
SET ORDER TO TAG CODE
SET RELATION TO REGION INTO REGION
GO TOP
USE CITY NEW VIA "DBFCDX"
SET ORDER TO TAG COUNTRY
SET RELATION TO COUNTRY INTO COUNTRY
GO TOP
SELECT CITY
FW_DbfToExcel( { "REGION->REGION AS REGION","COUNTRY->COUNTRY AS CONTRY", "CITY", "CODE AS AIRPORT" } )
return nil
//----------------------------------------------------------------------------//
static function CreateTables()
local aRegion := { { "EU", "Europe" }, { "NA", "North America" } }
local aCountry := { { "SP", "EU", "Spain" }, { "IT", "EU", "Italy" }, ;
{ "US", "NA", "USA" }, { "CA", "NA", "Canada" } }
local aCity := { { "MAD", "SP", "Madrid" }, { "AGP", "SP", "Málaga" }, ;
{ "TRN", "IT", "Turin" }, { "VCE", "IT", "Venice" }, ;
{ "JFK", "US", "New York"},{ "BOS", "US", "Boston" }, ;
{ "YOW", "CA", "Ottawa" }, { "YUL", "CA", "Montriel" } }
DBCREATE( "REGION.DBF", {{"CODE","C",2,0},{"REGION","C",15,0}}, "DBFCDX", .T., "TMP" )
FW_ArrayToDbf( aRegion )
FW_CdxCreate()
CLOSE TMP
DBCREATE( "COUNTRY.DBF", {{"CODE","C",2,0},{"REGION","C",2,0},{"COUNTRY","C",15,0}}, "DBFCDX", .T., "TMP" )
FW_ArrayToDbf( aCountry )
FW_CdxCreate()
CLOSE TMP
DBCREATE( "CITY.DBF", {{"CODE","C",3,0},{"COUNTRY","C",2,0},{"CITY","C",15,0}}, "DBFCDX", .T., "TMP" )
FW_ArrayToDbf( aCity )
FW_CdxCreate()
CLOSE TMP
return nil
//----------------------------------------------------------------------------//