List:Commits« Previous MessageNext Message »
From:pharvey Date:January 3 2006 8:52am
Subject:Connector/ODBC 5 commit: r25 - in MYODBCDes: MYODBCDesLib MYODBCDesTest include
View as plain text  
Added:
   MYODBCDes/MYODBCDesLib/MYODBCDesRec.cpp
   MYODBCDes/MYODBCDesLib/MYODBCDesRec.h
   MYODBCDes/MYODBCDesLib/MYODBCDesRecAPD.h
   MYODBCDes/MYODBCDesLib/MYODBCDesRecARD.h
   MYODBCDes/MYODBCDesLib/MYODBCDesRecIPD.h
   MYODBCDes/MYODBCDesLib/MYODBCDesRecIRD.h
Removed:
   MYODBCDes/MYODBCDesLib/MYODBCDesRecord.cpp
   MYODBCDes/MYODBCDesLib/MYODBCDesRecord.h
Modified:
   MYODBCDes/MYODBCDesLib/MYODBCDes.cpp
   MYODBCDes/MYODBCDesLib/MYODBCDesAPD.cpp
   MYODBCDes/MYODBCDesLib/MYODBCDesInternal.h
   MYODBCDes/MYODBCDesLib/MYODBCDesLib.vpj
   MYODBCDes/MYODBCDesTest/MYODBCDesTest.vpj
   MYODBCDes/include/MYODBCDes.h
   MYODBCDes/include/MYODBCDesAPD.h
   MYODBCDes/include/MYODBCDesARD.h
   MYODBCDes/include/MYODBCDesIPD.h
   MYODBCDes/include/MYODBCDesIRD.h
Log:
UNICODE:
- more work on making descriptors unicode enabled and objectified (not done yet)

Modified: MYODBCDes/MYODBCDesLib/MYODBCDes.cpp
===================================================================
--- MYODBCDes/MYODBCDesLib/MYODBCDes.cpp	2006-01-03 03:47:25 UTC (rev 24)
+++ MYODBCDes/MYODBCDesLib/MYODBCDes.cpp	2006-01-03 08:52:27 UTC (rev 25)
@@ -43,22 +43,8 @@
     nBindType            = SQL_BIND_BY_COLUMN;
     pnRowsProcessedPtr   = NULL;
 
-    /* add bookmark record at index 0 */
-    /*
-        \internal ODBC Rule
+    /* derived classes must create bookmark ass needed */
 
-        When ColumnNumber is equal to 0 (for a bookmark column), 
-        SQL_BINARY is returned in *DataTypePtr for variable-length 
-        bookmarks. (SQL_INTEGER is returned if bookmarks are used 
-        by an ODBC 3.x application working with an ODBC 2.x driver 
-        or by an ODBC 2.x application working with an ODBC 3.x 
-        driver.)
-    */    
-    pdesrecord = new MYODBCDesRecord( this );
-    pdesrecord->nConciseType            = SQL_BINARY;
-    pdesrecord->nType                   = SQL_BINARY;
-    pdesrecord->nDatetimeIntervalCode   = 0;
-
     /* associate with our owner (caller needs to add us to hOwner's list of descriptors)
*/
     this->hOwner        = hOwner;
 
@@ -130,51 +116,6 @@
     MYODBCDbgReturn( SQL_SUCCESS );
 }
 
