Click or drag to resize

DbServer.FieldInfo Method

Return and optionally change information about a field.

Namespace:  VO
Assembly:  VORDDClasses (in VORDDClasses.dll) Version: 2.5
Syntax
 VIRTUAL METHOD FieldInfo(
	kFieldInfoType AS USUAL,
	uField AS USUAL,
	uFieldVal AS USUAL
) AS USUAL

Parameters

kFieldInfoType
Type: Usual
Specifies the type of information.  The constants are described in the Constants section below.  Note, however, that not all constants are supported for all RDDs.
Important!  DBS_USER is a constant that returns the minimum value that third-party RDD developers can use for defining new <kInfoType> parameters.   Values less than DBS_USER are reserved for development.
uField
Type: Usual
The name, number, or symbol representing the position of the field in the database file structure or a numeric pointer to a BLOB.   Only certain <kFieldInfoType> constants designed to work with BLOB fields — all noted in the Constants section below — allow specifying the field using a pointer; all others require specifying the field by its position.
uFieldVal
Type: Usual
If specified, this parameter is used to change the value of a setting.  The data type (and whether <uNewSetting> can be specified), depends on the <kInfoType> constant and is documented in the Constants section below.

Return Value

Type: Usual
If <uNewSetting> is not specified, DBServer:FieldInfo() returns the current setting.  If <uNewSetting> is specified, the previous setting is returned.
Remarks
ConstantsDescription
DBS_ALIASReturns and optionally changes an alternate name (or alias) by which a field can be referenced (by default, same as DBS_NAME).  Using the <uNewSetting> argument, you can specify a string that you can subsequently use to access the indicated field.
DBS_BLOB_DIRECT_LENReturns the length of data in a BLOB as an unsigned long integer, without referencing a particular memo field.  For strings, the return value is the length of the string in bytes; for arrays, it is the number of elements in the first dimension; for all other data types, it returns -1.  With this constant, you must specify the BLOB using a numeric pointer obtained from DBServer:BLOBDirectPut(), DBServer:BLOBDirectImport(), or DBServer:FieldInfo(DBS_BLOB_POINTER, <uFieldPos>).
DBS_BLOB_DIRECT_TYPETo determine the data type of BLOB data, without reference to a particular memo field, use DBServer:FieldInfo(DBS_BLOB_DIRECT_TYPE, ...).  With this constant, you must specify the BLOB using a numeric pointer obtained from DBServer:BLOBDirectPut(), DBServer:BLOBDirectImport(), or DBServer:FieldInfo(DBS_BLOB_POINTER, <uFieldPos>).
See DBS_BLOB_TYPE for a table of possible return values.
DBS_BLOB_LEN Returns the length of the BLOB data in a memo field as an unsigned long integer.  For strings, the return value is the length of the string in bytes; for arrays, it is the number of elements in the first dimension; for all other data types, it returns -1.
Tip Tip
DBServer:FieldInfo(DBS_BLOB_LEN, ...) has a performance advantage over the Len() function.,
DBS_BLOB_POINTERReturns a numeric pointer to the BLOB data associated with a memo field.
DBS_BLOB_TYPEUnlike memo fields maintained in .DBT files, BLOB files allow you to store many different types of data in memo fields.  However, the standard functions for determining data types, such as ValType(), simply treat BLOB fields as regular memo fields.  To determine the actual type of BLOB data stored in a memo field, use DBServer:FieldInfo(DBS_BLOB_TYPE, ...).  
The data type of the return value is string and can be interpreted using this table:
ReturnsMeaning
?Blank (empty/uninitialized field)
AArray
CString
DDate
EError
LLogical
NNumeric
UUndefined (NIL was stored)
DBS_DECReturns the number of decimal places for the field.
DBS_LENReturns the length of the field.
DBS_NAMEReturns the name of the field.
DBS_PROPERTIESReturns the number of properties defined for a field.
DBS_TYPEReturns the data type of the field.
DBServer:FieldInfo() retrieves information about the state of a field (column). The field information that is available is defined by the RDD.  In the DBF model, this is limited to the information stored in the DBF file structure (that is, name, length, number of decimals, and data type) plus the field alias that can be changed at runtime. To support RDDs for other database models (such as dictionary based databases) that store more information about each field or column, the X# RDD API has been enhanced.  The DBServer:FieldInfo() method is designed to allow for additional <kInfoType> values that can be defined by third-party RDD developers.
Examples
The following examples use DBServer:FieldInfo() to retrieve field information:
X#
 1METHOD DBOutStruct() CLASS Customer
 2LOCAL aStruct AS ARRAY
 3LOCAL wFcount AS DWORD
 4LOCAL i       AS DWORD
 5aStruct := {}
 6wFcount := FCount()
 7FOR i := 1 UPTO wFcount
 8AAdd(aStruct,;
 9{SELF:FieldInfo(DBS_NAME, i),;
10SELF:FieldInfo(DBS_TYPE, i),;
11SELF:FieldInfo(DBS_LEN, i),;
12SELF:FieldInfo(DBS_DEC, i)})
13NEXT
14RETURN aStruct
The next example illustrates using the third parameter to assign an alias to a field name:
X#
1METHOD Start() CLASS App
2LOCAL oDBDate AS DBServer
3oDBDate := DateBook{}
4oDBDate:FieldInfo(DBS_ALIAS,;
5oDBDate:FieldPos("Name"),;
6"NewName")
7? Name        // Displays name field
8? NewName    // Also displays name field
9...
See Also