Copy current database structure into a definition file
__dbCopyXStruct( <cFileName> ) --> lSuccess
<cFileName> is the name of target definition file to create. (.dbf) is the default extension if none is given.
__dbCopyXStruct() returns .F. if no database is USED in the current work-area, .T. on success, or a run-time error if the file create operation had failed.
__dbCopyXStruct() create a new database named <cFileName> with a pre-defined structure (also called “structure extended file”):
Field name Type Length Decimals ---------- ---- ------ -------- FIELD_NAME C 10 0 FIELD_TYPE C 1 0 FIELD_LEN N 3 0 FIELD_DEC N 3 0
Each record in the new file contains information about one field in the original file. CREATE FROM could be used to create a database from the structure extended file.
For prehistoric compatibility reasons, Character fields which are longer than 255 characters are treated in a special way by writing part of the length in the FIELD_DEC according to the following formula (this is done internally):
FIELD->FIELD_DEC := Int( nLength / 256 ) FIELD->FIELD_LEN := ( nLength % 256 )
Later if you want to calculate the length of a field you can use the following formula:
nLength := iif( FIELD->FIELD_TYPE == "C", ; FIELD->FIELD_DEC * 256 + FIELD->FIELD_LEN, ; FIELD->FIELD_LEN )
COPY STRUCTURE EXTENDED command is preprocessed into __dbCopyXStruct() function during compile time.
// Open a database, then copy its structure to a new file, // Open the new file and list all its records USE Test __dbCopyXStruct( "TestStru" ) USE TestStru LIST
Library is rdd
COPY STRUCTURE, COPY STRUCTURE EXTENDED, CREATE, CREATE FROM, dbCreate(), dbStruct(), __dbCopyStruct(), __dbCreate()