-/*!
-    \brief  Expands or shrinks list of records.
-            
-            Expands or shrinks list of records while trying to account for some
-            rules stated in the ODBC spec in regard to maintaining the records list.
-
-    \param  pDes        any type of descriptor
-    \param  nCount      the desired value for SQL_DESC_COUNT (0-n), records appended 
-                        or truncated as needed
-    \param  bUnbind     - True  - is ok to truncate records which are bound
-                        - False - never truncate a bound record (in this case num-recs 
-                        could be > count)
-    \return MYODBC_C_BOOL
-
-    \retval MYODBC_C_TRUE   success (its possible to have success but count < 
-                            SQL_DESC_COUNT)
-    \retval MYODBC_C_FALSE  failed
-*/
-SQLRETURN MYODBCDes::setCount( SQLSMALLINT nCount )
-{
-    MYODBCDbgEnter();
-
-    /* We should always have a bookmark record at index 0. */
-    if ( nCount < 0 )
-        return false;
-
-    /* append */
-    while ( nCount > listRecords.count() )
-    {
-        new MYODBCDesRecord( this );
-    }
-
-    /* truncate */
-    while ( listRecords.count() > nCount )
-    {
-        /* do not delete bound records */
-        if ( listRecords.last()->getDataPtr() )
-            break;
-
-        delete listRecords.last();
-    }
-
-    MYODBCDbgReturn( SQL_SUCCESS );
-}
-
 SQLRETURN MYODBCDes::setRowsProcessedPtr( SQLUINTEGER *pnRowsProcessedPtr )
 {
     MYODBCDbgEnter();

Modified: MYODBCDes/MYODBCDesLib/MYODBCDesAPD.cpp
===================================================================
--- MYODBCDes/MYODBCDesLib/MYODBCDesAPD.cpp	2006-01-03 03:47:25 UTC (rev 24)
+++ MYODBCDes/MYODBCDesLib/MYODBCDesAPD.cpp	2006-01-03 08:52:27 UTC (rev 25)
@@ -3,23 +3,238 @@
 MYODBCDesAPD::MYODBCDesAPD( SQLHANDLE hOwner )
 {
     nTypeSubID = MYODBC_RTTI_DES_APD;
+
+    /* add bookmark record at index 0 */
+    /*
+        \internal ODBC Rule
+
+        When ColumnNumber is equal to 0 (for a bookmark column), 
+        SQL_BINARY is returned in *DataTypePtr for variable-length 
+        bookmarks. (SQL_INTEGER is returned if bookmarks are used 
+        by an ODBC 3.x application working with an ODBC 2.x driver 
+        or by an ODBC 2.x application working with an ODBC 3.x 
+        driver.)
+    */    
+    pdesrecord = new MYODBCResRecAPD( this );
+    pdesrecord->nConciseType            = SQL_BINARY;
+    pdesrecord->nType                   = SQL_BINARY;
+    pdesrecord->nDatetimeIntervalCode   = 0;
 }
 
-SQLRETURN MYODBCDesAPD::setRowsProcessedPtr( SQLUINTEGER *pnRowsProcessedPtr )
+SQLRETURN MYODBCDesAPD::setDescRec( SQLSMALLINT nRecNumber, SQLSMALLINT nType,
SQLSMALLINT nSubType, SQLINTEGER nLength, SQLSMALLINT nPrecision, SQLSMALLINT nScale,
SQLPOINTER pDataPtr, SQLINTEGER *pnStringLengthPtr, SQLINTEGER *pnIndicatorPtr )
 {
-    if ( pdia )
-        pdia->doAppend( MYODBC_DIA_01000, 0, tr("Setting SQL_DESC_ROWS_PROCESSED_PTR
is not relevant in this context.") );
+    MYODBCDbgEnter();
 
-    this->pnRowsProcessedPtr = pnRowsProcessedPtr;
+    /*
+        \internal ODBC Rule
 
-    return SQL_SUCCESS_WITH_INFO;
+        This argument must be equal to or greater than 0.
+    */
+    if ( nRecNumber < 0 )
+        MYODBCDbgReturn( dia.doAppend( MYODBC_DIA_07009, 0, NULL ) );
+
+    /*
+        \internal ODBC Rule
+
+        The RecNumber argument was greater than the maximum number of columns 
+        or parameters that the data source can support, and the DescriptorHandle 
+        argument was an APD, IPD, or ARD.
+    */
+
+    /* do nothing: we have not max so ignore this rule  */
+
+    /*
+        \internal ODBC Rule
+
+        The RecNumber argument was equal to 0, and the DescriptorHandle argument 
+        referred to an implicitly allocated APD. (This error does not occur with 
+        an explicitly allocated application descriptor because it is not known 
+        whether an explicitly allocated application descriptor is an APD or ARD 
+        until execute time.)
+    */
+    if ( nRecNumber == 0 getAllocType() == SQL_DESC_ALLOC_AUTO )
+        MYODBCDbgReturn( dia.doAppend( MYODBC_DIA_07009, 0, NULL ) );
+
+    /* 
+        Append record as needed to make nRecNumber valid.
+    */
+    if ( nRecNumber >= getCount()  )
+    {
+        nReturn = setCount( nRecNumber, true );
+        if ( !SQL_SUCCEEDED( nReturn ) )
+            MYODBCDbgReturn( nReturn );
+    }
+
+    /* set record */
+    MYODBCDbgReturn( listRecords[nRecord]->setDescRec( nType, nSubType, nLength,
nPrecision, nScale, pDataPtr, pnStringLengthPtr, pnIndicatorPtr );
 }
 
-SQLUINTEGER *MYODBCDesAPD::getRowsProcessedPtr()
+SQLRETURN MYODBCDesAPD::setDescField( SQLSMALLINT nRecNumber, SQLSMALLINT
nFieldIdentifier, SQLPOINTER pValuePtr, SQLINTEGER nBufferLength )
 {
-    if ( pdia )
-        pdia->doAppend( MYODBC_DIA_01000, 0, tr("Getting SQL_DESC_ROWS_PROCESSED_PTR
is not relevant in this context.") );
+    MYODBCDbgEnter();
 
-    return pnRowsProcessedPtr;
+    /* header field? */
+    switch ( nFieldIdentifier )
+    {
+        case SQL_DESC_ALLOC_TYPE:
+            /*!
+                \internal ODBC Rule
+
+                ARD: R
+                APD: R
+                IRD: R
+                IPD: R
+            */
+            MYODBCDbgReturn( dia.doAppend( MYODBC_DIA_HY091, 0, NULL ) );
+
+        case SQL_DESC_ARRAY_SIZE:
+            /*!
+                \internal ODBC Rule
+
+                ARD: R/W
+                APD: R/W
+                IRD: Unused
+                IPD: Unused
+            */
+            MYODBCDbgReturn( setArraySize( (SQLUINTEGER)pValuePtr ) );
+
+        case SQL_DESC_ARRAY_STATUS_PTR:
+            /*!
+                \internal ODBC Rule
+
+                ARD: R/W
+                APD: R/W
+                IRD: R/W
+                IPD: R/W          
+            */    
+            MYODBCDbgReturn( setArrayStatusPtr( (SQLUSMALLINT*)pValuePtr ) );
+
+        case SQL_DESC_BIND_OFFSET_PTR:
+            /*! 
+                \internal ODBC Rule
+
+                ARD: R/W
+                APD: R/W
+                IRD: Unused
+                IPD: Unused
+            */
+            MYODBCDbgReturn( setBindOffsetPtr( (SQLUINTEGER*)pValuePtr ) );
+
+        case SQL_DESC_BIND_TYPE:
+            /*!
+                \internal ODBC Rule
+
+                ARD: R/W
+                APD: R/W
+                IRD: Unused
+                IPD: Unused
+            */
+
+            /*
+                An SQLUINTEGER value that sets the binding orientation to be used when 
+                SQLFetch or SQLFetchScroll is called on the associated statement. 
+                Column-wise binding is selected by setting the value 
+                to SQL_BIND_BY_COLUMN (0). Row-wise binding is selected by setting the 
+                value to the length of a structure or an instance of a buffer into 
+                which result columns will be bound.
+            */
+
+            /*!
+                \internal MYODBC Rule
+
+                Sanity check. Value must >=0
+            */
+            if ( (SQLINTEGER)pValuePtr < 0 )
+                MYODBCDbgReturn( dia.doAppend( MYODBC_DIA_HY000, 0, "Value must be >=
0." ) );
+
+            MYODBCDbgReturn( setBindType( (SQLINTEGER)pValuePtr) );
+
+        case SQL_DESC_COUNT:
+            /*!
+                \internal ODBC Rule
+
+                ARD: R/W
+                APD: R/W
+                IRD: R
+                IPD: R/W
+            */
+            /*!
+                \internal ODBC Rule
+
+                The FieldIdentifier argument was SQL_DESC_COUNT, and *ValuePtr argument
was 
+                less than 0.
+            */
+            if ( (SQLINTEGER)pValuePtr < 0 )
+                MYODBCDbgReturn( dia.doAppend(  MYODBC_DIA_HY000, 0, "Set SQL_DESC_COUNT
failed. Value must be >=0." ) );
+
+            /* expand/shrink record list; free, even, bound records as needed */
+            MYODBCDbgReturn( setCount( (SQLINTEGER)pValuePtr, true ) );
+
+        case SQL_DESC_ROWS_PROCESSED_PTR:
+            /*!
+                \internal ODBC Rule
+
+                ARD: Unused
+                APD: Unused
+                IRD: R/W
+                IPD: R/W          
+            */    
+            MYODBCDbgReturn( dia.doAppend( MYODBC_DIA_HY091, 0, NULL ) );
+    } /* switch (for header fields) */
+
+    /* record field needs a valid record */
+    if ( nRecord < 0 || nRecord >= listRecords.count() )
+        MYODBCDbgReturn( dia.doAppend( MYODBC_DIA_07009, 0, NULL ) );
+
+    /* handle as record field */
+    MYODBCDbgReturn( listRecords[nRecord]->setDescField( nFieldIdentifier, pValuePtr,
nBufferLength ) );
 }
 
+
+
+/*!
+    \brief  Expands or shrinks list of records.
+            
+            Expands or shrinks list of records while trying to account for some
+            rules stated in the ODBC spec in regard to maintaining the records list.
+
+    \param  pDes        any type of descriptor
+    \param  nCount      the desired value for SQL_DESC_COUNT (0-n), records appended 
+                        or truncated as needed
+    \param  bUnbind     - True  - is ok to truncate records which are bound
+                        - False - never truncate a bound record (in this case num-recs 
+                        could be > count)
+    \return MYODBC_C_BOOL
+
+    \retval MYODBC_C_TRUE   success (its possible to have success but count < 
+                            SQL_DESC_COUNT)
+    \retval MYODBC_C_FALSE  failed
+*/
+SQLRETURN MYODBCDesAPD::setCount( SQLSMALLINT nCount, bool bUnbind )
+{
+    MYODBCDbgEnter();
+
+    /* We should always have a bookmark record at index 0. */
+    if ( nCount < 0 )
+        MYODBCDbgReturn( dia.doAppend( MYODBC_DIA_07009, 0, NULL ) );
+
+    /* append */
+    while ( nCount > listRecords.count() )
+    {
+        new MYODBCResRecAPD( this );
+    }
+
+    /* truncate */
+    while ( listRecords.count() > nCount )
+    {
+        /* do not delete bound records */
+        if ( listRecords.last()->getDataPtr() )
+            break;
+
+        delete listRecords.last();
+    }
+
+    MYODBCDbgReturn( SQL_SUCCESS );
+}
+
+

Modified: MYODBCDes/MYODBCDesLib/MYODBCDesInternal.h
===================================================================
--- MYODBCDes/MYODBCDesLib/MYODBCDesInternal.h	2006-01-03 03:47:25 UTC (rev 24)
+++ MYODBCDes/MYODBCDesLib/MYODBCDesInternal.h	2006-01-03 08:52:27 UTC (rev 25)
@@ -2,13 +2,11 @@
 #define MYODBC_DES_INTERNAL_H
 
 #include "../include/MYODBCDes.h"
-#include "MYODBCDesRecordAPD.h"
-#include "MYODBCDesRecordARD.h"
-#include "MYODBCDesRecordIPD.h"
-#include "MYODBCDesRecordIRD.h"
+#include "MYODBCDesRecAPD.h"
+#include "MYODBCDesRecARD.h"
+#include "MYODBCDesRecIPD.h"
+#include "MYODBCDesRecIRD.h"
 
-
-
 #endif
 
 

Modified: MYODBCDes/MYODBCDesLib/MYODBCDesLib.vpj
===================================================================
--- MYODBCDes/MYODBCDesLib/MYODBCDesLib.vpj	2006-01-03 03:47:25 UTC (rev 24)
+++ MYODBCDes/MYODBCDesLib/MYODBCDesLib.vpj	2006-01-03 08:52:27 UTC (rev 25)
@@ -195,6 +195,7 @@
 			<F N="MYODBCDesIPD.cpp"/>
 			<F N="MYODBCDesIRD.cpp"/>
 			<F N="MYODBCDesMorph.c"/>
+			<F N="MYODBCDesRec.cpp"/>
 			<F N="MYODBCDesRecAlloc.c"/>
 			<F N="MYODBCDesRecAllocExt.c"/>
 			<F N="MYODBCDesRecClear.c"/>
@@ -209,7 +210,6 @@
 			<F N="MYODBCDesRecIrdInteger.c"/>
 			<F N="MYODBCDesRecIrdSmallInt.c"/>
 			<F N="MYODBCDesRecIrdVarChar.c"/>
-			<F N="MYODBCDesRecord.cpp"/>
 			<F N="MYODBCDesRecSetFreeExtra.c"/>
 			<F N="MYODBCDesRecsFree.c"/>
 			<F N="MYODBCDesRecType.c"/>
@@ -222,7 +222,11 @@
 			Name="Header Files"
 			Filters="*.h;*.H;*.hh;*.hpp;*.hxx;*.inc;*.sh;*.cpy;*.if">
 			<F N="MYODBCDesInternal.h"/>
-			<F N="MYODBCDesRecord.h"/>
+			<F N="MYODBCDesRec.h"/>
+			<F N="MYODBCDesRecAPD.h"/>
+			<F N="MYODBCDesRecARD.h"/>
+			<F N="MYODBCDesRecIPD.h"/>
+			<F N="MYODBCDesRecIRD.h"/>
 		</Folder>
 		<Folder
 			Name="Resource Files"

Copied: MYODBCDes/MYODBCDesLib/MYODBCDesRec.cpp (from rev 24,
MYODBCDes/MYODBCDesLib/MYODBCDesRecord.cpp)
===================================================================
--- MYODBCDes/MYODBCDesLib/MYODBCDesRecord.cpp	2006-01-03 03:47:25 UTC (rev 24)
+++ MYODBCDes/MYODBCDesLib/MYODBCDesRec.cpp	2006-01-03 08:52:27 UTC (rev 25)
@@ -0,0 +1,628 @@
+#include "MYODBCDesInternal.h"
+
+/*!
+    \brief  Allocate a descriptor record.
+    
+            Allocate a descriptor record. This may include some initialization
+            based upon the type requested.
+
+    \param  nType   Descriptor type.
+
+    \return MYODBC_DES_REC_PTR
+    
+    \sa     MYODBCDesRecFree
+*/    
+MYODBCResRec::MYODBCResRec( MYODBCDes *pdes )
+{
+    MYODBCDbgEnter();
+
+    Q_ASSERT( !pdes );
+
+    pdes->listRecords.append( this );
+
+    MYODBCDbgReturn2();
+}
+
+/*!
+    \brief  Frees all resources used by record.
+
+            Removes the nRecord from pDess array of records and
+            then frees the resources used by the record including the 
+            record itself.
+
+    \param  pDes A viable MYODBC_DES_PTR.
+    \param  nRecord     0 based
+
+    \return void
+
+    \sa     MYODBCDesRecAllocExt    
+*/
+MYODBCResRec::~MYODBCResRec()
+{
+    MYODBCDbgEnter();
+
+    pdes->listRecords.removeAll( this );
+
+    MYODBCDbgReturn2();
+}
+
+SQLRETURN MYODBCResRec::setAutoUniqueValue( SQLINTEGER nAutoUniqueValue )
+{
+    MYODBCDbgEnter();
+
+    this->nAutoUniqueValue = nAutoUniqueValue;
+
+    MYODBCDbgReturn( SQL_SUCCESS );
+}
+
+SQLRETURN MYODBCResRec::setBaseColumnName( const QString &stringBaseColumnName )
+{
+    MYODBCDbgEnter();
+
+    this->stringBaseColumnName = stringBaseColumnName;
+
+    MYODBCDbgReturn( SQL_SUCCESS );
+}
+
+SQLRETURN MYODBCResRec::setBaseTableName( const QString &stringBaseTableName )
+{
+    MYODBCDbgEnter();
+
+    this->stringBaseTableName = stringBaseTableName;
+
+    MYODBCDbgReturn( SQL_SUCCESS );
+}
+
+SQLRETURN MYODBCResRec::setCaseSensitive( SQLINTEGER nCaseSensitive )
+{
+    MYODBCDbgEnter();
+
+    this->nCaseSensitive = nCaseSensitive;
+
+    MYODBCDbgReturn( SQL_SUCCESS );
+}
+
+SQLRETURN MYODBCResRec::setCatalogName( const QString &stringCatalogName )
+{
+    MYODBCDbgEnter();
+
+    this->stringCatalogName = stringCatalogName;
+
+    MYODBCDbgReturn( SQL_SUCCESS );
+}
+
+SQLRETURN MYODBCResRec::setConciseType( SQLSMALLINT nConciseType )
+{
+    MYODBCDbgEnter();
+
+    this->nConciseType = nConciseType;
+
+    MYODBCDbgReturn( SQL_SUCCESS );
+}
+
+SQLRETURN MYODBCResRec::setDataPtr( SQLPOINTER pDataPtr ) 
+{
+    MYODBCDbgEnter();
+
+    this->pDataPtr = pDataPtr;
+
+    MYODBCDbgReturn( SQL_SUCCESS );
+}
+
+SQLRETURN MYODBCResRec::setDatetimeIntervalCode( SQLSMALLINT nDatetimeIntervalCode )
+{
+    MYODBCDbgEnter();
+
+    this->nDatetimeIntervalCode = nDatetimeIntervalCode;
+
+    MYODBCDbgReturn( SQL_SUCCESS );
+}
+
+SQLRETURN MYODBCResRec::setDatetimeIntervalPrecision( SQLINTEGER
nDatetimeIntervalPrecision )
+{
+    MYODBCDbgEnter();
+
+    this->nDatetimeIntervalPrecision = nDatetimeIntervalPrecision;
+
+    MYODBCDbgReturn( SQL_SUCCESS );
+}
+
+SQLRETURN MYODBCResRec::setDisplaySize( SQLINTEGER nDisplaySize ) 
+{
+    MYODBCDbgEnter();
+
+    this->nDisplaySize = nDisplaySize;
+
+    MYODBCDbgReturn( SQL_SUCCESS );
+}
+
+SQLRETURN MYODBCResRec::setFixedPrecScale( SQLSMALLINT nFixedPrecScale )
+{
+    MYODBCDbgEnter();
+
+    this->nFixedPrecScale = nFixedPrecScale;
+
+    MYODBCDbgReturn( SQL_SUCCESS );
+}
+
+SQLRETURN MYODBCResRec::setIndicatorPtr( SQLINTEGER *pnIndicatorPtr )
+{
+    MYODBCDbgEnter();
+
+    this->pnIndicatorPtr = pnIndicatorPtr;
+
+    MYODBCDbgReturn( SQL_SUCCESS );
+}
+
+SQLRETURN MYODBCResRec::setLabel( const QString &stringLabel )
+{
+    MYODBCDbgEnter();
+
+    this->stringLabel = stringLabel;
+
+    MYODBCDbgReturn( SQL_SUCCESS );
+}
+
+SQLRETURN MYODBCResRec::setLength( SQLUINTEGER nLength )
+{
+    MYODBCDbgEnter();
+
+    this->nLength = nLength;
+
+    MYODBCDbgReturn( SQL_SUCCESS );
+}
+
+SQLRETURN MYODBCResRec::setLiteralPrefix( const QString &stringLiteralPrefix )
+{
+    MYODBCDbgEnter();
+
+    this->stringLiteralPrefix = stringLiteralPrefix;
+
+    MYODBCDbgReturn( SQL_SUCCESS );
+}
+
+SQLRETURN MYODBCResRec::setLiteralSuffix( const QString &stringLiteralSuffix )
+{
+    MYODBCDbgEnter();
+
+    this->stringLiteralSuffix = stringLiteralSuffix;
+
+    MYODBCDbgReturn( SQL_SUCCESS );
+}
+
+SQLRETURN MYODBCResRec::setLocalTypeName( const QString &stringLocalTypeName )
+{
+    MYODBCDbgEnter();
+
+    this->stringLocalTypeName = stringLocalTypeName;
+
+    MYODBCDbgReturn( SQL_SUCCESS );
+}
+
+SQLRETURN MYODBCResRec::setName( const QString &stringName )
+{
+    MYODBCDbgEnter();
+
+    this->stringName = stringName;
+
+    MYODBCDbgReturn( SQL_SUCCESS );
+}
+
+SQLRETURN MYODBCResRec::setNullable( SQLSMALLINT nNullable )
+{
+    MYODBCDbgEnter();
+
+    this->nNullable = nNullable;
+
+    MYODBCDbgReturn( SQL_SUCCESS );
+}
+
+SQLRETURN MYODBCResRec::setNumPrecRadix( SQLINTEGER nNumPrecRadix )
+{
+    MYODBCDbgEnter();
+
+    this->nNumPrecRadix = nNumPrecRadix;
+
+    MYODBCDbgReturn( SQL_SUCCESS );
+}
+
+SQLRETURN MYODBCResRec::setOctetLength( SQLINTEGER nOctetLength )
+{
+    MYODBCDbgEnter();
+
+    this->nOctetLength = nOctetLength;
+
+    MYODBCDbgReturn( SQL_SUCCESS );
+}
+
+SQLRETURN MYODBCResRec::setOctetLengthPtr( SQLINTEGER *pnOctetLengthPtr )
+{
+    MYODBCDbgEnter();
+
+    this->pnOctetLengthPtr = pnOctetLengthPtr;
+
+    MYODBCDbgReturn( SQL_SUCCESS );
+}
+
+SQLRETURN MYODBCResRec::setParamterType( SQLSMALLINT nParamterType )
+{
+    MYODBCDbgEnter();
+
+    this->nParamterType = nParamterType;
+
+    MYODBCDbgReturn( SQL_SUCCESS );
+}
+
+SQLRETURN MYODBCResRec::setPrecision( SQLSMALLINT nPrecision )
+{
+    MYODBCDbgEnter();
+
+    this->nPrecision = nPrecision;
+
+    MYODBCDbgReturn( SQL_SUCCESS );
+}
+
+SQLRETURN MYODBCResRec::setRowver( SQLSMALLINT nRowver )
+{
+    MYODBCDbgEnter();
+
+    this->nRowver = nRowver;
+
+    MYODBCDbgReturn( SQL_SUCCESS );
+}
+
+SQLRETURN MYODBCResRec::setScale( SQLSMALLINT nScale )
+{
+    MYODBCDbgEnter();
+
+    this->nScale = nScale;
+
+    MYODBCDbgReturn( SQL_SUCCESS );
+}
+
+SQLRETURN MYODBCResRec::setSchemaName( const QString &stringSchemaName )
+{
+    MYODBCDbgEnter();
+
+    this->stringSchemaName = stringSchemaName;
+
+    MYODBCDbgReturn( SQL_SUCCESS );
+}
+
+SQLRETURN MYODBCResRec::setSearchable( SQLSMALLINT nSearchable )
+{
+    MYODBCDbgEnter();
+
+    this->nSearchable = nSearchable;
+
+    MYODBCDbgReturn( SQL_SUCCESS );
+}
+
+SQLRETURN MYODBCResRec::setTableName( const QString &stringTableName )
+{
+    MYODBCDbgEnter();
+
+    this->stringTableName = stringTableName;
+
+    MYODBCDbgReturn( SQL_SUCCESS );
+}
+
+SQLRETURN MYODBCResRec::setType( SQLSMALLINT nType )
+{
+    MYODBCDbgEnter();
+
+    this->nType = nType;
+
+    MYODBCDbgReturn( SQL_SUCCESS );
+}
+
+SQLRETURN MYODBCResRec::setTypeName( const QString &stringTypeName )
+{
+    MYODBCDbgEnter();
+
+    this->stringTypeName = stringTypeName;
+
+    MYODBCDbgReturn( SQL_SUCCESS );
+}
+
+SQLRETURN MYODBCResRec::setUnnamed( SQLSMALLINT nUnnamed )
+{
+    MYODBCDbgEnter();
+
+    this->nUnnamed = nUnnamed;
+
+    MYODBCDbgReturn( SQL_SUCCESS );
+}
+
+SQLRETURN MYODBCResRec::setUnsigned( SQLSMALLINT nUnsigned )
+{
+    MYODBCDbgEnter();
+
+    this->nUnsigned = nUnsigned;
+
+    MYODBCDbgReturn( SQL_SUCCESS );
+}
+
+SQLRETURN MYODBCResRec::setUpdatable( SQLSMALLINT nUpdatable )
+{
+    MYODBCDbgEnter();
+
+    this->nUpdatable = nUpdatable;
+
+    MYODBCDbgReturn( SQL_SUCCESS );
+}
+
+SQLINTEGER  MYODBCResRec::getAutoUniqueValue()
+{
+    MYODBCDbgEnter();
+
+    MYODBCDbgReturn3( nAutoUniqueValue );
+}
+
+QString     MYODBCResRec::getBaseColumnName()
+{
+    MYODBCDbgEnter();
+
+    MYODBCDbgReturn3( stringBaseColumnName );
+}
+
+QString     MYODBCResRec::getBaseTableName()
+{
+    MYODBCDbgEnter();
+
+    MYODBCDbgReturn3( stringBaseTableName );
+}
+
+SQLINTEGER  MYODBCResRec::getCaseSensitive()
+{
+    MYODBCDbgEnter();
+
+    MYODBCDbgReturn3( nCaseSensitive );
+}
+
+QString     MYODBCResRec::getCatalogName()
+{
+    MYODBCDbgEnter();
+
+    MYODBCDbgReturn3( stringCatalogName );
+}
+
+SQLSMALLINT MYODBCResRec::getConciseType()
+{
+    MYODBCDbgEnter();
+
+    MYODBCDbgReturn3( nConciseType );
+}
+
+SQLPOINTER  MYODBCResRec::getDataPtr()
+{
+    MYODBCDbgEnter();
+
+    MYODBCDbgReturn3( pDataPtr );
+}
+
+SQLSMALLINT MYODBCResRec::getDatetimeIntervalCode()
+{
+    MYODBCDbgEnter();
+
+    MYODBCDbgReturn3( nDatetimeIntervalCode );
+}
+
+SQLINTEGER  MYODBCResRec::getDatetimeIntervalPrecision()
+{
+    MYODBCDbgEnter();
+
+    MYODBCDbgReturn3( nDatetimeIntervalPrecision );
+}
+
+SQLINTEGER  MYODBCResRec::getDisplaySize() 
+{
+    MYODBCDbgEnter();
+
+    MYODBCDbgReturn3( nDisplaySize );
+}
+
+SQLSMALLINT MYODBCResRec::getFixedPrecScale()
+{
+    MYODBCDbgEnter();
+
+    MYODBCDbgReturn3( nFixedPrecScale );
+}
+
+SQLINTEGER *MYODBCResRec::getIndicatorPtr()
+{
+    MYODBCDbgEnter();
+
+    MYODBCDbgReturn3( pnIndicatorPtr );
+}
+
+QString     MYODBCResRec::getLabel()
+{
+    MYODBCDbgEnter();
+
+    MYODBCDbgReturn3( stringLabel );
+}
+
+SQLUINTEGER MYODBCResRec::getLength()
+{
+    MYODBCDbgEnter();
+
+    MYODBCDbgReturn3( nLength );
+}
+
+QString     MYODBCResRec::getLiteralPrefix()
+{
+    MYODBCDbgEnter();
+
+    MYODBCDbgReturn3( stringLiteralPrefix );
+}
+
+QString     MYODBCResRec::getLiteralSuffix()
+{
+    MYODBCDbgEnter();
+
+    MYODBCDbgReturn3( stringLiteralSuffix );
+}
+
+QString     MYODBCResRec::getLocalTypeName()
+{
+    MYODBCDbgEnter();
+
+    MYODBCDbgReturn3( stringLocalTypeName );
+}
+
+QString     MYODBCResRec::getName()
+{
+    MYODBCDbgEnter();
+
+    MYODBCDbgReturn3( stringName );
+}
+
+SQLSMALLINT MYODBCResRec::getNullable()
+{
+    MYODBCDbgEnter();
+
+    MYODBCDbgReturn3( nNullable );
+}
+
+SQLINTEGER  MYODBCResRec::getNumPrecRadix()
+{
+    MYODBCDbgEnter();
+
+    MYODBCDbgReturn3( nNumPrecRadix );
+}
+
+SQLINTEGER  MYODBCResRec::getOctetLength()
+{
+    MYODBCDbgEnter();
+
+    MYODBCDbgReturn3( nOctetLength );
+}
+
+SQLINTEGER *MYODBCResRec::getOctetLengthPtr()
+{
+    MYODBCDbgEnter();
+
+    MYODBCDbgReturn3( pnOctetLengthPtr );
+}
+
+SQLSMALLINT MYODBCResRec::getParamterType()
+{
+    MYODBCDbgEnter();
+
+    MYODBCDbgReturn3( nParamterType );
+}
+
+SQLSMALLINT MYODBCResRec::getPrecision()
+{
+    MYODBCDbgEnter();
+
+    MYODBCDbgReturn3( nPrecision );
+}
+
+SQLSMALLINT MYODBCResRec::getRowver()
+{
+    MYODBCDbgEnter();
+
+    MYODBCDbgReturn3( nRowver );
+}
+
+SQLSMALLINT MYODBCResRec::getScale()
+{
+    MYODBCDbgEnter();
+
+    MYODBCDbgReturn3( nScale );
+}
+
+QString     MYODBCResRec::getSchemaName()
+{
+    MYODBCDbgEnter();
+
+    MYODBCDbgReturn3( stringSchemaName );
+}
+
+SQLSMALLINT MYODBCResRec::getSearchable()
+{
+    MYODBCDbgEnter();
+
+    MYODBCDbgReturn3( nSearchable );
+}
+
+QString     MYODBCResRec::getTableName()
+{
+    MYODBCDbgEnter();
+
+    MYODBCDbgReturn3( stringTableName );
+}
+
+SQLSMALLINT MYODBCResRec::getType()
+{
+    MYODBCDbgEnter();
+
+    MYODBCDbgReturn3( nType );
+}
+
+QString     MYODBCResRec::getTypeName()
+{
+    MYODBCDbgEnter();
+
+    MYODBCDbgReturn3( stringTypeName );
+}
+
+SQLSMALLINT MYODBCResRec::getUnnamed()
+{
+    MYODBCDbgEnter();
+
+    MYODBCDbgReturn3( nUnnamed );
+}
+
+SQLSMALLINT MYODBCResRec::getUnsigned()
+{
+    MYODBCDbgEnter();
+
+    MYODBCDbgReturn3( nUnsigned );
+}
+
+SQLSMALLINT MYODBCResRec::getUpdatable()
+{
+    MYODBCDbgEnter();
+
+    MYODBCDbgReturn3( nUpdatable );
+}
+
+
+SQLRETURN MYODBCResRec::setIntervalCode( SQLSMALLINT nDateTimeIntervalCode )
+{
+    MYODBCDbgEnter();
+
+    /*
+        \internal ODBC Rule
+
+        This SQLSMALLINT record field contains the subcode for the specific datetime 
+        or interval data type when the SQL_DESC_TYPE field is SQL_DATETIME or 
+        SQL_INTERVAL.
+    */      
+    if ( getType() != SQL_DATETIME && getType() != SQL_INTERVAL )
+        MYODBCDbgReturn( pdes->dia.doAppend( MYODBC_DIA_HY092, 0, NULL ) );
+
+    switch ( nDateTimeIntervalCode )
+    {
+        case SQL_CODE_YEAR:                     /* = 1 = SQL_CODE_DATE      */
+        case SQL_CODE_MONTH:                    /* = 2 = SQL_CODE_TIME      */
+        case SQL_CODE_DAY:                      /* = 3 = SQL_CODE_TIMESTAMP */
+        case SQL_CODE_HOUR:
+        case SQL_CODE_MINUTE:
+        case SQL_CODE_SECOND:
+        case SQL_CODE_YEAR_TO_MONTH:
+        case SQL_CODE_DAY_TO_HOUR:
+        case SQL_CODE_DAY_TO_MINUTE:
+        case SQL_CODE_DAY_TO_SECOND:
+        case SQL_CODE_HOUR_TO_MINUTE:
+        case SQL_CODE_HOUR_TO_SECOND:
+        case SQL_CODE_MINUTE_TO_SECOND:
+            MYODBCDbgReturn( setDatetimeIntervalCode( nDateTimeIntervalCode ) );
+    }
+
+    return MYODBCDbgReturn( pdes->dia.doAppend( MYODBC_DIA_HY092, 0, NULL ) );
+}
+

Copied: MYODBCDes/MYODBCDesLib/MYODBCDesRec.h (from rev 24,
MYODBCDes/MYODBCDesLib/MYODBCDesRecord.h)
===================================================================
--- MYODBCDes/MYODBCDesLib/MYODBCDesRecord.h	2006-01-03 03:47:25 UTC (rev 24)
+++ MYODBCDes/MYODBCDesLib/MYODBCDesRec.h	2006-01-03 08:52:27 UTC (rev 25)
@@ -0,0 +1,162 @@
+#ifndef MYODBC_DES_REC_H
+#define MYODBC_DES_REC_H
+
+/*!
+    \brief  Descriptor records represent different things depending
+            upon the type of descriptor;
+    
+            APD - one record for each buffer bound to a paramter marker
+            IPD - one record for each paramter marker
+            ARD - one record for each buffer bound to a column
+            IRD - one record for each column
+            
+            This structure reflects *all* fields given in the ODBC 
+            specification. However; some fields may be calculated or
+            not used when part of a particular descriptor type.
+            
+            In particular; the read-only fields can, in some cases, be 
+            optimized away.
+            
+            All fields are included for completeness and to help make 
+            the code more understandable. Any storage which can be 
+            optimized away would be very minimal so please leave all.
+
+    \sa     MYODBC_DES
+*/
+
+/* forward declare */
+class MYODBCDes;
+
+class MYODBCResRec
+{
+public:
+    MYODBCResRec( MYODBCDes *pdes );
+    ~MYODBCResRec();
+
+    /* setters */
+    virtual SQLRETURN setDescRec( SQLSMALLINT nType, SQLSMALLINT nSubType, SQLINTEGER
nLength, SQLSMALLINT nPrecision, SQLSMALLINT nScale, SQLPOINTER pDataPtr, SQLINTEGER
*pnStringLengthPtr, SQLINTEGER *pnIndicatorPtr ) = 0;
+    virtual SQLRETURN setDescField( SQLSMALLINT nFieldIdentifier, SQLPOINTER pValuePtr,
SQLINTEGER nBufferLength ) = 0;
+
+    virtual SQLRETURN setAutoUniqueValue( SQLINTEGER nAutoUniqueValue );
+    virtual SQLRETURN setBaseColumnName( const QString &stringBaseColumnName );
+    virtual SQLRETURN setBaseTableName( const QString &stringBaseTableName );
+    virtual SQLRETURN setCaseSensitive( SQLINTEGER nCaseSensitive );
+    virtual SQLRETURN setCatalogName( const QString &stringCatalogName );
+    virtual SQLRETURN setConciseType( SQLSMALLINT nConciseType );
+    virtual SQLRETURN setDataPtr( SQLPOINTER pDataPtr );
+    virtual SQLRETURN setDatetimeIntervalCode( SQLSMALLINT nDatetimeIntervalCode );
+    virtual SQLRETURN setDatetimeIntervalPrecision( SQLINTEGER nDatetimeIntervalPrecision
);
+    virtual SQLRETURN setDisplaySize( SQLINTEGER nDisplaySize );
+    virtual SQLRETURN setFixedPrecScale( SQLSMALLINT nFixedPrecScale );
+    virtual SQLRETURN setIndicatorPtr( SQLINTEGER *pnIndicatorPtr );
+    virtual SQLRETURN setLabel( const QString &stringLabel );
+    virtual SQLRETURN setLength( SQLUINTEGER nLength );
+    virtual SQLRETURN setLiteralPrefix( const QString &stringLiteralPrefix );
+    virtual SQLRETURN setLiteralSuffix( const QString &stringLiteralSuffix );
+    virtual SQLRETURN setLocalTypeName( const QString &stringLocalTypeName );
+    virtual SQLRETURN setName( const QString &stringName );
+    virtual SQLRETURN setNullable( SQLSMALLINT nNullable );
+    virtual SQLRETURN setNumPrecRadix( SQLINTEGER nNumPrecRadix );
+    virtual SQLRETURN setOctetLength( SQLINTEGER nOctetLength );
+    virtual SQLRETURN setOctetLengthPtr( SQLINTEGER *pnOctetLengthPtr );
+    virtual SQLRETURN setParamterType( SQLSMALLINT nParamterType );
+    virtual SQLRETURN setPrecision( SQLSMALLINT nPrecision );
+    virtual SQLRETURN setRowver( SQLSMALLINT nRowver );
+    virtual SQLRETURN setScale( SQLSMALLINT nScale );
+    virtual SQLRETURN setSchemaName( const QString &stringSchemaName );
+    virtual SQLRETURN setSearchable( SQLSMALLINT nSearchable );
+    virtual SQLRETURN setTableName( const QString &stringTableName );
+    virtual SQLRETURN setType( SQLSMALLINT nType );
+    virtual SQLRETURN setTypeName( const QString &stringTypeName );
+    virtual SQLRETURN setUnnamed( SQLSMALLINT nUnnamed );
+    virtual SQLRETURN setUnsigned( SQLSMALLINT nUnsigned );
+    virtual SQLRETURN setUpdatable( SQLSMALLINT nUpdatable );
+
+    /* getters */
+
+    /* ODBC validated */
+    virtual SQLRETURN getDescRec( SQLCHAR *pszName, SQLSMALLINT nBufferLength,
SQLSMALLINT *pnStringLengthPtr, SQLSMALLINT *pnTypePtr, SQLSMALLINT *pnSubTypePtr,
SQLINTEGER *pnLengthPtr, SQLSMALLINT *pnPrecisionPtr, SQLSMALLINT *pnScalePtr,
SQLSMALLINT *pnNullablePtr ) = 0;
+    virtual SQLRETURN getDescField( SQLSMALLINT nFieldIdentifier, SQLPOINTER pValuePtr,
SQLINTEGER nBufferLength, SQLINTEGER *pnStringLengthPtr ) = 0;
+
+    /* record fields */
+    virtual SQLINTEGER  getAutoUniqueValue();
+    virtual QString     getBaseColumnName();
+    virtual QString     getBaseTableName();
+    virtual SQLINTEGER  getCaseSensitive();
+    virtual QString     getCatalogName();
+    virtual SQLSMALLINT getConciseType();
+    virtual SQLPOINTER  getDataPtr();                      
+    virtual SQLSMALLINT getDatetimeIntervalCode();
+    virtual SQLINTEGER  getDatetimeIntervalPrecision();
+    virtual SQLINTEGER  getDisplaySize();
+    virtual SQLSMALLINT getFixedPrecScale();
+    virtual SQLINTEGER *getIndicatorPtr();
+    virtual QString     getLabel();
+    virtual SQLUINTEGER getLength();
+    virtual QString     getLiteralPrefix();
+    virtual QString     getLiteralSuffix();
+    virtual QString     getLocalTypeName();
+    virtual QString     getName();
+    virtual SQLSMALLINT getNullable();
+    virtual SQLINTEGER  getNumPrecRadix();
+    virtual SQLINTEGER  getOctetLength();
+    virtual SQLINTEGER *getOctetLengthPtr();
+    virtual SQLSMALLINT getParamterType();
+    virtual SQLSMALLINT getPrecision();
+    virtual SQLSMALLINT getRowver();
+    virtual SQLSMALLINT getScale();
+    virtual QString     getSchemaName();
+    virtual SQLSMALLINT getSearchable();
+    virtual QString     getTableName();
+    virtual SQLSMALLINT getType();
+    virtual QString     getTypeName();
+    virtual SQLSMALLINT getUnnamed();
+    virtual SQLSMALLINT getUnsigned();
+    virtual SQLSMALLINT getUpdatable();
+
+protected:
+    MYODBCDes * pdes;                           /* parent & owner */
+
+    /* some of these 'fields' will be calculated and not stored in the future */
+    /* these 'fields' are named as per odbc spec to make xref easier */
+    SQLINTEGER  nAutoUniqueValue;
+    QString     stringBaseColumnName;
+    QString     stringBaseTableName;
+    SQLINTEGER  nCaseSensitive;
+    QString     stringCatalogName;
+    SQLSMALLINT nConciseType;
+    SQLPOINTER  pDataPtr;                      /*!< IF null THEN unbound ELSE bound   
      */
+    SQLSMALLINT nDatetimeIntervalCode;
+    SQLINTEGER  nDatetimeIntervalPrecision;
+    SQLINTEGER  nDisplaySize;                    /*! calculated?     */
+    SQLSMALLINT nFixedPrecScale;
+    SQLINTEGER *pnIndicatorPtr;
+    QString     stringLabel;
+    SQLUINTEGER nLength;
+    QString     stringLiteralPrefix;
+    QString     stringLiteralSuffix;
+    QString     stringLocalTypeName;
+    QString     stringName;
+    SQLSMALLINT nNullable;
+    SQLINTEGER  nNumPrecRadix;
+    SQLINTEGER  nOctetLength;
+    SQLINTEGER *pnOctetLengthPtr;
+    SQLSMALLINT nParamterType;
+    SQLSMALLINT nPrecision;
+    SQLSMALLINT nRowver;
+    SQLSMALLINT nScale;
+    QString     stringSchemaName;
+    SQLSMALLINT nSearchable;
+    QString     stringTableName;
+    SQLSMALLINT nType;
+    QString     stringTypeName;
+    SQLSMALLINT nUnnamed;
+    SQLSMALLINT nUnsigned;
+    SQLSMALLINT nUpdatable;
+
+    /* supports setDescRec and/or setDescField */
+    virtual SQLRETURN setIntervalCode( SQLSMALLINT nDateTimeIntervalCode );
+};
+
+#endif
+

Added: MYODBCDes/MYODBCDesLib/MYODBCDesRecAPD.h
===================================================================
--- MYODBCDes/MYODBCDesLib/MYODBCDesRecAPD.h	2006-01-03 03:47:25 UTC (rev 24)
+++ MYODBCDes/MYODBCDesLib/MYODBCDesRecAPD.h	2006-01-03 08:52:27 UTC (rev 25)
@@ -0,0 +1,22 @@
+#ifndef MYODBC_DES_REC_APD_H
+#define MYODBC_DES_REC_APD_H
+
+class MYODBCDesAPD;
+
+class MYODBCDesRecAPD
+{
+public:
+    MYODBCDesRecAPD( MYODBCDesAPD *pdes );
+    ~MYODBCDesRecAPD();
+
+    /* setters */
+    virtual SQLRETURN setDescRec( SQLSMALLINT nType, SQLSMALLINT nSubType, SQLINTEGER
nLength, SQLSMALLINT nPrecision, SQLSMALLINT nScale, SQLPOINTER pDataPtr, SQLINTEGER
*pnStringLengthPtr, SQLINTEGER *pnIndicatorPtr );
+    virtual SQLRETURN setDescField( SQLSMALLINT nFieldIdentifier, SQLPOINTER pValuePtr,
SQLINTEGER nBufferLength );
+
+    /* getters */
+    virtual SQLRETURN getDescRec( SQLCHAR *pszName, SQLSMALLINT nBufferLength,
SQLSMALLINT *pnStringLengthPtr, SQLSMALLINT *pnTypePtr, SQLSMALLINT *pnSubTypePtr,
SQLINTEGER *pnLengthPtr, SQLSMALLINT *pnPrecisionPtr, SQLSMALLINT *pnScalePtr,
SQLSMALLINT *pnNullablePtr );
+    virtual SQLRETURN getDescField( SQLSMALLINT nFieldIdentifier, SQLPOINTER pValuePtr,
SQLINTEGER nBufferLength, SQLINTEGER *pnStringLengthPtr );
+};
+
+#endif
+

Added: MYODBCDes/MYODBCDesLib/MYODBCDesRecARD.h
===================================================================
--- MYODBCDes/MYODBCDesLib/MYODBCDesRecARD.h	2006-01-03 03:47:25 UTC (rev 24)
+++ MYODBCDes/MYODBCDesLib/MYODBCDesRecARD.h	2006-01-03 08:52:27 UTC (rev 25)
@@ -0,0 +1,22 @@
+#ifndef MYODBC_DES_REC_ARD_H
+#define MYODBC_DES_REC_ARD_H
+
+class MYODBCDesARD;
+
+class MYODBCDesRecARD
+{
+public:
+    MYODBCDesRecARD( MYODBCDesARD *pdes );
+    ~MYODBCDesRecARD();
+
+    /* setters */
+    virtual SQLRETURN setDescRec( SQLSMALLINT nType, SQLSMALLINT nSubType, SQLINTEGER
nLength, SQLSMALLINT nPrecision, SQLSMALLINT nScale, SQLPOINTER pDataPtr, SQLINTEGER
*pnStringLengthPtr, SQLINTEGER *pnIndicatorPtr );
+    virtual SQLRETURN setDescField( SQLSMALLINT nFieldIdentifier, SQLPOINTER pValuePtr,
SQLINTEGER nBufferLength );
+
+    /* getters */
+    virtual SQLRETURN getDescRec( SQLCHAR *pszName, SQLSMALLINT nBufferLength,
SQLSMALLINT *pnStringLengthPtr, SQLSMALLINT *pnTypePtr, SQLSMALLINT *pnSubTypePtr,
SQLINTEGER *pnLengthPtr, SQLSMALLINT *pnPrecisionPtr, SQLSMALLINT *pnScalePtr,
SQLSMALLINT *pnNullablePtr );
+    virtual SQLRETURN getDescField( SQLSMALLINT nFieldIdentifier, SQLPOINTER pValuePtr,
SQLINTEGER nBufferLength, SQLINTEGER *pnStringLengthPtr );
+};
+
+#endif
+

Added: MYODBCDes/MYODBCDesLib/MYODBCDesRecIPD.h
===================================================================
--- MYODBCDes/MYODBCDesLib/MYODBCDesRecIPD.h	2006-01-03 03:47:25 UTC (rev 24)
+++ MYODBCDes/MYODBCDesLib/MYODBCDesRecIPD.h	2006-01-03 08:52:27 UTC (rev 25)
@@ -0,0 +1,22 @@
+#ifndef MYODBC_DES_REC_IPD_H
+#define MYODBC_DES_REC_IPD_H
+
+class MYODBCDesIPD;
+
+class MYODBCDesRecIPD
+{
+public:
+    MYODBCDesRecIPD( MYODBCDesIPD *pdes );
+    ~MYODBCDesRecIPD();
+
+    /* setters */
+    virtual SQLRETURN setDescRec( SQLSMALLINT nType, SQLSMALLINT nSubType, SQLINTEGER
nLength, SQLSMALLINT nPrecision, SQLSMALLINT nScale, SQLPOINTER pDataPtr, SQLINTEGER
*pnStringLengthPtr, SQLINTEGER *pnIndicatorPtr );
+    virtual SQLRETURN setDescField( SQLSMALLINT nFieldIdentifier, SQLPOINTER pValuePtr,
SQLINTEGER nBufferLength );
+
+    /* getters */
+    virtual SQLRETURN getDescRec( SQLCHAR *pszName, SQLSMALLINT nBufferLength,
SQLSMALLINT *pnStringLengthPtr, SQLSMALLINT *pnTypePtr, SQLSMALLINT *pnSubTypePtr,
SQLINTEGER *pnLengthPtr, SQLSMALLINT *pnPrecisionPtr, SQLSMALLINT *pnScalePtr,
SQLSMALLINT *pnNullablePtr );
+    virtual SQLRETURN getDescField( SQLSMALLINT nFieldIdentifier, SQLPOINTER pValuePtr,
SQLINTEGER nBufferLength, SQLINTEGER *pnStringLengthPtr );
+};
+
+#endif
+

Added: MYODBCDes/MYODBCDesLib/MYODBCDesRecIRD.h
===================================================================
--- MYODBCDes/MYODBCDesLib/MYODBCDesRecIRD.h	2006-01-03 03:47:25 UTC (rev 24)
+++ MYODBCDes/MYODBCDesLib/MYODBCDesRecIRD.h	2006-01-03 08:52:27 UTC (rev 25)
@@ -0,0 +1,22 @@
+#ifndef MYODBC_DES_REC_IRD_H
+#define MYODBC_DES_REC_IRD_H
+
+class MYODBCDesIRD;
+
+class MYODBCDesRecIRD
+{
+public:
+    MYODBCDesRecIRD( MYODBCDesIRD *pdes );
+    ~MYODBCDesRecIRD();
+
+    /* setters */
+    virtual SQLRETURN setDescRec( SQLSMALLINT nType, SQLSMALLINT nSubType, SQLINTEGER
nLength, SQLSMALLINT nPrecision, SQLSMALLINT nScale, SQLPOINTER pDataPtr, SQLINTEGER
*pnStringLengthPtr, SQLINTEGER *pnIndicatorPtr );
+    virtual SQLRETURN setDescField( SQLSMALLINT nFieldIdentifier, SQLPOINTER pValuePtr,
SQLINTEGER nBufferLength );
+
+    /* getters */
+    virtual SQLRETURN getDescRec( SQLCHAR *pszName, SQLSMALLINT nBufferLength,
SQLSMALLINT *pnStringLengthPtr, SQLSMALLINT *pnTypePtr, SQLSMALLINT *pnSubTypePtr,
SQLINTEGER *pnLengthPtr, SQLSMALLINT *pnPrecisionPtr, SQLSMALLINT *pnScalePtr,
SQLSMALLINT *pnNullablePtr );
+    virtual SQLRETURN getDescField( SQLSMALLINT nFieldIdentifier, SQLPOINTER pValuePtr,
SQLINTEGER nBufferLength, SQLINTEGER *pnStringLengthPtr );
+};
+
+#endif
+

Deleted: MYODBCDes/MYODBCDesLib/MYODBCDesRecord.cpp
===================================================================
--- MYODBCDes/MYODBCDesLib/MYODBCDesRecord.cpp	2006-01-03 03:47:25 UTC (rev 24)
+++ MYODBCDes/MYODBCDesLib/MYODBCDesRecord.cpp	2006-01-03 08:52:27 UTC (rev 25)
@@ -1,410 +0,0 @@
-#include "MYODBCDesInternal.h"
-
-/*!
-    \brief  Allocate a descriptor record.
-    
-            Allocate a descriptor record. This may include some initialization
-            based upon the type requested.
-
-    \param  nType   Descriptor type.
-
-    \return MYODBC_DES_REC_PTR
-    
-    \sa     MYODBCDesRecFree
-*/    
-MYODBCDesRecord::MYODBCDesRecord( MYODBCDes *pdes )
-{
-    if ( pdes )
-    {
-        pdes->listRecords.append( this );
-    }
-}
-
-/*!
-    \brief  Frees all resources used by record.
-
-            Removes the nRecord from pDess array of records and
-            then frees the resources used by the record including the 
-            record itself.
-
-    \param  pDes A viable MYODBC_DES_PTR.
-    \param  nRecord     0 based
-
-    \return void
-
-    \sa     MYODBCDesRecAllocExt    
-*/
-MYODBCDesRecord::~MYODBCDesRecord()
-{
-    if ( pdes )
-        pdes->listRecords.removeAll( this );
-}
-
-bool MYODBCDesRecord::setAutoUniqueValue( SQLINTEGER nAutoUniqueValue )
-{
-    this->nAutoUniqueValue = nAutoUniqueValue;
-    return true;
-}
-
-bool MYODBCDesRecord::setBaseColumnName( const QString &stringBaseColumnName )
-{
-    this->stringBaseColumnName = stringBaseColumnName;
-    return true;
-}
-
-bool MYODBCDesRecord::setBaseTableName( const QString &stringBaseTableName )
-{
-    this->stringBaseTableName = stringBaseTableName;
-    return true;
-}
-
-bool MYODBCDesRecord::setCaseSensitive( SQLINTEGER nCaseSensitive )
-{
-    this->nCaseSensitive = nCaseSensitive;
-    return true;
-}
-
-bool MYODBCDesRecord::setCatalogName( const QString &stringCatalogName )
-{
-    this->stringCatalogName = stringCatalogName;
-    return true;
-}
-
-bool MYODBCDesRecord::setDataPtr( SQLPOINTER pDataPtr ) 
-{
-    this->pDataPtr = pDataPtr;
-    return true;
-}
-
-bool MYODBCDesRecord::setDatetimeIntervalCode( SQLSMALLINT nDatetimeIntervalCode )
-{
-    this->nDatetimeIntervalCode = nDatetimeIntervalCode;
-    return true;
-}
-
-bool MYODBCDesRecord::setDatetimeIntervalPrecision( SQLINTEGER nDatetimeIntervalPrecision
)
-{
-    this->nDatetimeIntervalPrecision = nDatetimeIntervalPrecision;
-    return true;
-}
-
-bool MYODBCDesRecord::setDisplaySize( SQLINTEGER nDisplaySize ) 
-{
-    this->nDisplaySize = nDisplaySize;
-    return true;
-}
-
-bool MYODBCDesRecord::setFixedPrecScale( SQLSMALLINT nFixedPrecScale )
-{
-    this->nFixedPrecScale = nFixedPrecScale;
-    return true;
-}
-
-bool MYODBCDesRecord::setIndicatorPtr( SQLINTEGER *pnIndicatorPtr )
-{
-    this->pnIndicatorPtr = pnIndicatorPtr;
-    return true;
-}
-
-bool MYODBCDesRecord::setLabel( const QString &stringLabel )
-{
-    this->stringLabel = stringLabel;
-    return true;
-}
-
-bool MYODBCDesRecord::setLength( SQLUINTEGER nLength )
-{
-    this->nLength = nLength;
-    return true;
-}
-
-bool MYODBCDesRecord::setLiteralPrefix( const QString &stringLiteralPrefix )
-{
-    this->stringLiteralPrefix = stringLiteralPrefix;
-    return true;
-}
-
-bool MYODBCDesRecord::setLiteralSuffix( const QString &stringLiteralSuffix )
-{
-    this->stringLiteralSuffix = stringLiteralSuffix;
-    return true;
-}
-
-bool MYODBCDesRecord::setLocalTypeName( const QString &stringLocalTypeName )
-{
-    this->stringLocalTypeName = stringLocalTypeName;
-    return true;
-}
-
-bool MYODBCDesRecord::setName( const QString &stringName )
-{
-    this->stringName = stringName;
-    return true;
-}
-
-bool MYODBCDesRecord::setNullable( SQLSMALLINT nNullable )
-{
-    this->nNullable = nNullable;
-    return true;
-}
-
-bool MYODBCDesRecord::setNumPrecRadix( SQLINTEGER nNumPrecRadix )
-{
-    this->nNumPrecRadix = nNumPrecRadix;
-    return true;
-}
-
-bool MYODBCDesRecord::setOctetLength( SQLINTEGER nOctetLength )
-{
-    this->nOctetLength = nOctetLength;
-    return true;
-}
-
-bool MYODBCDesRecord::setOctetLengthPtr( SQLINTEGER *pnOctetLengthPtr )
-{
-    this->pnOctetLengthPtr = pnOctetLengthPtr;
-    return true;
-}
-
-bool MYODBCDesRecord::setParamterType( SQLSMALLINT nParamterType )
-{
-    this->nParamterType = nParamterType;
-    return true;
-}
-
-bool MYODBCDesRecord::setPrecision( SQLSMALLINT nPrecision )
-{
-    this->nPrecision = nPrecision;
-    return true;
-}
-
-bool MYODBCDesRecord::setRowver( SQLSMALLINT nRowver )
-{
-    this->nRowver = nRowver;
-    return true;
-}
-
-bool MYODBCDesRecord::setScale( SQLSMALLINT nScale )
-{
-    this->nScale = nScale;
-    return true;
-}
-
-bool MYODBCDesRecord::setSchemaName( const QString &stringSchemaName )
-{
-    this->stringSchemaName = stringSchemaName;
-    return true;
-}
-
-bool MYODBCDesRecord::setSearchable( SQLSMALLINT nSearchable )
-{
-    this->nSearchable = nSearchable;
-    return true;
-}
-
-bool MYODBCDesRecord::setTableName( const QString &stringTableName )
-{
-    this->stringTableName = stringTableName;
-    return true;
-}
-
-bool MYODBCDesRecord::setTypeName( const QString &stringTypeName )
-{
-    this->stringTypeName = stringTypeName;
-    return true;
-}
-
-bool MYODBCDesRecord::setUnnamed( SQLSMALLINT nUnnamed )
-{
-    this->nUnnamed = nUnnamed;
-    return true;
-}
-
-bool MYODBCDesRecord::setUnsigned( SQLSMALLINT nUnsigned )
-{
-    this->nUnsigned = nUnsigned;
-    return true;
-}
-
-bool MYODBCDesRecord::setUpdatable( SQLSMALLINT nUpdatable )
-{
-    this->nUpdatable = nUpdatable;
-    return true;
-}
-
-SQLINTEGER  MYODBCDesRecord::getAutoUniqueValue()
-{
-    return this->nAutoUniqueValue;
-}
-
-QString     MYODBCDesRecord::getBaseColumnName()
-{
-    return this->stringBaseColumnName;
-}
-
-QString     MYODBCDesRecord::getBaseTableName()
-{
-    return this->stringBaseTableName;
-}
-
-SQLINTEGER  MYODBCDesRecord::getCaseSensitive()
-{
-    return this->nCaseSensitive;
-}
-
-QString     MYODBCDesRecord::getCatalogName()
-{
-    return this->stringCatalogName;
-}
-
-SQLSMALLINT MYODBCDesRecord::getConciseType()
-{
-    return this->nConciseType;
-}
-
-SQLPOINTER  MYODBCDesRecord::getDataPtr()
-{
-    return this->pDataPtr;
-}
-
-SQLSMALLINT MYODBCDesRecord::getDatetimeIntervalCode()
-{
-    return this->nDatetimeIntervalCode;
-}
-
-SQLINTEGER  MYODBCDesRecord::getDatetimeIntervalPrecision()
-{
-    return this->nDatetimeIntervalPrecision;
-}
-
-SQLINTEGER  MYODBCDesRecord::getDisplaySize() 
-{
-    return this->nDisplaySize;
-}
-
-SQLSMALLINT MYODBCDesRecord::getFixedPrecScale()
-{
-    return this->nFixedPrecScale;
-}
-
-SQLINTEGER *MYODBCDesRecord::getIndicatorPtr()
-{
-    return this->pnIndicatorPtr;
-}
-
-QString     MYODBCDesRecord::getLabel()
-{
-    return this->stringLabel;
-}
-
-SQLUINTEGER MYODBCDesRecord::getLength()
-{
-    return this->nLength;
-}
-
-QString     MYODBCDesRecord::getLiteralPrefix()
-{
-    return this->stringLiteralPrefix;
-}
-
-QString     MYODBCDesRecord::getLiteralSuffix()
-{
-    return this->stringLiteralSuffix;
-}
-
-QString     MYODBCDesRecord::getLocalTypeName()
-{
-    return this->stringLocalTypeName;
-}
-
-QString     MYODBCDesRecord::getName()
-{
-    return this->stringName;
-}
-
-SQLSMALLINT MYODBCDesRecord::getNullable()
-{
-    return this->nNullable;
-}
-
-SQLINTEGER  MYODBCDesRecord::getNumPrecRadix()
-{
-    return this->nNumPrecRadix;
-}
-
-SQLINTEGER  MYODBCDesRecord::getOctetLength()
-{
-    return this->nOctetLength;
-}
-
-SQLINTEGER *MYODBCDesRecord::getOctetLengthPtr()
-{
-    return this->pnOctetLengthPtr;
-}
-
-SQLSMALLINT MYODBCDesRecord::getParamterType()
-{
-    return this->nParamterType;
-}
-
-SQLSMALLINT MYODBCDesRecord::getPrecision()
-{
-    return this->nPrecision;
-}
-
-SQLSMALLINT MYODBCDesRecord::getRowver()
-{
-    return this->nRowver;
-}
-
-SQLSMALLINT MYODBCDesRecord::getScale()
-{
-    return this->nScale;
-}
-
-QString     MYODBCDesRecord::getSchemaName()
-{
-    return this->stringSchemaName;
-}
-
-SQLSMALLINT MYODBCDesRecord::getSearchable()
-{
-    return this->nSearchable;
-}
-
-QString     MYODBCDesRecord::getTableName()
-{
-    return this->stringTableName;
-}
-
-SQLSMALLINT MYODBCDesRecord::getType()
-{
-    return this->nType;
-}
-
-QString     MYODBCDesRecord::getTypeName()
-{
-    return this->stringTypeName;
-}
-
-SQLSMALLINT MYODBCDesRecord::getUnnamed()
-{
-    return this->nUnnamed;
-}
-
-SQLSMALLINT MYODBCDesRecord::getUnsigned()
-{
-    return this->nUnsigned;
-}
-
-SQLSMALLINT MYODBCDesRecord::getUpdatable()
-{
-    return this->nUpdatable;
-}
-
-MYODBCDes * MYODBCDesRecord::getDes()
-{
-    return this->pdes;
-}
-
-

Deleted: MYODBCDes/MYODBCDesLib/MYODBCDesRecord.h
===================================================================
--- MYODBCDes/MYODBCDesLib/MYODBCDesRecord.h	2006-01-03 03:47:25 UTC (rev 24)
+++ MYODBCDes/MYODBCDesLib/MYODBCDesRecord.h	2006-01-03 08:52:27 UTC (rev 25)
@@ -1,151 +0,0 @@
-#ifndef MYODBC_DES_RECORD_H
-#define MYODBC_DES_RECORD_H
-
-/*!
-    \brief  Descriptor records represent different things depending
-            upon the type of descriptor;
-    
-            APD - one record for each buffer bound to a paramter marker
-            IPD - one record for each paramter marker
-            ARD - one record for each buffer bound to a column
-            IRD - one record for each column
-            
-            This structure reflects *all* fields given in the ODBC 
-            specification. However; some fields may be calculated or
-            not used when part of a particular descriptor type.
-            
-            In particular; the read-only fields can, in some cases, be 
-            optimized away.
-            
-            All fields are included for completeness and to help make 
-            the code more understandable. Any storage which can be 
-            optimized away would be very minimal so please leave all.
-
-    \sa     MYODBC_DES
-*/
-
-/* forward declare */
-class MYODBCDes;
-
-class MYODBCDesRecord
-{
-public:
-    MYODBCDesRecord( MYODBCDes *pdes );
-    ~MYODBCDesRecord();
-
-    /* setters */
-    virtual SQLRETURN setAutoUniqueValue( SQLINTEGER nAutoUniqueValue );
-    virtual SQLRETURN setBaseColumnName( const QString &stringBaseColumnName );
-    virtual SQLRETURN setBaseTableName( const QString &stringBaseTableName );
-    virtual SQLRETURN setCaseSensitive( SQLINTEGER nCaseSensitive );
-    virtual SQLRETURN setCatalogName( const QString &stringCatalogName );
-    virtual SQLRETURN setConciseType( SQLSMALLINT nConciseType ) = 0;
-    virtual SQLRETURN setDataPtr( SQLPOINTER pDataPtr );
-    virtual SQLRETURN setDatetimeIntervalCode( SQLSMALLINT nDatetimeIntervalCode );
-    virtual SQLRETURN setDatetimeIntervalPrecision( SQLINTEGER nDatetimeIntervalPrecision
);
-    virtual SQLRETURN setDisplaySize( SQLINTEGER nDisplaySize );
-    virtual SQLRETURN setFixedPrecScale( SQLSMALLINT nFixedPrecScale );
-    virtual SQLRETURN setIndicatorPtr( SQLINTEGER *pnIndicatorPtr );
-    virtual SQLRETURN setLabel( const QString &stringLabel );
-    virtual SQLRETURN setLength( SQLUINTEGER nLength );
-    virtual SQLRETURN setLiteralPrefix( const QString &stringLiteralPrefix );
-    virtual SQLRETURN setLiteralSuffix( const QString &stringLiteralSuffix );
-    virtual SQLRETURN setLocalTypeName( const QString &stringLocalTypeName );
-    virtual SQLRETURN setName( const QString &stringName );
-    virtual SQLRETURN setNullable( SQLSMALLINT nNullable );
-    virtual SQLRETURN setNumPrecRadix( SQLINTEGER nNumPrecRadix );
-    virtual SQLRETURN setOctetLength( SQLINTEGER nOctetLength );
-    virtual SQLRETURN setOctetLengthPtr( SQLINTEGER *pnOctetLengthPtr );
-    virtual SQLRETURN setParamterType( SQLSMALLINT nParamterType );
-    virtual SQLRETURN setPrecision( SQLSMALLINT nPrecision );
-    virtual SQLRETURN setRowver( SQLSMALLINT nRowver );
-    virtual SQLRETURN setScale( SQLSMALLINT nScale );
-    virtual SQLRETURN setSchemaName( const QString &stringSchemaName );
-    virtual SQLRETURN setSearchable( SQLSMALLINT nSearchable );
-    virtual SQLRETURN setTableName( const QString &stringTableName );
-    virtual SQLRETURN setType( SQLSMALLINT nType ) = 0;
-    virtual SQLRETURN setTypeName( const QString &stringTypeName );
-    virtual SQLRETURN setUnnamed( SQLSMALLINT nUnnamed );
-    virtual SQLRETURN setUnsigned( SQLSMALLINT nUnsigned );
-    virtual SQLRETURN setUpdatable( SQLSMALLINT nUpdatable );
-
-    /* getters */
-    virtual SQLINTEGER  getAutoUniqueValue();
-    virtual QString     getBaseColumnName();
-    virtual QString     getBaseTableName();
-    virtual SQLINTEGER  getCaseSensitive();
-    virtual QString     getCatalogName();
-    virtual SQLSMALLINT getConciseType();
-    virtual SQLPOINTER  getDataPtr();                      
-    virtual SQLSMALLINT getDatetimeIntervalCode();
-    virtual SQLINTEGER  getDatetimeIntervalPrecision();
-    virtual SQLINTEGER  getDisplaySize();
-    virtual SQLSMALLINT getFixedPrecScale();
-    virtual SQLINTEGER *getIndicatorPtr();
-    virtual QString     getLabel();
-    virtual SQLUINTEGER getLength();
-    virtual QString     getLiteralPrefix();
-    virtual QString     getLiteralSuffix();
-    virtual QString     getLocalTypeName();
-    virtual QString     getName();
-    virtual SQLSMALLINT getNullable();
-    virtual SQLINTEGER  getNumPrecRadix();
-    virtual SQLINTEGER  getOctetLength();
-    virtual SQLINTEGER *getOctetLengthPtr();
-    virtual SQLSMALLINT getParamterType();
-    virtual SQLSMALLINT getPrecision();
-    virtual SQLSMALLINT getRowver();
-    virtual SQLSMALLINT getScale();
-    virtual QString     getSchemaName();
-    virtual SQLSMALLINT getSearchable();
-    virtual QString     getTableName();
-    virtual SQLSMALLINT getType();
-    virtual QString     getTypeName();
-    virtual SQLSMALLINT getUnnamed();
-    virtual SQLSMALLINT getUnsigned();
-    virtual SQLSMALLINT getUpdatable();
-    virtual MYODBCDes * getDes();
-
-protected:
-    MYODBCDes * pdes;                           /* parent & owner */
-
-    /* some of these 'fields' will be calculated and not stored in the future */
-    /* these 'fields' are named as per odbc spec to make xref easier */
-    SQLINTEGER  nAutoUniqueValue;
-    QString     stringBaseColumnName;
-    QString     stringBaseTableName;
-    SQLINTEGER  nCaseSensitive;
-    QString     stringCatalogName;
-    SQLSMALLINT nConciseType;
-    SQLPOINTER  pDataPtr;                      /*!< IF null THEN unbound ELSE bound   
      */
-    SQLSMALLINT nDatetimeIntervalCode;
-    SQLINTEGER  nDatetimeIntervalPrecision;
-    SQLINTEGER  nDisplaySize;                    /*! calculated?     */
-    SQLSMALLINT nFixedPrecScale;
-    SQLINTEGER *pnIndicatorPtr;
-    QString     stringLabel;
-    SQLUINTEGER nLength;
-    QString     stringLiteralPrefix;
-    QString     stringLiteralSuffix;
-    QString     stringLocalTypeName;
-    QString     stringName;
-    SQLSMALLINT nNullable;
-    SQLINTEGER  nNumPrecRadix;
-    SQLINTEGER  nOctetLength;
-    SQLINTEGER *pnOctetLengthPtr;
-    SQLSMALLINT nParamterType;
-    SQLSMALLINT nPrecision;
-    SQLSMALLINT nRowver;
-    SQLSMALLINT nScale;
-    QString     stringSchemaName;
-    SQLSMALLINT nSearchable;
-    QString     stringTableName;
-    SQLSMALLINT nType;
-    QString     stringTypeName;
-    SQLSMALLINT nUnnamed;
-    SQLSMALLINT nUnsigned;
-    SQLSMALLINT nUpdatable;
-};
-
-#endif
-

Modified: MYODBCDes/MYODBCDesTest/MYODBCDesTest.vpj
===================================================================
--- MYODBCDes/MYODBCDesTest/MYODBCDesTest.vpj	2006-01-03 03:47:25 UTC (rev 24)
+++ MYODBCDes/MYODBCDesTest/MYODBCDesTest.vpj	2006-01-03 08:52:27 UTC (rev 25)
@@ -184,7 +184,7 @@
 		<Folder
 			Name="Source Files"
 			Filters="*.c;*.C;*.cc;*.cpp;*.cp;*.cxx;*.prg;*.pas;*.dpr;*.asm;*.s;*.bas;*.java;*.cs;*.sc;*.e;*.cob;*.html;*.rc;*.tcl;*.py;*.pl">
-			<F N="MYODBCDesTest.c"/>
+			<F N="MYODBCDesTest.cpp"/>
 		</Folder>
 		<Folder
 			Name="Header Files"

Modified: MYODBCDes/include/MYODBCDes.h
===================================================================
--- MYODBCDes/include/MYODBCDes.h	2006-01-03 03:47:25 UTC (rev 24)
+++ MYODBCDes/include/MYODBCDes.h	2006-01-03 08:52:27 UTC (rev 25)
@@ -57,7 +57,7 @@
 #include <QStringList>
 #include <QTextStream>
 
-class MYODBCDesRecord;
+class MYODBCResRec;
 
 /*!
     \brief  This is the top-level descriptor struct. It represents a;
@@ -72,19 +72,26 @@
 */
 class MYODBCDes
 {
-    friend class MYODBCDesRecord;
+    friend class MYODBCResRec;
 public:
     MYODBCDes( SQLHANDLE hOwner );
     ~MYODBCDes();
 
     /* setters */
+
+    /* ODBC validated */
+    virtual SQLRETURN setDescRec( SQLSMALLINT nRecNumber, SQLSMALLINT nType, SQLSMALLINT
nSubType, SQLINTEGER nLength, SQLSMALLINT nPrecision, SQLSMALLINT nScale, SQLPOINTER
pDataPtr, SQLINTEGER *pnStringLengthPtr, SQLINTEGER *pnIndicatorPtr ) = 0;
+    virtual SQLRETURN setDescField( SQLSMALLINT nRecNumber, SQLSMALLINT nFieldIdentifier,
SQLPOINTER pValuePtr, SQLINTEGER nBufferLength ) = 0;
+
+    /* header fields */
     virtual SQLRETURN setArraySize( SQLUINTEGER nArraySize );
     virtual SQLRETURN setArrayStatusPtr( SQLUSMALLINT *pnArrayStatusPtr );
     virtual SQLRETURN setBindOffsetPtr( SQLINTEGER *pnBindOffsetPtr );
     virtual SQLRETURN setBindType( SQLINTEGER nBindType );
-    virtual SQLRETURN setCount( SQLSMALLINT nCount );
+    virtual SQLRETURN setCount( SQLSMALLINT nCount, bool bUnbind ) = 0;
     virtual SQLRETURN setRowsProcessedPtr( SQLUINTEGER *pnRowsProcessedPtr );
 
+    /* record fields */
     virtual SQLRETURN setAutoUniqueValue( SQLSMALLINT nRecord, SQLINTEGER
nAutoUniqueValue );
     virtual SQLRETURN setBaseColumnName( SQLSMALLINT nRecord, const QString
&stringBaseColumnName );
     virtual SQLRETURN setBaseTableName( SQLSMALLINT nRecord, const QString
&stringBaseTableName );
@@ -121,6 +128,12 @@
     virtual SQLRETURN setUpdatable( SQLSMALLINT nRecord, SQLSMALLINT nUpdatable );
     
     /* getters */
+
+    /* ODBC validated */
+    virtual SQLRETURN getDescRec( SQLSMALLINT nRecNumber, SQLCHAR *pszName, SQLSMALLINT
nBufferLength, SQLSMALLINT *pnStringLengthPtr, SQLSMALLINT *pnTypePtr, SQLSMALLINT
*pnSubTypePtr, SQLINTEGER *pnLengthPtr, SQLSMALLINT *pnPrecisionPtr, SQLSMALLINT
*pnScalePtr, SQLSMALLINT *pnNullablePtr ) = 0;
+    virtual SQLRETURN getDescField( SQLSMALLINT nRecNumber, SQLSMALLINT nFieldIdentifier,
SQLPOINTER pValuePtr, SQLINTEGER nBufferLength, SQLINTEGER *pnStringLengthPtr ) = 0;
+
+    /* header fields */
     virtual SQLSMALLINT getAllocType();
     virtual SQLUINTEGER getArraySize();
     virtual SQLUSMALLINT *getArrayStatusPtr();
@@ -129,6 +142,7 @@
     virtual SQLSMALLINT getCount();
     virtual SQLUINTEGER *getRowsProcessedPtr();
 
+    /* record fields */
     virtual SQLINTEGER  getAutoUniqueValue( SQLSMALLINT nRecord );
     virtual QString     getBaseColumnName( SQLSMALLINT nRecord );
     virtual QString     getBaseTableName( SQLSMALLINT nRecord );
@@ -164,6 +178,7 @@
     virtual SQLSMALLINT getUnsigned( SQLSMALLINT nRecord );
     virtual SQLSMALLINT getUpdatable( SQLSMALLINT nRecord );
 
+    /* misc */
     SQLHANDLE getOwner();
     MYODBC_RTTI_DES_TYPE getDesType();
 
@@ -185,11 +200,16 @@
                                                     records->elements.                
                 */
     SQLUINTEGER *   pnRowsProcessedPtr;
 
-    QList<MYODBCDesRecord*> listRecords;        /*!< An array of MYODBC_DES_REC.
We should always
+    QList<MYODBCResRec*> listRecords;        /*!< An array of MYODBC_DES_REC. We
should always
                                                     have record at index 0. Index 0 is
used for  
                                                     bookmarks when an ARD desc.          
              */
 };
 
+#include "MYODBCDesAPD.h"
+#include "MYODBCDesARD.h"
+#include "MYODBCDesIPD.h"
+#include "MYODBCDesIRD.h"
+
 +++++++++++++++++++++++++
 
 /*!

Modified: MYODBCDes/include/MYODBCDesAPD.h
===================================================================
--- MYODBCDes/include/MYODBCDesAPD.h	2006-01-03 03:47:25 UTC (rev 24)
+++ MYODBCDes/include/MYODBCDesAPD.h	2006-01-03 08:52:27 UTC (rev 25)
@@ -8,7 +8,7 @@
 #define MYODBC_DES_APD_H
 
 #include "MYODBCDes.h"
-#include "MYODBCResRecordAPD.h"
+#include "MYODBCResRecAPD.h"
 
 /*!
     \brief  
@@ -16,16 +16,20 @@
 */
 class MYODBCDesAPD
 {
-    friend class MYODBCDesRecordAPD;
+    friend class MYODBCResRecAPD;
 public:
     MYODBCDesAPD( SQLHANDLE hOwner );
     ~MYODBCDesAPD();
 
     /* setters */
-    SQLRETURN setRowsProcessedPtr( SQLUINTEGER *pnRowsProcessedPtr );
+    SQLRETURN setDescRec( SQLSMALLINT nRecNumber, SQLSMALLINT nType, SQLSMALLINT
nSubType, SQLINTEGER nLength, SQLSMALLINT nPrecision, SQLSMALLINT nScale, SQLPOINTER
pDataPtr, SQLINTEGER *pnStringLengthPtr, SQLINTEGER *pnIndicatorPtr );
+    SQLRETURN setDescField( SQLSMALLINT nRecNumber, SQLSMALLINT nFieldIdentifier,
SQLPOINTER pValuePtr, SQLINTEGER nBufferLength );
 
+    SQLRETURN setCount( SQLSMALLINT nCount, bool bUnbind );
+
     /* getters */
-    SQLUINTEGER *getRowsProcessedPtr();
+    SQLRETURN getDescRec( SQLSMALLINT nRecNumber, SQLCHAR *pszName, SQLSMALLINT
nBufferLength, SQLSMALLINT *pnStringLengthPtr, SQLSMALLINT *pnTypePtr, SQLSMALLINT
*pnSubTypePtr, SQLINTEGER *pnLengthPtr, SQLSMALLINT *pnPrecisionPtr, SQLSMALLINT
*pnScalePtr, SQLSMALLINT *pnNullablePtr );
+    SQLRETURN getDescField( SQLSMALLINT nRecNumber, SQLSMALLINT nFieldIdentifier,
SQLPOINTER pValuePtr, SQLINTEGER nBufferLength, SQLINTEGER *pnStringLengthPtr );
 };
 
 #endif

Modified: MYODBCDes/include/MYODBCDesARD.h
===================================================================
--- MYODBCDes/include/MYODBCDesARD.h	2006-01-03 03:47:25 UTC (rev 24)
+++ MYODBCDes/include/MYODBCDesARD.h	2006-01-03 08:52:27 UTC (rev 25)
@@ -8,7 +8,7 @@
 #define MYODBC_DES_ARD_H
 
 #include "MYODBCDes.h"
-#include "MYODBCResRecordARD.h"
+#include "MYODBCResRecARD.h"
 
 /*!
     \brief  
@@ -16,15 +16,21 @@
 */
 class MYODBCDesARD
 {
-    friend class MYODBCDesRecordARD;
+    friend class MYODBCResRecARD;
 public:
     MYODBCDesARD( SQLHANDLE hOwner );
     ~MYODBCDesARD();
 
     /* setters */
+    SQLRETURN setDescRec( SQLSMALLINT nRecNumber, SQLSMALLINT nType, SQLSMALLINT
nSubType, SQLINTEGER nLength, SQLSMALLINT nPrecision, SQLSMALLINT nScale, SQLPOINTER
pDataPtr, SQLINTEGER *pnStringLengthPtr, SQLINTEGER *pnIndicatorPtr );
+    SQLRETURN setDescField( SQLSMALLINT nRecNumber, SQLSMALLINT nFieldIdentifier,
SQLPOINTER pValuePtr, SQLINTEGER nBufferLength );
+
     SQLRETURN setRowsProcessedPtr( SQLUINTEGER *pnRowsProcessedPtr );
 
     /* getters */
+    SQLRETURN getDescRec( SQLSMALLINT nRecNumber, SQLCHAR *pszName, SQLSMALLINT
nBufferLength, SQLSMALLINT *pnStringLengthPtr, SQLSMALLINT *pnTypePtr, SQLSMALLINT
*pnSubTypePtr, SQLINTEGER *pnLengthPtr, SQLSMALLINT *pnPrecisionPtr, SQLSMALLINT
*pnScalePtr, SQLSMALLINT *pnNullablePtr );
+    SQLRETURN getDescField( SQLSMALLINT nRecNumber, SQLSMALLINT nFieldIdentifier,
SQLPOINTER pValuePtr, SQLINTEGER nBufferLength, SQLINTEGER *pnStringLengthPtr );
+
     SQLUINTEGER *getRowsProcessedPtr();
 };
 

Modified: MYODBCDes/include/MYODBCDesIPD.h
===================================================================
--- MYODBCDes/include/MYODBCDesIPD.h	2006-01-03 03:47:25 UTC (rev 24)
+++ MYODBCDes/include/MYODBCDesIPD.h	2006-01-03 08:52:27 UTC (rev 25)
@@ -8,7 +8,7 @@
 #define MYODBC_DES_IPD_H
 
 #include "MYODBCDes.h"
-#include "MYODBCResRecordIPD.h"
+#include "MYODBCResRecIPD.h"
 
 /*!
     \brief  
@@ -16,17 +16,23 @@
 */
 class MYODBCDesIPD
 {
-    friend class MYODBCDesRecordIPD;
+    friend class MYODBCResRecIPD;
 public:
     MYODBCDesIPD( SQLHANDLE hOwner );
     ~MYODBCDesIPD();
 
     /* setters */
+    SQLRETURN setDescRec( SQLSMALLINT nRecNumber, SQLSMALLINT nType, SQLSMALLINT
nSubType, SQLINTEGER nLength, SQLSMALLINT nPrecision, SQLSMALLINT nScale, SQLPOINTER
pDataPtr, SQLINTEGER *pnStringLengthPtr, SQLINTEGER *pnIndicatorPtr );
+    SQLRETURN setDescField( SQLSMALLINT nRecNumber, SQLSMALLINT nFieldIdentifier,
SQLPOINTER pValuePtr, SQLINTEGER nBufferLength );
+
     SQLRETURN setArraySize( SQLUINTEGER nArraySize );
     SQLRETURN setBindOffsetPtr( SQLINTEGER *pnBindOffsetPtr );
     SQLRETURN setBindType( SQLINTEGER nBindType );
 
     /* getters */
+    SQLRETURN getDescRec( SQLSMALLINT nRecNumber, SQLCHAR *pszName, SQLSMALLINT
nBufferLength, SQLSMALLINT *pnStringLengthPtr, SQLSMALLINT *pnTypePtr, SQLSMALLINT
*pnSubTypePtr, SQLINTEGER *pnLengthPtr, SQLSMALLINT *pnPrecisionPtr, SQLSMALLINT
*pnScalePtr, SQLSMALLINT *pnNullablePtr );
+    SQLRETURN getDescField( SQLSMALLINT nRecNumber, SQLSMALLINT nFieldIdentifier,
SQLPOINTER pValuePtr, SQLINTEGER nBufferLength, SQLINTEGER *pnStringLengthPtr );
+
     SQLUINTEGER getArraySize();
     SQLINTEGER *getBindOffsetPtr();
     SQLINTEGER getBindType();

Modified: MYODBCDes/include/MYODBCDesIRD.h
===================================================================
--- MYODBCDes/include/MYODBCDesIRD.h	2006-01-03 03:47:25 UTC (rev 24)
+++ MYODBCDes/include/MYODBCDesIRD.h	2006-01-03 08:52:27 UTC (rev 25)
@@ -8,7 +8,7 @@
 #define MYODBC_DES_IRD_H
 
 #include "MYODBCDes.h"
-#include "MYODBCResRecordIRD.h"
+#include "MYODBCResRecIRD.h"
 
 /*!
     \brief  
@@ -16,17 +16,23 @@
 */
 class MYODBCDesIRD
 {
-    friend class MYODBCDesRecordIRD;
+    friend class MYODBCResRecIRD;
 public:
     MYODBCDesIRD( SQLHANDLE hOwner );
     ~MYODBCDesIRD();
 
     /* setters */
+    SQLRETURN setDescRec( SQLSMALLINT nRecNumber, SQLSMALLINT nType, SQLSMALLINT
nSubType, SQLINTEGER nLength, SQLSMALLINT nPrecision, SQLSMALLINT nScale, SQLPOINTER
pDataPtr, SQLINTEGER *pnStringLengthPtr, SQLINTEGER *pnIndicatorPtr );
+    SQLRETURN setDescField( SQLSMALLINT nRecNumber, SQLSMALLINT nFieldIdentifier,
SQLPOINTER pValuePtr, SQLINTEGER nBufferLength );
+
     SQLRETURN setArraySize( SQLUINTEGER nArraySize );
     SQLRETURN setBindOffsetPtr( SQLINTEGER *pnBindOffsetPtr );
     SQLRETURN setBindType( SQLINTEGER nBindType );
 
     /* getters */
+    SQLRETURN getDescRec( SQLSMALLINT nRecNumber, SQLCHAR *pszName, SQLSMALLINT
nBufferLength, SQLSMALLINT *pnStringLengthPtr, SQLSMALLINT *pnTypePtr, SQLSMALLINT
*pnSubTypePtr, SQLINTEGER *pnLengthPtr, SQLSMALLINT *pnPrecisionPtr, SQLSMALLINT
*pnScalePtr, SQLSMALLINT *pnNullablePtr );
+    SQLRETURN getDescField( SQLSMALLINT nRecNumber, SQLSMALLINT nFieldIdentifier,
SQLPOINTER pValuePtr, SQLINTEGER nBufferLength, SQLINTEGER *pnStringLengthPtr );
+
     SQLUINTEGER getArraySize();
     SQLINTEGER *getBindOffsetPtr();
     SQLINTEGER getBindType();

Thread
Connector/ODBC 5 commit: r25 - in MYODBCDes: MYODBCDesLib MYODBCDesTest includepharvey3 Jan