How Do I Retrieve the Length or Status of a Column?

You can retrieve the length of a variable-length column or the status of a column (to check for DBSTATUS_S_ISNULL, for example).

To get the length, use the COLUMN_ENTRY_LENGTH macro.

To get the status, use the COLUMN_ENTRY_STATUS macro.

To get both, use COLUMN_ENTRY_LENGTH_STATUS, as shown below.

class CProduct
{
public:
   char      szName[40];
long      nNameLength;
DBSTATUS   nNameStatus;

BEGIN_COLUMN_MAP(CProduct)
   COLUMN_ENTRY_LENGTH_STATUS(2, szName, nNameLength, nNameStatus)
END_COLUMN_MAP()
};

CTable<CAccessor<CProduct > > product;

product.Open(session, "Product");
while (product.MoveNext() == S_OK)
{
   // Check the product name isn’t NULL before tracing it
   if (product.nNameStatus == DBSTATUS_S_OK)
      ATLTRACE(“%s is %d characters\n”, szName, nNameLength);
}

When you use CDynamicAccessor, the length and status are bound for you automatically. To retrieve the length and status values, use the GetLength and GetStatus member functions.