List:Commits« Previous MessageNext Message »
From:pharvey Date:January 5 2006 5:07am
Subject:Connector/ODBC 5 commit: r29 - MYODBCDbg/include MYODBCDes/MYODBCDesLib MYODBCDes/include
View as plain text  
Modified:
   MYODBCDbg/include/MYODBCDbg.h
   MYODBCDes/MYODBCDesLib/MYODBCDes.cpp
   MYODBCDes/MYODBCDesLib/MYODBCDesAPD.cpp
   MYODBCDes/MYODBCDesLib/MYODBCDesARD.cpp
   MYODBCDes/MYODBCDesLib/MYODBCDesIPD.cpp
   MYODBCDes/MYODBCDesLib/MYODBCDesIRD.cpp
   MYODBCDes/MYODBCDesLib/MYODBCDesInternal.h
   MYODBCDes/MYODBCDesLib/MYODBCDesLib.pro
   MYODBCDes/MYODBCDesLib/MYODBCDesLib.vpj
   MYODBCDes/MYODBCDesLib/MYODBCDesRec.cpp
   MYODBCDes/MYODBCDesLib/MYODBCDesRec.h
   MYODBCDes/MYODBCDesLib/MYODBCDesRecAPD.cpp
   MYODBCDes/MYODBCDesLib/MYODBCDesRecAPD.h
   MYODBCDes/MYODBCDesLib/MYODBCDesRecARD.cpp
   MYODBCDes/MYODBCDesLib/MYODBCDesRecARD.h
   MYODBCDes/MYODBCDesLib/MYODBCDesRecIPD.cpp
   MYODBCDes/MYODBCDesLib/MYODBCDesRecIPD.h
   MYODBCDes/MYODBCDesLib/MYODBCDesRecIRD.cpp
   MYODBCDes/MYODBCDesLib/MYODBCDesRecIRD.h
   MYODBCDes/include/MYODBCDes.h
   MYODBCDes/include/MYODBCDesAPD.h
   MYODBCDes/include/MYODBCDesARD.h
   MYODBCDes/include/MYODBCDesIPD.h
   MYODBCDes/include/MYODBCDesIRD.h
Log:
UNICODE:
- work to objectify code and enable unicode in descriptors

Modified: MYODBCDbg/include/MYODBCDbg.h
===================================================================
--- MYODBCDbg/include/MYODBCDbg.h	2006-01-04 06:58:46 UTC (rev 28)
+++ MYODBCDbg/include/MYODBCDbg.h	2006-01-05 05:07:04 UTC (rev 29)
@@ -179,7 +179,7 @@
 */
 #define MYODBCDbgReturn(A) return(gpMYODBCDbg ? gpMYODBCDbg->doReturn( __FILE__,
__LINE__, __FUNCTION__, A ) : A)
 
-#define MYODBCDbgReturn2() 
+#define MYODBCDbgReturn2()\
 {\
 if ( gpMYODBCDbg )\
 {\
@@ -191,7 +191,7 @@
 }\
 }
 
-#define MYODBCDbgReturn3(A) 
+#define MYODBCDbgReturn3(A)\ 
 {\
 if ( gpMYODBCDbg )\
 {\

Modified: MYODBCDes/MYODBCDesLib/MYODBCDes.cpp
===================================================================
--- MYODBCDes/MYODBCDesLib/MYODBCDes.cpp	2006-01-04 06:58:46 UTC (rev 28)
+++ MYODBCDes/MYODBCDesLib/MYODBCDes.cpp	2006-01-05 05:07:04 UTC (rev 29)
@@ -34,8 +34,6 @@
 {
     MYODBCDbgEnter();
 
-    /* init header fields to most common values */
-    nTypeSubID           = MYODBC_RTTI_DES_UND;
     nAllocType           = SQL_DESC_ALLOC_USER;
     nArraySize           = 1;
     pnArrayStatusPtr     = NULL;
@@ -107,13 +105,13 @@
     */
     if ( nRecNumber >= getCount()  )
     {
-        nReturn = setCount( nRecNumber + 1, true );
+        SQLRETURN nReturn = setCount( nRecNumber + 1, true );
         if ( !SQL_SUCCEEDED( nReturn ) )
             MYODBCDbgReturn( nReturn );
     }
 
     /* push down to record for further processing */
-    MYODBCDbgReturn( listRecords[nRecord]->setDescRec( nType, nSubType, nLength,
nPrecision, nScale, pDataPtr, pnStringLengthPtr, pnIndicatorPtr ) );
+    MYODBCDbgReturn( listRecords[nRecNumber]->setDescRec( nType, nSubType, nLength,
nPrecision, nScale, pDataPtr, pnStringLengthPtr, pnIndicatorPtr ) );
 }
 
 SQLRETURN MYODBCDes::setArraySize( SQLUINTEGER nArraySize )
@@ -451,7 +449,7 @@
     MYODBCDbgReturn( listRecords[nRecord]->setTableName( stringTableName ) );
 }
 
-SQLRETURN MYODBCDes::setType( SQLSMALLINT nRecord, SQLSMALLINT nType );
+SQLRETURN MYODBCDes::setType( SQLSMALLINT nRecord, SQLSMALLINT nType )
 {
     MYODBCDbgEnter();
 
@@ -521,7 +519,7 @@
         MYODBCDbgReturn( SQL_NO_DATA );
 
     /* push down to record for further processing */
-    MYODBCDbgReturn( listRecords[nRecNumber]->getDescRec( pszName, nBufferLength,
pnStringLengthPtr, pnTypePtr, pnSubTypePtr, pnLengthPtr, pnPrecisionPtr, pnScalePtr,
pnNullablePtr );
+    MYODBCDbgReturn( listRecords[nRecNumber]->getDescRec( pszName, nBufferLength,
pnStringLengthPtr, pnTypePtr, pnSubTypePtr, pnLengthPtr, pnPrecisionPtr, pnScalePtr,
pnNullablePtr ) );
 }
 
 SQLRETURN MYODBCDes::getDescField( SQLSMALLINT nRecNumber, SQLSMALLINT nFieldIdentifier,
SQLPOINTER pValuePtr, SQLINTEGER nBufferLength, SQLINTEGER *pnStringLengthPtr )
@@ -560,11 +558,11 @@
             MYODBCDbgReturn( SQL_SUCCESS );
 
         case SQL_DESC_BIND_OFFSET_PTR:
-            *((SQLINTEGER **)ppValuePtr) = getBindOffsetPtr();
+            *((SQLINTEGER **)pValuePtr) = getBindOffsetPtr();
             MYODBCDbgReturn( SQL_SUCCESS );
 
         case SQL_DESC_BIND_TYPE:
-            *((SQLINTEGER **)pValuePtr) = getBindType();
+            *((SQLUINTEGER *)pValuePtr) = getBindType();
             MYODBCDbgReturn( SQL_SUCCESS );
 
         case SQL_DESC_COUNT:
@@ -591,7 +589,7 @@
         MYODBCDbgReturn( SQL_NO_DATA );
 
     /* push down to record for further processing */
-    MYODBCDbgReturn( listRecords[nRecNumber]->getDescField( nFieldIdentifier,
pValuePtr, nBufferLength, pnStringLengthPtr );
+    MYODBCDbgReturn( listRecords[nRecNumber]->getDescField( nFieldIdentifier,
pValuePtr, nBufferLength, pnStringLengthPtr ) );
 }
 
 SQLSMALLINT MYODBCDes::getAllocType()
@@ -622,7 +620,7 @@
     MYODBCDbgReturn3( nBindOffsetPtr );
 }
 
-SQLINTEGER MYODBCDes::getBindType()
+SQLUINTEGER MYODBCDes::getBindType()
 {
     MYODBCDbgEnter();
 
@@ -991,14 +989,4 @@
     MYODBCDbgReturn3( hOwner );
 }
 
-MYODBC_RTTI_DES_TYPE MYODBCDes::getDesType()
-{
-    MYODBCDbgEnter();
 
-    MYODBCDbgReturn3( nDesType );
-}
-
-
-
-
-

Modified: MYODBCDes/MYODBCDesLib/MYODBCDesAPD.cpp
===================================================================
--- MYODBCDes/MYODBCDesLib/MYODBCDesAPD.cpp	2006-01-04 06:58:46 UTC (rev 28)
+++ MYODBCDes/MYODBCDesLib/MYODBCDesAPD.cpp	2006-01-05 05:07:04 UTC (rev 29)
@@ -2,8 +2,6 @@
 
 MYODBCDesAPD::MYODBCDesAPD( SQLHANDLE hOwner )
 {
-    nTypeSubID = MYODBC_RTTI_DES_APD;
-
     /* add bookmark record at index 0 */
     /*
         \internal ODBC Rule
@@ -15,10 +13,10 @@
         or by an ODBC 2.x application working with an ODBC 3.x 
         driver.)
     */    
-    pdesrec = new MYODBCDesRecAPD( this );
-    pdesrec->setConciseType( SQL_BINARY );
-    pdesrec->setType( SQL_BINARY );
-    pdesrec->setDatetimeIntervalCode( 0 );
+    MYODBCDesRecAPD *precord = new MYODBCDesRecAPD( this );
+    precord->setConciseType( SQL_BINARY );
+    precord->setType( SQL_BINARY );
+    precord->setDatetimeIntervalCode( 0 );
 }
 
 SQLRETURN MYODBCDesRecAPD::setDescRec( SQLSMALLINT nType, SQLSMALLINT nSubType,
SQLINTEGER nLength, SQLSMALLINT nPrecision, SQLSMALLINT nScale, SQLPOINTER pDataPtr,
SQLINTEGER *pnStringLengthPtr, SQLINTEGER *pnIndicatorPtr )

Modified: MYODBCDes/MYODBCDesLib/MYODBCDesARD.cpp
===================================================================
--- MYODBCDes/MYODBCDesLib/MYODBCDesARD.cpp	2006-01-04 06:58:46 UTC (rev 28)
+++ MYODBCDes/MYODBCDesLib/MYODBCDesARD.cpp	2006-01-05 05:07:04 UTC (rev 29)
@@ -2,8 +2,6 @@
 
 MYODBCDesARD::MYODBCDesARD( SQLHANDLE hOwner )
 {
-    nTypeSubID = MYODBC_RTTI_DES_ARD;
-
     /* add bookmark record at index 0 */
     /*
         \internal ODBC Rule
@@ -15,10 +13,10 @@
         or by an ODBC 2.x application working with an ODBC 3.x 
         driver.)
     */    
-    pdesrec = new MYODBCDesRecARD( this );
-    pdesrec->setConciseType( SQL_BINARY );
-    pdesrec->setType( SQL_BINARY );
-    pdesrec->setDatetimeIntervalCode( 0 );
+    MYODBCDesRecARD *precord = new MYODBCDesRecARD( this );
+    precord->setConciseType( SQL_BINARY );
+    precord->setType( SQL_BINARY );
+    precord->setDatetimeIntervalCode( 0 );
 }
 
 SQLRETURN MYODBCDesARD::setDescField( SQLSMALLINT nRecNumber, SQLSMALLINT
nFieldIdentifier, SQLPOINTER pValuePtr, SQLINTEGER nBufferLength )

Modified: MYODBCDes/MYODBCDesLib/MYODBCDesIPD.cpp
===================================================================
--- MYODBCDes/MYODBCDesLib/MYODBCDesIPD.cpp	2006-01-04 06:58:46 UTC (rev 28)
+++ MYODBCDes/MYODBCDesLib/MYODBCDesIPD.cpp	2006-01-05 05:07:04 UTC (rev 29)
@@ -2,8 +2,6 @@
 
 MYODBCDesIPD::MYODBCDesIPD( SQLHANDLE hOwner )
 {
-    nTypeSubID = MYODBC_RTTI_DES_IPD;
-
     /* add bookmark record at index 0 */
     /*
         \internal ODBC Rule
@@ -15,10 +13,10 @@
         or by an ODBC 2.x application working with an ODBC 3.x 
         driver.)
     */    
-    pdesrec = new MYODBCDesRecIPD( this );
-    pdesrec->setConciseType( SQL_BINARY );
-    pdesrec->setType( SQL_BINARY );
-    pdesrec->setDatetimeIntervalCode( 0 );
+    MYODBCDesRecIPD *precord = new MYODBCDesRecIPD( this );
+    precord->setConciseType( SQL_BINARY );
+    precord->setType( SQL_BINARY );
+    precord->setDatetimeIntervalCode( 0 );
 }
 
 SQLRETURN MYODBCDesIPD::setDescField( SQLSMALLINT nRecNumber, SQLSMALLINT
nFieldIdentifier, SQLPOINTER pValuePtr, SQLINTEGER nBufferLength )

Modified: MYODBCDes/MYODBCDesLib/MYODBCDesIRD.cpp
===================================================================
--- MYODBCDes/MYODBCDesLib/MYODBCDesIRD.cpp	2006-01-04 06:58:46 UTC (rev 28)
+++ MYODBCDes/MYODBCDesLib/MYODBCDesIRD.cpp	2006-01-05 05:07:04 UTC (rev 29)
@@ -2,8 +2,6 @@
 
 MYODBCDesIRD::MYODBCDesIRD( SQLHANDLE hOwner )
 {
-    nTypeSubID = MYODBC_RTTI_DES_IRD;
-
     /* add bookmark record at index 0 */
     /*
         \internal ODBC Rule
@@ -15,10 +13,10 @@
         or by an ODBC 2.x application working with an ODBC 3.x 
         driver.)
     */    
-    pdesrec = new MYODBCDesRecIRD( this );
-    pdesrec->setConciseType( SQL_BINARY );
-    pdesrec->setType( SQL_BINARY );
-    pdesrec->setDatetimeIntervalCode( 0 );
+    MYODBCDesRecIRD *precord = new MYODBCDesRecIRD( this );
+    precord->setConciseType( SQL_BINARY );
+    precord->setType( SQL_BINARY );
+    precord->setDatetimeIntervalCode( 0 );
 }
 
 SQLRETURN MYODBCDesIRD::setDescField( SQLSMALLINT nRecNumber, SQLSMALLINT
nFieldIdentifier, SQLPOINTER pValuePtr, SQLINTEGER nBufferLength )

Modified: MYODBCDes/MYODBCDesLib/MYODBCDesInternal.h
===================================================================
--- MYODBCDes/MYODBCDesLib/MYODBCDesInternal.h	2006-01-04 06:58:46 UTC (rev 28)
+++ MYODBCDes/MYODBCDesLib/MYODBCDesInternal.h	2006-01-05 05:07:04 UTC (rev 29)
@@ -2,6 +2,11 @@
 #define MYODBC_DES_INTERNAL_H
 
 #include "../include/MYODBCDes.h"
+#include "../include/MYODBCDesAPD.h"
+#include "../include/MYODBCDesARD.h"
+#include "../include/MYODBCDesIPD.h"
+#include "../include/MYODBCDesIRD.h"
+#include "MYODBCDesRec.h"
 #include "MYODBCDesRecAPD.h"
 #include "MYODBCDesRecARD.h"
 #include "MYODBCDesRecIPD.h"

Modified: MYODBCDes/MYODBCDesLib/MYODBCDesLib.pro
===================================================================
--- MYODBCDes/MYODBCDesLib/MYODBCDesLib.pro	2006-01-04 06:58:46 UTC (rev 28)
+++ MYODBCDes/MYODBCDesLib/MYODBCDesLib.pro	2006-01-05 05:07:04 UTC (rev 29)
@@ -7,12 +7,13 @@
 include( ../../common.pri )
 include( ../../config.pri )
 include( ../../defines.pri )
+include( ../../odbc.pri )
 CONFIG		+= staticlib
+CONFIG          += console
 INCLUDEPATH	+= ../../MYODBCC/include
-INCLUDEPATH	+= ../../MYODBCArray/include
-INCLUDEPATH	+= ../../MYODBCList/include
-INCLUDEPATH	+= ../../MYODBCRtti/include
+INCLUDEPATH	+= ../../MYODBCDbg/include
 INCLUDEPATH	+= ../../MYODBCDia/include
+INCLUDEPATH	+= ../include
 
 # #########################################################
 # UNIX
@@ -35,34 +36,26 @@
 # #########################################################
 HEADERS		= \
 		../include/MYODBCDes.h \
+		../include/MYODBCDesAPD.h \
+		../include/MYODBCDesARD.h \
+		../include/MYODBCDesIPD.h \
+		../include/MYODBCDesIRD.h \
+                MYODBCDesRec.h \
+                MYODBCDesRecAPD.h \
+                MYODBCDesRecARD.h \
+                MYODBCDesRecIPD.h \
+                MYODBCDesRecIRD.h \
 		MYODBCDesInternal.h
 		
 SOURCES		= \
-		MYODBCDesAlloc.c \
-		MYODBCDesCount.c \
-		MYODBCDesDump.c \
-		MYODBCDesSetFreeExtra.c \
-		MYODBCDesFree.c \
-		MYODBCDesGetLength.c \
-		MYODBCDesMorph.c \
-		MYODBCDesRecAlloc.c \
-		MYODBCDesRecAllocExt.c \
-		MYODBCDesRecClear.c \
-		MYODBCDesRecConciseType.c \
-		MYODBCDesRecConciseTypeC.c \
-		MYODBCDesRecConciseTypeSQL.c \
-		MYODBCDesRecCopy.c \
-		MYODBCDesRecDump.c \
-		MYODBCDesRecSetFreeExtra.c \
-		MYODBCDesRecFree.c \
-		MYODBCDesRecGet.c \
-		MYODBCDesRecIntervalCode.c \
-		MYODBCDesRecIrdInteger.c \
-		MYODBCDesRecIrdSmallInt.c \
-		MYODBCDesRecIrdVarChar.c \
-		MYODBCDesRecsFree.c \
-		MYODBCDesRecType.c \
-		MYODBCDesRecTypeC.c \
-		MYODBCDesRecTypeSQL.c \
-		MYODBCDesRecUnbind.c
+		MYODBCDes.cpp \
+		MYODBCDesAPD.cpp \
+		MYODBCDesARD.cpp \
+		MYODBCDesIPD.cpp \
+		MYODBCDesIRD.cpp \
+                MYODBCDesRec.cpp \
+                MYODBCDesRecAPD.cpp \
+                MYODBCDesRecARD.cpp \
+                MYODBCDesRecIPD.cpp \
+                MYODBCDesRecIRD.cpp
 

Modified: MYODBCDes/MYODBCDesLib/MYODBCDesLib.vpj
===================================================================
--- MYODBCDes/MYODBCDesLib/MYODBCDesLib.vpj	2006-01-04 06:58:46 UTC (rev 28)
+++ MYODBCDes/MYODBCDesLib/MYODBCDesLib.vpj	2006-01-05 05:07:04 UTC (rev 29)
@@ -41,7 +41,7 @@
 				Deletable="0"
 				SaveOption="SaveWorkspaceFiles"
 				RunFromDir="%rw">
-				<Exec CmdLine="qmake; make"/>
+				<Exec CmdLine="make"/>
 			</Target>
 			<Target
 				Name="Rebuild"
@@ -129,7 +129,7 @@
 				Deletable="0"
 				SaveOption="SaveWorkspaceFiles"
 				RunFromDir="%rw">
-				<Exec CmdLine="qmake; make"/>
+				<Exec CmdLine="make"/>
 			</Target>
 			<Target
 				Name="Rebuild"

Modified: MYODBCDes/MYODBCDesLib/MYODBCDesRec.cpp
===================================================================
--- MYODBCDes/MYODBCDesLib/MYODBCDesRec.cpp	2006-01-04 06:58:46 UTC (rev 28)
+++ MYODBCDes/MYODBCDesLib/MYODBCDesRec.cpp	2006-01-05 05:07:04 UTC (rev 29)
@@ -12,7 +12,7 @@
     
     \sa     MYODBCDesRecFree
 */    
-MYODBCResRec::MYODBCResRec( MYODBCDes *pdes )
+MYODBCDesRec::MYODBCDesRec( MYODBCDes *pdes )
 {
     MYODBCDbgEnter();
 
@@ -37,7 +37,7 @@
 
     \sa     MYODBCDesRecAllocExt    
 */
-MYODBCResRec::~MYODBCResRec()
+MYODBCDesRec::~MYODBCDesRec()
 {
     MYODBCDbgEnter();
 
@@ -46,8 +46,12 @@
     MYODBCDbgReturn2();
 }
 
-SQLRETURN MYODBCResRec::setAutoUniqueValue( SQLINTEGER nAutoUniqueValue )
+SQLRETURN MYODBCDesRec::setDescRec( SQLSMALLINT nType, SQLSMALLINT nSubType, SQLINTEGER
nLength, SQLSMALLINT nPrecision, SQLSMALLINT nScale, SQLPOINTER pDataPtr, SQLINTEGER
*pnStringLengthPtr, SQLINTEGER *pnIndicatorPtr )
 {
+}
+
+SQLRETURN MYODBCDesRec::setAutoUniqueValue( SQLINTEGER nAutoUniqueValue )
+{
     MYODBCDbgEnter();
 
     this->nAutoUniqueValue = nAutoUniqueValue;
@@ -55,7 +59,7 @@
     MYODBCDbgReturn( SQL_SUCCESS );
 }
 
-SQLRETURN MYODBCResRec::setBaseColumnName( const QString &stringBaseColumnName )
+SQLRETURN MYODBCDesRec::setBaseColumnName( const QString &stringBaseColumnName )
 {
     MYODBCDbgEnter();
 
@@ -64,7 +68,7 @@
     MYODBCDbgReturn( SQL_SUCCESS );
 }
 
-SQLRETURN MYODBCResRec::setBaseTableName( const QString &stringBaseTableName )
+SQLRETURN MYODBCDesRec::setBaseTableName( const QString &stringBaseTableName )
 {
     MYODBCDbgEnter();
 
@@ -73,7 +77,7 @@
     MYODBCDbgReturn( SQL_SUCCESS );
 }
 
-SQLRETURN MYODBCResRec::setCaseSensitive( SQLINTEGER nCaseSensitive )
+SQLRETURN MYODBCDesRec::setCaseSensitive( SQLINTEGER nCaseSensitive )
 {
     MYODBCDbgEnter();
 
@@ -82,7 +86,7 @@
     MYODBCDbgReturn( SQL_SUCCESS );
 }
 
-SQLRETURN MYODBCResRec::setCatalogName( const QString &stringCatalogName )
+SQLRETURN MYODBCDesRec::setCatalogName( const QString &stringCatalogName )
 {
     MYODBCDbgEnter();
 
@@ -91,7 +95,7 @@
     MYODBCDbgReturn( SQL_SUCCESS );
 }
 
-SQLRETURN MYODBCResRec::setConciseType( SQLSMALLINT nConciseType )
+SQLRETURN MYODBCDesRec::setConciseType( SQLSMALLINT nConciseType )
 {
     MYODBCDbgEnter();
 
@@ -100,7 +104,7 @@
     MYODBCDbgReturn( SQL_SUCCESS );
 }
 
-SQLRETURN MYODBCResRec::setDataPtr( SQLPOINTER pDataPtr ) 
+SQLRETURN MYODBCDesRec::setDataPtr( SQLPOINTER pDataPtr ) 
 {
     MYODBCDbgEnter();
 
@@ -109,7 +113,7 @@
     MYODBCDbgReturn( SQL_SUCCESS );
 }
 
-SQLRETURN MYODBCResRec::setDatetimeIntervalCode( SQLSMALLINT nDatetimeIntervalCode )
+SQLRETURN MYODBCDesRec::setDatetimeIntervalCode( SQLSMALLINT nDatetimeIntervalCode )
 {
     MYODBCDbgEnter();
 
@@ -118,7 +122,7 @@
     MYODBCDbgReturn( SQL_SUCCESS );
 }
 
-SQLRETURN MYODBCResRec::setDatetimeIntervalPrecision( SQLINTEGER
nDatetimeIntervalPrecision )
+SQLRETURN MYODBCDesRec::setDatetimeIntervalPrecision( SQLINTEGER
nDatetimeIntervalPrecision )
 {
     MYODBCDbgEnter();
 
@@ -127,7 +131,7 @@
     MYODBCDbgReturn( SQL_SUCCESS );
 }
 
-SQLRETURN MYODBCResRec::setDisplaySize( SQLINTEGER nDisplaySize ) 
+SQLRETURN MYODBCDesRec::setDisplaySize( SQLINTEGER nDisplaySize ) 
 {
     MYODBCDbgEnter();
 
@@ -136,7 +140,7 @@
     MYODBCDbgReturn( SQL_SUCCESS );
 }
 
-SQLRETURN MYODBCResRec::setFixedPrecScale( SQLSMALLINT nFixedPrecScale )
+SQLRETURN MYODBCDesRec::setFixedPrecScale( SQLSMALLINT nFixedPrecScale )
 {
     MYODBCDbgEnter();
 
@@ -145,7 +149,7 @@
     MYODBCDbgReturn( SQL_SUCCESS );
 }
 
-SQLRETURN MYODBCResRec::setIndicatorPtr( SQLINTEGER *pnIndicatorPtr )
+SQLRETURN MYODBCDesRec::setIndicatorPtr( SQLINTEGER *pnIndicatorPtr )
 {
     MYODBCDbgEnter();
 
@@ -154,7 +158,7 @@
     MYODBCDbgReturn( SQL_SUCCESS );
 }
 
-SQLRETURN MYODBCResRec::setLabel( const QString &stringLabel )
+SQLRETURN MYODBCDesRec::setLabel( const QString &stringLabel )
 {
     MYODBCDbgEnter();
 
@@ -163,7 +167,7 @@
     MYODBCDbgReturn( SQL_SUCCESS );
 }
 
-SQLRETURN MYODBCResRec::setLength( SQLUINTEGER nLength )
+SQLRETURN MYODBCDesRec::setLength( SQLUINTEGER nLength )
 {
     MYODBCDbgEnter();
 
@@ -172,7 +176,7 @@
     MYODBCDbgReturn( SQL_SUCCESS );
 }
 
-SQLRETURN MYODBCResRec::setLiteralPrefix( const QString &stringLiteralPrefix )
+SQLRETURN MYODBCDesRec::setLiteralPrefix( const QString &stringLiteralPrefix )
 {
     MYODBCDbgEnter();
 
@@ -181,7 +185,7 @@
     MYODBCDbgReturn( SQL_SUCCESS );
 }
 
-SQLRETURN MYODBCResRec::setLiteralSuffix( const QString &stringLiteralSuffix )
+SQLRETURN MYODBCDesRec::setLiteralSuffix( const QString &stringLiteralSuffix )
 {
     MYODBCDbgEnter();
 
@@ -190,7 +194,7 @@
     MYODBCDbgReturn( SQL_SUCCESS );
 }
 
-SQLRETURN MYODBCResRec::setLocalTypeName( const QString &stringLocalTypeName )
+SQLRETURN MYODBCDesRec::setLocalTypeName( const QString &stringLocalTypeName )
 {
     MYODBCDbgEnter();
 
@@ -199,7 +203,7 @@
     MYODBCDbgReturn( SQL_SUCCESS );
 }
 
-SQLRETURN MYODBCResRec::setName( const QString &stringName )
+SQLRETURN MYODBCDesRec::setName( const QString &stringName )
 {
     MYODBCDbgEnter();
 
@@ -208,7 +212,7 @@
     MYODBCDbgReturn( SQL_SUCCESS );
 }
 
-SQLRETURN MYODBCResRec::setNullable( SQLSMALLINT nNullable )
+SQLRETURN MYODBCDesRec::setNullable( SQLSMALLINT nNullable )
 {
     MYODBCDbgEnter();
 
@@ -217,7 +221,7 @@
     MYODBCDbgReturn( SQL_SUCCESS );
 }
 
-SQLRETURN MYODBCResRec::setNumPrecRadix( SQLINTEGER nNumPrecRadix )
+SQLRETURN MYODBCDesRec::setNumPrecRadix( SQLINTEGER nNumPrecRadix )
 {
     MYODBCDbgEnter();
 
@@ -226,7 +230,7 @@
     MYODBCDbgReturn( SQL_SUCCESS );
 }
 
-SQLRETURN MYODBCResRec::setOctetLength( SQLINTEGER nOctetLength )
+SQLRETURN MYODBCDesRec::setOctetLength( SQLINTEGER nOctetLength )
 {
     MYODBCDbgEnter();
 
@@ -235,7 +239,7 @@
     MYODBCDbgReturn( SQL_SUCCESS );
 }
 
-SQLRETURN MYODBCResRec::setOctetLengthPtr( SQLINTEGER *pnOctetLengthPtr )
+SQLRETURN MYODBCDesRec::setOctetLengthPtr( SQLINTEGER *pnOctetLengthPtr )
 {
     MYODBCDbgEnter();
 
@@ -244,7 +248,7 @@
     MYODBCDbgReturn( SQL_SUCCESS );
 }
 
-SQLRETURN MYODBCResRec::setParamterType( SQLSMALLINT nParamterType )
+SQLRETURN MYODBCDesRec::setParamterType( SQLSMALLINT nParamterType )
 {
     MYODBCDbgEnter();
 
@@ -253,7 +257,7 @@
     MYODBCDbgReturn( SQL_SUCCESS );
 }
 
-SQLRETURN MYODBCResRec::setPrecision( SQLSMALLINT nPrecision )
+SQLRETURN MYODBCDesRec::setPrecision( SQLSMALLINT nPrecision )
 {
     MYODBCDbgEnter();
 
@@ -262,7 +266,7 @@
     MYODBCDbgReturn( SQL_SUCCESS );
 }
 
-SQLRETURN MYODBCResRec::setRowver( SQLSMALLINT nRowver )
+SQLRETURN MYODBCDesRec::setRowver( SQLSMALLINT nRowver )
 {
     MYODBCDbgEnter();
 
@@ -271,7 +275,7 @@
     MYODBCDbgReturn( SQL_SUCCESS );
 }
 
-SQLRETURN MYODBCResRec::setScale( SQLSMALLINT nScale )
+SQLRETURN MYODBCDesRec::setScale( SQLSMALLINT nScale )
 {
     MYODBCDbgEnter();
 
@@ -280,7 +284,7 @@
     MYODBCDbgReturn( SQL_SUCCESS );
 }
 
-SQLRETURN MYODBCResRec::setSchemaName( const QString &stringSchemaName )
+SQLRETURN MYODBCDesRec::setSchemaName( const QString &stringSchemaName )
 {
     MYODBCDbgEnter();
 
@@ -289,7 +293,7 @@
     MYODBCDbgReturn( SQL_SUCCESS );
 }
 
-SQLRETURN MYODBCResRec::setSearchable( SQLSMALLINT nSearchable )
+SQLRETURN MYODBCDesRec::setSearchable( SQLSMALLINT nSearchable )
 {
     MYODBCDbgEnter();
 
@@ -298,7 +302,7 @@
     MYODBCDbgReturn( SQL_SUCCESS );
 }
 
-SQLRETURN MYODBCResRec::setTableName( const QString &stringTableName )
+SQLRETURN MYODBCDesRec::setTableName( const QString &stringTableName )
 {
     MYODBCDbgEnter();
 
@@ -307,7 +311,7 @@
     MYODBCDbgReturn( SQL_SUCCESS );
 }
 
-SQLRETURN MYODBCResRec::setType( SQLSMALLINT nType )
+SQLRETURN MYODBCDesRec::setType( SQLSMALLINT nType )
 {
     MYODBCDbgEnter();
 
@@ -316,7 +320,7 @@
     MYODBCDbgReturn( SQL_SUCCESS );
 }
 
-SQLRETURN MYODBCResRec::setTypeName( const QString &stringTypeName )
+SQLRETURN MYODBCDesRec::setTypeName( const QString &stringTypeName )
 {
     MYODBCDbgEnter();
 
@@ -325,7 +329,7 @@
     MYODBCDbgReturn( SQL_SUCCESS );
 }
 
-SQLRETURN MYODBCResRec::setUnnamed( SQLSMALLINT nUnnamed )
+SQLRETURN MYODBCDesRec::setUnnamed( SQLSMALLINT nUnnamed )
 {
     MYODBCDbgEnter();
 
@@ -334,7 +338,7 @@
     MYODBCDbgReturn( SQL_SUCCESS );
 }
 
-SQLRETURN MYODBCResRec::setUnsigned( SQLSMALLINT nUnsigned )
+SQLRETURN MYODBCDesRec::setUnsigned( SQLSMALLINT nUnsigned )
 {
     MYODBCDbgEnter();
 
@@ -343,7 +347,7 @@
     MYODBCDbgReturn( SQL_SUCCESS );
 }
 
-SQLRETURN MYODBCResRec::setUpdatable( SQLSMALLINT nUpdatable )
+SQLRETURN MYODBCDesRec::setUpdatable( SQLSMALLINT nUpdatable )
 {
     MYODBCDbgEnter();
 
@@ -352,7 +356,7 @@
     MYODBCDbgReturn( SQL_SUCCESS );
 }
 
-SQLRETURN MYODBCResRec::getDescRec( SQLWCHAR *pszName, SQLSMALLINT nBufferLength,
SQLSMALLINT *pnStringLengthPtr, SQLSMALLINT *pnTypePtr, SQLSMALLINT *pnSubTypePtr,
SQLINTEGER *pnLengthPtr, SQLSMALLINT *pnPrecisionPtr, SQLSMALLINT *pnScalePtr,
SQLSMALLINT *pnNullablePtr )
+SQLRETURN MYODBCDesRec::getDescRec( SQLWCHAR *pszName, SQLSMALLINT nBufferLength,
SQLSMALLINT *pnStringLengthPtr, SQLSMALLINT *pnTypePtr, SQLSMALLINT *pnSubTypePtr,
SQLINTEGER *pnLengthPtr, SQLSMALLINT *pnPrecisionPtr, SQLSMALLINT *pnScalePtr,
SQLSMALLINT *pnNullablePtr )
 {
     SQLRETURN   nReturn;
     bool        bHasInfo = false;
@@ -409,7 +413,7 @@
     MYODBCDbgReturn( SQL_SUCCESS );
 }
 
-SQLRETURN MYODBCResRec::getDescField( SQLSMALLINT nFieldIdentifier, SQLPOINTER pValuePtr,
SQLINTEGER nBufferLength, SQLINTEGER *pnStringLengthPtr )
+SQLRETURN MYODBCDesRec::getDescField( SQLSMALLINT nFieldIdentifier, SQLPOINTER pValuePtr,
SQLINTEGER nBufferLength, SQLINTEGER *pnStringLengthPtr )
 {
     SQLINTEGER nStringLength;
 
@@ -461,7 +465,7 @@
 
         case SQL_DESC_CATALOG_NAME:
             MYODBCCstrncpy( (SQLWCHAR*)pValuePtr, nBufferLength / sizeof(SQLWCHAR),
getCatalogName().utf16(), _TRUNCATE );
-            *pnStringLengthPtr = getCatalogNameName().length() * sizeof(SQLWCHAR);
+            *pnStringLengthPtr = getCatalogName().length() * sizeof(SQLWCHAR);
             if ( *pnStringLengthPtr > nBufferLength )
                 MYODBCDbgReturn( SQL_SUCCESS_WITH_INFO );
             break;
@@ -617,238 +621,238 @@
     MYODBCDbgReturn( SQL_SUCCESS );
 }
 
-SQLINTEGER MYODBCResRec::getAutoUniqueValue()
+SQLINTEGER MYODBCDesRec::getAutoUniqueValue()
 {
     MYODBCDbgEnter();
 
     MYODBCDbgReturn3( nAutoUniqueValue );
 }
 
-QString     MYODBCResRec::getBaseColumnName()
+QString     MYODBCDesRec::getBaseColumnName()
 {
     MYODBCDbgEnter();
 
     MYODBCDbgReturn3( stringBaseColumnName );
 }
 
-QString     MYODBCResRec::getBaseTableName()
+QString     MYODBCDesRec::getBaseTableName()
 {
     MYODBCDbgEnter();
 
     MYODBCDbgReturn3( stringBaseTableName );
 }
 
-SQLINTEGER  MYODBCResRec::getCaseSensitive()
+SQLINTEGER  MYODBCDesRec::getCaseSensitive()
 {
     MYODBCDbgEnter();
 
     MYODBCDbgReturn3( nCaseSensitive );
 }
 
-QString     MYODBCResRec::getCatalogName()
+QString     MYODBCDesRec::getCatalogName()
 {
     MYODBCDbgEnter();
 
     MYODBCDbgReturn3( stringCatalogName );
 }
 
-SQLSMALLINT MYODBCResRec::getConciseType()
+SQLSMALLINT MYODBCDesRec::getConciseType()
 {
     MYODBCDbgEnter();
 
     MYODBCDbgReturn3( nConciseType );
 }
 
-SQLPOINTER  MYODBCResRec::getDataPtr()
+SQLPOINTER  MYODBCDesRec::getDataPtr()
 {
     MYODBCDbgEnter();
 
     MYODBCDbgReturn3( pDataPtr );
 }
 
-SQLSMALLINT MYODBCResRec::getDatetimeIntervalCode()
+SQLSMALLINT MYODBCDesRec::getDatetimeIntervalCode()
 {
     MYODBCDbgEnter();
 
     MYODBCDbgReturn3( nDatetimeIntervalCode );
 }
 
-SQLINTEGER  MYODBCResRec::getDatetimeIntervalPrecision()
+SQLINTEGER  MYODBCDesRec::getDatetimeIntervalPrecision()
 {
     MYODBCDbgEnter();
 
     MYODBCDbgReturn3( nDatetimeIntervalPrecision );
 }
 
-SQLINTEGER  MYODBCResRec::getDisplaySize() 
+SQLINTEGER  MYODBCDesRec::getDisplaySize() 
 {
     MYODBCDbgEnter();
 
     MYODBCDbgReturn3( nDisplaySize );
 }
 
-SQLSMALLINT MYODBCResRec::getFixedPrecScale()
+SQLSMALLINT MYODBCDesRec::getFixedPrecScale()
 {
     MYODBCDbgEnter();
 
     MYODBCDbgReturn3( nFixedPrecScale );
 }
 
-SQLINTEGER *MYODBCResRec::getIndicatorPtr()
+SQLINTEGER *MYODBCDesRec::getIndicatorPtr()
 {
     MYODBCDbgEnter();
 
     MYODBCDbgReturn3( pnIndicatorPtr );
 }
 
-QString     MYODBCResRec::getLabel()
+QString     MYODBCDesRec::getLabel()
 {
     MYODBCDbgEnter();
 
     MYODBCDbgReturn3( stringLabel );
 }
 
-SQLUINTEGER MYODBCResRec::getLength()
+SQLUINTEGER MYODBCDesRec::getLength()
 {
     MYODBCDbgEnter();
 
     MYODBCDbgReturn3( nLength );
 }
 
-QString     MYODBCResRec::getLiteralPrefix()
+QString     MYODBCDesRec::getLiteralPrefix()
 {
     MYODBCDbgEnter();
 
     MYODBCDbgReturn3( stringLiteralPrefix );
 }
 
-QString     MYODBCResRec::getLiteralSuffix()
+QString     MYODBCDesRec::getLiteralSuffix()
 {
     MYODBCDbgEnter();
 
     MYODBCDbgReturn3( stringLiteralSuffix );
 }
 
-QString     MYODBCResRec::getLocalTypeName()
+QString     MYODBCDesRec::getLocalTypeName()
 {
     MYODBCDbgEnter();
 
     MYODBCDbgReturn3( stringLocalTypeName );
 }
 
-QString     MYODBCResRec::getName()
+QString     MYODBCDesRec::getName()
 {
     MYODBCDbgEnter();
 
     MYODBCDbgReturn3( stringName );
 }
 
-SQLSMALLINT MYODBCResRec::getNullable()
+SQLSMALLINT MYODBCDesRec::getNullable()
 {
     MYODBCDbgEnter();
 
     MYODBCDbgReturn3( nNullable );
 }
 
-SQLINTEGER  MYODBCResRec::getNumPrecRadix()
+SQLINTEGER  MYODBCDesRec::getNumPrecRadix()
 {
     MYODBCDbgEnter();
 
     MYODBCDbgReturn3( nNumPrecRadix );
 }
 
-SQLINTEGER  MYODBCResRec::getOctetLength()
+SQLINTEGER  MYODBCDesRec::getOctetLength()
 {
     MYODBCDbgEnter();
 
     MYODBCDbgReturn3( nOctetLength );
 }
 
-SQLINTEGER *MYODBCResRec::getOctetLengthPtr()
+SQLINTEGER *MYODBCDesRec::getOctetLengthPtr()
 {
     MYODBCDbgEnter();
 
     MYODBCDbgReturn3( pnOctetLengthPtr );
 }
 
-SQLSMALLINT MYODBCResRec::getParamterType()
+SQLSMALLINT MYODBCDesRec::getParamterType()
 {
     MYODBCDbgEnter();
 
     MYODBCDbgReturn3( nParamterType );
 }
 
-SQLSMALLINT MYODBCResRec::getPrecision()
+SQLSMALLINT MYODBCDesRec::getPrecision()
 {
     MYODBCDbgEnter();
 
     MYODBCDbgReturn3( nPrecision );
 }
 
-SQLSMALLINT MYODBCResRec::getRowver()
+SQLSMALLINT MYODBCDesRec::getRowver()
 {
     MYODBCDbgEnter();
 
     MYODBCDbgReturn3( nRowver );
 }
 
-SQLSMALLINT MYODBCResRec::getScale()
+SQLSMALLINT MYODBCDesRec::getScale()
 {
     MYODBCDbgEnter();
 
     MYODBCDbgReturn3( nScale );
 }
 
-QString     MYODBCResRec::getSchemaName()
+QString     MYODBCDesRec::getSchemaName()
 {
     MYODBCDbgEnter();
 
     MYODBCDbgReturn3( stringSchemaName );
 }
 
-SQLSMALLINT MYODBCResRec::getSearchable()
+SQLSMALLINT MYODBCDesRec::getSearchable()
 {
     MYODBCDbgEnter();
 
     MYODBCDbgReturn3( nSearchable );
 }
 
-QString     MYODBCResRec::getTableName()
+QString     MYODBCDesRec::getTableName()
 {
     MYODBCDbgEnter();
 
     MYODBCDbgReturn3( stringTableName );
 }
 
-SQLSMALLINT MYODBCResRec::getType()
+SQLSMALLINT MYODBCDesRec::getType()
 {
     MYODBCDbgEnter();
 
     MYODBCDbgReturn3( nType );
 }
 
-QString     MYODBCResRec::getTypeName()
+QString     MYODBCDesRec::getTypeName()
 {
     MYODBCDbgEnter();
 
     MYODBCDbgReturn3( stringTypeName );
 }
 
-SQLSMALLINT MYODBCResRec::getUnnamed()
+SQLSMALLINT MYODBCDesRec::getUnnamed()
 {
     MYODBCDbgEnter();
 
     MYODBCDbgReturn3( nUnnamed );
 }
 
-SQLSMALLINT MYODBCResRec::getUnsigned()
+SQLSMALLINT MYODBCDesRec::getUnsigned()
 {
     MYODBCDbgEnter();
 
     MYODBCDbgReturn3( nUnsigned );
 }
 
-SQLSMALLINT MYODBCResRec::getUpdatable()
+SQLSMALLINT MYODBCDesRec::getUpdatable()
 {
     MYODBCDbgEnter();
 
@@ -856,7 +860,7 @@
 }
 
 
-SQLRETURN MYODBCResRec::doUnbind()
+SQLRETURN MYODBCDesRec::doUnbind()
 {
     MYODBCDbgEnter();
 
@@ -865,7 +869,7 @@
     MYODBCDbgReturn( SQL_SUCCESS );
 }
 
-SQLRETURN MYODBCResRec::setIntervalCode( SQLSMALLINT nDateTimeIntervalCode )
+SQLRETURN MYODBCDesRec::setIntervalCode( SQLSMALLINT nDateTimeIntervalCode )
 {
     MYODBCDbgEnter();
 
@@ -1633,4 +1637,16 @@
     MYODBCDbgReturn( pdes->dia.doAppend( MYODBC_DIA_HY092, 0, NULL ) );
 }
 
+SQLRETURN MYODBCDesRec::doConsistencyCheck()
+{
+    MYODBCDbgEnter();
 
+    /*! \todo 
+
+        Most of this stuff is done when fields set but need to ensure all is 
+        addressed as per spec.
+    */
+
+    MYODBCDbgReturn( SQL_SUCCESS );
+}
+

Modified: MYODBCDes/MYODBCDesLib/MYODBCDesRec.h
===================================================================
--- MYODBCDes/MYODBCDesLib/MYODBCDesRec.h	2006-01-04 06:58:46 UTC (rev 28)
+++ MYODBCDes/MYODBCDesLib/MYODBCDesRec.h	2006-01-05 05:07:04 UTC (rev 29)
@@ -27,14 +27,14 @@
 /* forward declare */
 class MYODBCDes;
 
-class MYODBCResRec
+class MYODBCDesRec
 {
 public:
-    MYODBCResRec( MYODBCDes *pdes );
-    ~MYODBCResRec();
+    MYODBCDesRec( MYODBCDes *pdes );
+    ~MYODBCDesRec();
 
     /* setters */
-    virtual SQLRETURN setDescRec( SQLSMALLINT nType, SQLSMALLINT nSubType, SQLINTEGER
nLength, SQLSMALLINT nPrecision, SQLSMALLINT nScale, SQLPOINTER pDataPtr, SQLINTEGER
*pnStringLengthPtr, SQLINTEGER *pnIndicatorPtr ) = 0;
+    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 ) = 0;
 
     virtual SQLRETURN setAutoUniqueValue( SQLINTEGER nAutoUniqueValue );
@@ -163,6 +163,8 @@
     virtual SQLRETURN setTypeSQL( SQLSMALLINT nType );
     virtual SQLRETURN setConciseTypeC( SQLSMALLINT nConciseType );
     virtual SQLRETURN setConciseTypeSQL( SQLSMALLINT nConciseType );
+
+    virtual SQLRETURN doConsistencyCheck();
 };
 
 #endif

Modified: MYODBCDes/MYODBCDesLib/MYODBCDesRecAPD.cpp
===================================================================
--- MYODBCDes/MYODBCDesLib/MYODBCDesRecAPD.cpp	2006-01-04 06:58:46 UTC (rev 28)
+++ MYODBCDes/MYODBCDesLib/MYODBCDesRecAPD.cpp	2006-01-05 05:07:04 UTC (rev 29)
@@ -1,9 +1,30 @@
 #include "MYODBCDesInternal.h"
 
-SQLRETURN MYODBCDesIRD::setDescField( SQLSMALLINT nFieldIdentifier, SQLPOINTER pValuePtr,
SQLINTEGER nBufferLength )
+/*!
+    \brief  zzzzz
+    
+            zzzzz
+
+    \param  zzzzz
+
+    \return zzzzz
+
+    \sa     zzzzz
+*/    
+MYODBCDesRecAPD::MYODBCDesRecAPD( MYODBCDesAPD *pdes )
+    : MYODBCResRec( pdes )
 {
     MYODBCDbgEnter();
 
+    Q_ASSERT( !pdes );
+
+    MYODBCDbgReturn2();
+}
+
+SQLRETURN MYODBCDesRecAPD::setDescField( SQLSMALLINT nFieldIdentifier, SQLPOINTER
pValuePtr, SQLINTEGER nBufferLength )
+{
+    MYODBCDbgEnter();
+
     /*! \internal ODBC Rule
 
         If an application calls SQLSetDescField to set any field other than
SQL_DESC_COUNT or the 

Modified: MYODBCDes/MYODBCDesLib/MYODBCDesRecAPD.h
===================================================================
--- MYODBCDes/MYODBCDesLib/MYODBCDesRecAPD.h	2006-01-04 06:58:46 UTC (rev 28)
+++ MYODBCDes/MYODBCDesLib/MYODBCDesRecAPD.h	2006-01-05 05:07:04 UTC (rev 29)
@@ -3,14 +3,12 @@
 
 class MYODBCDesAPD;
 
-class MYODBCDesRecAPD
+class MYODBCDesRecAPD : public MYODBCDesRec
 {
 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 */

Modified: MYODBCDes/MYODBCDesLib/MYODBCDesRecARD.cpp
===================================================================
--- MYODBCDes/MYODBCDesLib/MYODBCDesRecARD.cpp	2006-01-04 06:58:46 UTC (rev 28)
+++ MYODBCDes/MYODBCDesLib/MYODBCDesRecARD.cpp	2006-01-05 05:07:04 UTC (rev 29)
@@ -1,153 +1,377 @@
 #include "MYODBCDesInternal.h"
 
-SQLRETURN MYODBCDesIRD::setDescField( SQLSMALLINT nRecNumber, SQLSMALLINT
nFieldIdentifier, SQLPOINTER pValuePtr, SQLINTEGER nBufferLength )
+/*!
+    \brief  zzzzz
+    
+            zzzzz
+
+    \param  zzzzz
+
+    \return zzzzz
+
+    \sa     zzzzz
+*/    
+MYODBCDesRecARD::MYODBCDesRecARD( MYODBCDesARD *pdes )
+    : MYODBCResRec( pdes )
 {
     MYODBCDbgEnter();
 
-    /*!
-        \internal ODBC Rule
+    Q_ASSERT( !pdes );
 
-        If an application calls SQLSetDescField to set any field other 
-        than SQL_DESC_COUNT or the deferred fields SQL_DESC_DATA_PTR, 
-        SQL_DESC_OCTET_LENGTH_PTR, or SQL_DESC_INDICATOR_PTR, the record 
-        becomes unbound.
+    MYODBCDbgReturn2();
+}
+
+SQLRETURN MYODBCDesRecARD::setDescField( SQLSMALLINT nFieldIdentifier, SQLPOINTER
pValuePtr, SQLINTEGER nBufferLength )
+{
+    MYODBCDbgEnter();
+
+    /*! \internal ODBC Rule
+
+        If an application calls SQLSetDescField to set any field other than
SQL_DESC_COUNT or the 
+        deferred fields SQL_DESC_DATA_PTR, SQL_DESC_OCTET_LENGTH_PTR, or
SQL_DESC_INDICATOR_PTR, 
+        the record becomes unbound.
     */
+    if ( nFieldIdentifier != SQL_DESC_DATA_PTR &&
+         nFieldIdentifier != SQL_DESC_OCTET_LENGTH_PTR &&
+         nFieldIdentifier != SQL_DESC_INDICATOR_PTR )
+    {
+        doUnbind();
+    }
 
-    /* the above rule is covered by the; doUnbind() calls */
-
-    /* header field? */
     switch ( nFieldIdentifier )
     {
-        case SQL_DESC_ALLOC_TYPE:
+        case SQL_DESC_AUTO_UNIQUE_VALUE:
             /*!
                 \internal ODBC Rule
+      
+                ARD: Unused
+            */
+        case SQL_DESC_BASE_COLUMN_NAME:
+            /*!
+                \internal ODBC Rule
+      
+                ARD: Unused
+            */
+        case SQL_DESC_BASE_TABLE_NAME:
+            /*!
+                \internal ODBC Rule
+      
+                ARD: Unused
+            */
+        case SQL_DESC_CASE_SENSITIVE:
+            /*!
+                \internal ODBC Rule
+                
+                ARD: Unused
+            */
+        case SQL_DESC_CATALOG_NAME:
+            /*!
+                \internal ODBC Rule
+                
+                ARD: Unused
+            */
+            MYODBCDbgReturn( pdes->dia.doAppend( MYODBC_DIA_HY091, 0, NULL ) );
 
-                ARD: R
-                APD: R
-                IRD: R
-                IPD: R
+        case SQL_DESC_CONCISE_TYPE:
+            /*!
+                \internal ODBC Rule
+                
+                ARD: R/W                  
             */
-            MYODBCDbgReturn( dia.doAppend( MYODBC_DIA_HY091, 0, NULL ) );
+            MYODBCDbgReturn( setConciseTypeC( (SQLSMALLINT)pValuePtr ) );
 
-        case SQL_DESC_ARRAY_SIZE:
+        case SQL_DESC_DATA_PTR:
             /*!
                 \internal ODBC Rule
+                
+                ARD: R/W
+            */
+            {
+                bool        bHasInfo    = false;
+                SQLRETURN   nReturn     = setDataPtr( pValuePtr );
 
+                if ( nReturn == SQL_SUCCESS_WITH_INFO )
+                    bHasInfo = true;
+                if ( !SQL_SUCCEEDED( nReturn )  )
+                    MYODBCDbgReturn( nReturn );
+
+                /*!
+                    \internal ODBC Rule
+
+                    The SQL_DESC_DATA_PTR field in the IPD can be set to force a 
+                    consistency check. In a subsequent call to SQLGetDescField or 
+                    SQLGetDescRec, the driver is not required to return the value 
+                    that SQL_DESC_DATA_PTR was set to.          
+
+                    Whenever the SQL_DESC_DATA_PTR field of an ARD, APD, or IPD is set, 
+                    the driver checks that the value in the SQL_DESC_TYPE field contains 
+                    one of the valid ODBC C data types or a driver-specific data type, 
+                    and that all other fields affecting the data types are consistent.   
  
+                */
+                nReturn = doConsistencyCheck();
+                if ( nReturn == SQL_SUCCESS_WITH_INFO )
+                    bHasInfo = true;
+                if ( !SQL_SUCCEEDED( nReturn )  )
+                    MYODBCDbgReturn( nReturn );
+
+                if ( bHasInfo )
+                    MYODBCDbgReturn( SQL_SUCCESS_WITH_INFO );
+            }
+            MYODBCDbgReturn( SQL_SUCCEEDED );
+
+        case SQL_DESC_DATETIME_INTERVAL_CODE:
+            /*!
+                \internal ODBC Rule
+              
                 ARD: R/W
-                APD: R/W
-                IRD: Unused
-                IPD: Unused
             */
-            MYODBCDbgReturn( dia.doAppend( MYODBC_DIA_HY091, 0, NULL ) );
+            MYODBCDbgReturn( setIntervalCode( (SQLSMALLINT)pValuePtr ) );
 
-        case SQL_DESC_ARRAY_STATUS_PTR:
+        case SQL_DESC_DATETIME_INTERVAL_PRECISION:
             /*!
                 \internal ODBC Rule
+      
+                ARD: R/W
+            */
 
+            /*!
+                \internal ODBC Rule
+                
+                The number of digits for an exact numeric type, the number 
+                of bits in the mantissa (binary precision) for an approximate
+                numeric type, or the numbers of digits in the fractional 
+                seconds component for the SQL_TYPE_TIME, SQL_TYPE_TIMESTAMP, 
+                or SQL_INTERVAL_SECOND data type. This field is undefined for 
+                all other data types.
+            */
+            MYODBCDbgReturn( setDatetimeIntervalPrecision( (SQLSMALLINT)pValuePtr ) ); 
+
+        case SQL_DESC_DISPLAY_SIZE:
+            /*!
+                \internal ODBC Rule
+      
+                ARD: Unused
+            */
+        case SQL_DESC_FIXED_PREC_SCALE:
+            /*!
+                \internal ODBC Rule
+      
+                ARD: Unused
+            */
+            MYODBCDbgReturn( pdes->dia.doAppend( MYODBC_DIA_HY091, 0, NULL ) );
+
+        case SQL_DESC_INDICATOR_PTR:
+            /*!
+                \internal ODBC Rule
+      
                 ARD: R/W
-                APD: R/W
-                IRD: R/W
-                IPD: R/W          
-            */    
-            MYODBCDbgReturn( setArrayStatusPtr( (SQLUSMALLINT*)pValuePtr ) );
+            */
+            MYODBCDbgReturn( setIndicatorPtr( (SQLINTEGER*)pValuePtr ) );
 
-        case SQL_DESC_BIND_OFFSET_PTR:
-            /*! 
+        case SQL_DESC_LABEL:
+            /*!
                 \internal ODBC Rule
+      
+                ARD: Unused
+            */
+            MYODBCDbgReturn( pdes->dia.doAppend( MYODBC_DIA_HY091, 0, NULL ) );
 
+        case SQL_DESC_LENGTH:
+            /*!
+                \internal ODBC Rule
+      
                 ARD: R/W
-                APD: R/W
-                IRD: Unused
-                IPD: Unused
             */
-            MYODBCDbgReturn( dia.doAppend( MYODBC_DIA_HY091, 0, NULL ) );
+            MYODBCDbgReturn( setLength( (SQLUINTEGER)pValuePtr ) );
 
-        case SQL_DESC_BIND_TYPE:
+        case SQL_DESC_LITERAL_PREFIX:
             /*!
                 \internal ODBC Rule
+      
+                ARD: Unused
+            */
+        case SQL_DESC_LITERAL_SUFFIX:
+            /*!
+                \internal ODBC Rule
+      
+                ARD: Unused
+            */
+        case SQL_DESC_LOCAL_TYPE_NAME:
+            /*!
+                \internal ODBC Rule
+      
+                ARD: Unused
+            */
+        case SQL_DESC_NAME:
+            /*!
+                \internal ODBC Rule
+      
+                ARD: Unused
+            */
+        case SQL_DESC_NULLABLE:
+            /*!
+                \internal ODBC Rule
+      
+                ARD: Unused
+            */
+            MYODBCDbgReturn( pdes->dia.doAppend( MYODBC_DIA_HY091, 0, NULL ) );
 
+        case SQL_DESC_NUM_PREC_RADIX:
+            /*!
+                \internal ODBC Rule
+                
                 ARD: R/W
-                APD: R/W
-                IRD: Unused
-                IPD: Unused
             */
-            MYODBCDbgReturn( dia.doAppend( MYODBC_DIA_HY091, 0, NULL ) );
 
-        case SQL_DESC_COUNT:
+            /*! 
+                \internal ODBC Rule
+                
+                This SQLINTEGER field contains a value of 2 if the data type in 
+                the SQL_DESC_TYPE field is an approximate numeric data type, 
+                because the SQL_DESC_PRECISION field contains the number of bits. 
+                This field contains a value of 10 if the data type in the 
+                SQL_DESC_TYPE field is an exact numeric data type, because the 
+                SQL_DESC_PRECISION field contains the number of decimal digits. 
+                This field is set to 0 for all non-numeric data types.
+            */
+            {
+                SQLINTEGER n = (SQLINTEGER)pValuePtr;
+
+                if ( n != 0 && n != 2 && n != 10 )
+                    MYODBCDbgReturn( pdes->dia.doAppend( MYODBC_DIA_HY092, 0, NULL )
);
+            }
+            
+            MYODBCDbgReturn( setNumPrecRadix( (SQLINTEGER)pValuePtr ) );
+
+        case SQL_DESC_OCTET_LENGTH:
             /*!
                 \internal ODBC Rule
+      
+                ARD: R/W
+            */
 
+            /*!
+                \internal ODBC Rule
+                
+                For ARDs, this field is defined only for output or input/output 
+                parameters.
+            */
+            MYODBCDbgReturn( setOctetLength( (SQLINTEGER)pValuePtr ) );
+
+        case SQL_DESC_OCTET_LENGTH_PTR:
+            /*!
+                \internal ODBC Rule
+      
                 ARD: R/W
-                APD: R/W
-                IRD: R
-                IPD: R/W
             */
-            MYODBCDbgReturn( dia.doAppend( MYODBC_DIA_HY091, 0, NULL ) );
+            MYODBCDbgReturn( setOctetLengthPtr( (SQLINTEGER*)pValuePtr ) );
 
-        case SQL_DESC_ROWS_PROCESSED_PTR:
+        case SQL_DESC_PARAMETER_TYPE:
             /*!
                 \internal ODBC Rule
-
+      
                 ARD: Unused
-                APD: Unused
-                IRD: R/W
-                IPD: R/W          
-            */    
-            MYODBCDbgReturn( setRowsProcessedPtr( (SQLUINTEGER*)pValuePtr ) );
-    } /* switch (for header fields) */
+            */
+            MYODBCDbgReturn( pdes->dia.doAppend( MYODBC_DIA_HY091, 0, NULL ) );
 
-    /* record field needs a valid record */
-    if ( nRecord < 0 || nRecord >= listRecords.count() )
-        MYODBCDbgReturn( dia.doAppend( MYODBC_DIA_07009, 0, NULL ) );
+        case SQL_DESC_PRECISION:
+            /*!
+                \internal ODBC Rule
+      
+                ARD: R/W
+            */
 
-    /* handle as record field */
-    MYODBCDbgReturn( listRecords[nRecord]->setDescField( nFieldIdentifier, pValuePtr,
nBufferLength ) );
-}
+            /*!
+                \internal ODBC Rule
+                
+                This SQLSMALLINT pDesRec field contains the number of digits 
+                for an exact numeric type, the number of bits in the mantissa 
+                (binary precision) for an approximate numeric type, or the numbers 
+                of digits in the fractional seconds component for the SQL_TYPE_TIME, 
+                SQL_TYPE_TIMESTAMP, or SQL_INTERVAL_SECOND data type. This field 
+                is undefined for all other data types.
+            */
+            MYODBCDbgReturn( setPrecision( (SQLSMALLINT)pValuePtr ) );
 
-/*!
-    \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.
+        case SQL_DESC_ROWVER:
+            /*!
+                \internal ODBC Rule
+      
+                ARD: Unused
+            */
+            MYODBCDbgReturn( pdes->dia.doAppend( MYODBC_DIA_HY091, 0, NULL ) );
 
-    \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
+        case SQL_DESC_SCALE:
+            /*!
+                \internal ODBC Rule
+      
+                ARD: R/W
+            */
 
-    \retval MYODBC_C_TRUE   success (its possible to have success but count < 
-                            SQL_DESC_COUNT)
-    \retval MYODBC_C_FALSE  failed
-*/
-SQLRETURN MYODBCDesIRD::setCount( SQLSMALLINT nCount, bool bUnbind )
-{
-    MYODBCDbgEnter();
+            /*!
+                \internal ODBC Rule
+                
+                This SQLSMALLINT pDesRec field contains the defined scale for 
+                decimal and numeric data types. The field is undefined for all 
+                other data types.
+            */
+            MYODBCDbgReturn( setScale( (SQLSMALLINT)pValuePtr ) );
 
-    /* We should always have a bookmark record at index 0. */
-    if ( nCount < 0 )
-        MYODBCDbgReturn( dia.doAppend( MYODBC_DIA_07009, 0, NULL ) );
+        case SQL_DESC_SCHEMA_NAME:
+            /*!
+                \internal ODBC Rule
+      
+                ARD: Unused
+            */
+        case SQL_DESC_SEARCHABLE:
+            /*!
+                \internal ODBC Rule
+      
+                ARD: Unused
+            */
+        case SQL_DESC_TABLE_NAME:
+            /*!
+                \internal ODBC Rule
+      
+                ARD: Unused
+            */
+            MYODBCDbgReturn( pdes->dia.doAppend( MYODBC_DIA_HY091, 0, NULL ) );
 
-    /* append */
-    while ( nCount > listRecords.count() )
-    {
-        new MYODBCDesRecIRD( this );
-    }
+        case SQL_DESC_TYPE:
+            /*!
+                \internal ODBC Rule
+      
+                ARD: R/W
+            */
+            MYODBCDbgReturn( setTypeC( (SQLSMALLINT)pValuePtr ) );
 
-    /* truncate */
-    while ( listRecords.count() > nCount )
-    {
-        /* do not delete bound records */
-        if ( listRecords.last()->getDataPtr() && !bUnbind )
-            break;
+        case SQL_DESC_TYPE_NAME:
+            /*!
+                \internal ODBC Rule
+      
+                ARD: Unused
+            */
+        case SQL_DESC_UNNAMED:
+            /*!
+                \internal ODBC Rule
+      
+                ARD: Unused
+            */
+        case SQL_DESC_UNSIGNED:
+            /*!
+                \internal ODBC Rule
+      
+                ARD: Unused
+            */
+        case SQL_DESC_UPDATABLE:
+            /*!
+                \internal ODBC Rule
+      
+                ARD: Unused
+            */
+            MYODBCDbgReturn( pdes->dia.doAppend( MYODBC_DIA_HY091, 0, NULL ) );
+    }   
 
-        delete listRecords.last();
-    }
-
-    MYODBCDbgReturn( SQL_SUCCESS );
+    MYODBCDbgReturn( pdes->dia.doAppend( MYODBC_DIA_HY091, 0, NULL ) );
 }
 
-
-

Modified: MYODBCDes/MYODBCDesLib/MYODBCDesRecARD.h
===================================================================
--- MYODBCDes/MYODBCDesLib/MYODBCDesRecARD.h	2006-01-04 06:58:46 UTC (rev 28)
+++ MYODBCDes/MYODBCDesLib/MYODBCDesRecARD.h	2006-01-05 05:07:04 UTC (rev 29)
@@ -3,14 +3,12 @@
 
 class MYODBCDesARD;
 
-class MYODBCDesRecARD
+class MYODBCDesRecARD : public MYODBCDesRec
 {
 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 */

Modified: MYODBCDes/MYODBCDesLib/MYODBCDesRecIPD.cpp
===================================================================
--- MYODBCDes/MYODBCDesLib/MYODBCDesRecIPD.cpp	2006-01-04 06:58:46 UTC (rev 28)
+++ MYODBCDes/MYODBCDesLib/MYODBCDesRecIPD.cpp	2006-01-05 05:07:04 UTC (rev 29)
@@ -1,153 +1,377 @@
 #include "MYODBCDesInternal.h"
 
-SQLRETURN MYODBCDesIRD::setDescField( SQLSMALLINT nRecNumber, SQLSMALLINT
nFieldIdentifier, SQLPOINTER pValuePtr, SQLINTEGER nBufferLength )
+/*!
+    \brief  zzzzz
+    
+            zzzzz
+
+    \param  zzzzz
+
+    \return zzzzz
+
+    \sa     zzzzz
+*/    
+MYODBCDesRecIPD::MYODBCDesRecIPD( MYODBCDesIPD *pdes )
+    : MYODBCResRec( pdes )
 {
     MYODBCDbgEnter();
 
-    /*!
-        \internal ODBC Rule
+    Q_ASSERT( !pdes );
 
-        If an application calls SQLSetDescField to set any field other 
-        than SQL_DESC_COUNT or the deferred fields SQL_DESC_DATA_PTR, 
-        SQL_DESC_OCTET_LENGTH_PTR, or SQL_DESC_INDICATOR_PTR, the record 
-        becomes unbound.
+    MYODBCDbgReturn2();
+}
+
+SQLRETURN MYODBCDesRecIPD::setDescField( SQLSMALLINT nFieldIdentifier, SQLPOINTER
pValuePtr, SQLINTEGER nBufferLength )
+{
+    MYODBCDbgEnter();
+
+    /*! \internal ODBC Rule
+
+        If an application calls SQLSetDescField to set any field other than
SQL_DESC_COUNT or the 
+        deferred fields SQL_DESC_DATA_PTR, SQL_DESC_OCTET_LENGTH_PTR, or
SQL_DESC_INDICATOR_PTR, 
+        the record becomes unbound.
     */
+    if ( nFieldIdentifier != SQL_DESC_DATA_PTR &&
+         nFieldIdentifier != SQL_DESC_OCTET_LENGTH_PTR &&
+         nFieldIdentifier != SQL_DESC_INDICATOR_PTR )
+    {
+        doUnbind();
+    }
 
-    /* the above rule is covered by the; doUnbind() calls */
-
-    /* header field? */
     switch ( nFieldIdentifier )
     {
-        case SQL_DESC_ALLOC_TYPE:
+        case SQL_DESC_AUTO_UNIQUE_VALUE:
             /*!
                 \internal ODBC Rule
+      
+                IPD: Unused
+            */
+        case SQL_DESC_BASE_COLUMN_NAME:
+            /*!
+                \internal ODBC Rule
+      
+                IPD: Unused
+            */
+        case SQL_DESC_BASE_TABLE_NAME:
+            /*!
+                \internal ODBC Rule
+      
+                IPD: Unused
+            */
+        case SQL_DESC_CASE_SENSITIVE:
+            /*!
+                \internal ODBC Rule
+                
+                IPD: Unused
+            */
+        case SQL_DESC_CATALOG_NAME:
+            /*!
+                \internal ODBC Rule
+                
+                IPD: Unused
+            */
+            MYODBCDbgReturn( pdes->dia.doAppend( MYODBC_DIA_HY091, 0, NULL ) );
 
-                ARD: R
-                APD: R
-                IRD: R
-                IPD: R
+        case SQL_DESC_CONCISE_TYPE:
+            /*!
+                \internal ODBC Rule
+                
+                IPD: R/W                  
             */
-            MYODBCDbgReturn( dia.doAppend( MYODBC_DIA_HY091, 0, NULL ) );
+            MYODBCDbgReturn( setConciseTypeC( (SQLSMALLINT)pValuePtr ) );
 
-        case SQL_DESC_ARRAY_SIZE:
+        case SQL_DESC_DATA_PTR:
             /*!
                 \internal ODBC Rule
+                
+                IPD: R/W
+            */
+            {
+                bool        bHasInfo    = false;
+                SQLRETURN   nReturn     = setDataPtr( pValuePtr );
 
-                ARD: R/W
-                APD: R/W
-                IRD: Unused
-                IPD: Unused
+                if ( nReturn == SQL_SUCCESS_WITH_INFO )
+                    bHasInfo = true;
+                if ( !SQL_SUCCEEDED( nReturn )  )
+                    MYODBCDbgReturn( nReturn );
+
+                /*!
+                    \internal ODBC Rule
+
+                    The SQL_DESC_DATA_PTR field in the IPD can be set to force a 
+                    consistency check. In a subsequent call to SQLGetDescField or 
+                    SQLGetDescRec, the driver is not required to return the value 
+                    that SQL_DESC_DATA_PTR was set to.          
+
+                    Whenever the SQL_DESC_DATA_PTR field of an IPD, APD, or IPD is set, 
+                    the driver checks that the value in the SQL_DESC_TYPE field contains 
+                    one of the valid ODBC C data types or a driver-specific data type, 
+                    and that all other fields affecting the data types are consistent.   
  
+                */
+                nReturn = doConsistencyCheck();
+                if ( nReturn == SQL_SUCCESS_WITH_INFO )
+                    bHasInfo = true;
+                if ( !SQL_SUCCEEDED( nReturn )  )
+                    MYODBCDbgReturn( nReturn );
+
+                if ( bHasInfo )
+                    MYODBCDbgReturn( SQL_SUCCESS_WITH_INFO );
+            }
+            MYODBCDbgReturn( SQL_SUCCEEDED );
+
+        case SQL_DESC_DATETIME_INTERVAL_CODE:
+            /*!
+                \internal ODBC Rule
+              
+                IPD: R/W
             */
-            MYODBCDbgReturn( dia.doAppend( MYODBC_DIA_HY091, 0, NULL ) );
+            MYODBCDbgReturn( setIntervalCode( (SQLSMALLINT)pValuePtr ) );
 
-        case SQL_DESC_ARRAY_STATUS_PTR:
+        case SQL_DESC_DATETIME_INTERVAL_PRECISION:
             /*!
                 \internal ODBC Rule
+      
+                IPD: R/W
+            */
 
-                ARD: R/W
-                APD: R/W
-                IRD: R/W
-                IPD: R/W          
-            */    
-            MYODBCDbgReturn( setArrayStatusPtr( (SQLUSMALLINT*)pValuePtr ) );
+            /*!
+                \internal ODBC Rule
+                
+                The number of digits for an exact numeric type, the number 
+                of bits in the mantissa (binary precision) for an approximate
+                numeric type, or the numbers of digits in the fractional 
+                seconds component for the SQL_TYPE_TIME, SQL_TYPE_TIMESTAMP, 
+                or SQL_INTERVAL_SECOND data type. This field is undefined for 
+                all other data types.
+            */
+            MYODBCDbgReturn( setDatetimeIntervalPrecision( (SQLSMALLINT)pValuePtr ) ); 
 
-        case SQL_DESC_BIND_OFFSET_PTR:
-            /*! 
+        case SQL_DESC_DISPLAY_SIZE:
+            /*!
                 \internal ODBC Rule
+      
+                IPD: Unused
+            */
+        case SQL_DESC_FIXED_PREC_SCALE:
+            /*!
+                \internal ODBC Rule
+      
+                IPD: Unused
+            */
+            MYODBCDbgReturn( pdes->dia.doAppend( MYODBC_DIA_HY091, 0, NULL ) );
 
-                ARD: R/W
-                APD: R/W
-                IRD: Unused
+        case SQL_DESC_INDICATOR_PTR:
+            /*!
+                \internal ODBC Rule
+      
+                IPD: R/W
+            */
+            MYODBCDbgReturn( setIndicatorPtr( (SQLINTEGER*)pValuePtr ) );
+
+        case SQL_DESC_LABEL:
+            /*!
+                \internal ODBC Rule
+      
                 IPD: Unused
             */
-            MYODBCDbgReturn( dia.doAppend( MYODBC_DIA_HY091, 0, NULL ) );
+            MYODBCDbgReturn( pdes->dia.doAppend( MYODBC_DIA_HY091, 0, NULL ) );
 
-        case SQL_DESC_BIND_TYPE:
+        case SQL_DESC_LENGTH:
             /*!
                 \internal ODBC Rule
+      
+                IPD: R/W
+            */
+            MYODBCDbgReturn( setLength( (SQLUINTEGER)pValuePtr ) );
 
-                ARD: R/W
-                APD: R/W
-                IRD: Unused
+        case SQL_DESC_LITERAL_PREFIX:
+            /*!
+                \internal ODBC Rule
+      
                 IPD: Unused
             */
-            MYODBCDbgReturn( dia.doAppend( MYODBC_DIA_HY091, 0, NULL ) );
+        case SQL_DESC_LITERAL_SUFFIX:
+            /*!
+                \internal ODBC Rule
+      
+                IPD: Unused
+            */
+        case SQL_DESC_LOCAL_TYPE_NAME:
+            /*!
+                \internal ODBC Rule
+      
+                IPD: Unused
+            */
+        case SQL_DESC_NAME:
+            /*!
+                \internal ODBC Rule
+      
+                IPD: Unused
+            */
+        case SQL_DESC_NULLABLE:
+            /*!
+                \internal ODBC Rule
+      
+                IPD: Unused
+            */
+            MYODBCDbgReturn( pdes->dia.doAppend( MYODBC_DIA_HY091, 0, NULL ) );
 
-        case SQL_DESC_COUNT:
+        case SQL_DESC_NUM_PREC_RADIX:
             /*!
                 \internal ODBC Rule
+                
+                IPD: R/W
+            */
 
-                ARD: R/W
-                APD: R/W
-                IRD: R
+            /*! 
+                \internal ODBC Rule
+                
+                This SQLINTEGER field contains a value of 2 if the data type in 
+                the SQL_DESC_TYPE field is an approximate numeric data type, 
+                because the SQL_DESC_PRECISION field contains the number of bits. 
+                This field contains a value of 10 if the data type in the 
+                SQL_DESC_TYPE field is an exact numeric data type, because the 
+                SQL_DESC_PRECISION field contains the number of decimal digits. 
+                This field is set to 0 for all non-numeric data types.
+            */
+            {
+                SQLINTEGER n = (SQLINTEGER)pValuePtr;
+
+                if ( n != 0 && n != 2 && n != 10 )
+                    MYODBCDbgReturn( pdes->dia.doAppend( MYODBC_DIA_HY092, 0, NULL )
);
+            }
+            
+            MYODBCDbgReturn( setNumPrecRadix( (SQLINTEGER)pValuePtr ) );
+
+        case SQL_DESC_OCTET_LENGTH:
+            /*!
+                \internal ODBC Rule
+      
                 IPD: R/W
             */
-            MYODBCDbgReturn( dia.doAppend( MYODBC_DIA_HY091, 0, NULL ) );
 
-        case SQL_DESC_ROWS_PROCESSED_PTR:
             /*!
                 \internal ODBC Rule
+                
+                For IPDs, this field is defined only for output or input/output 
+                parameters.
+            */
+            MYODBCDbgReturn( setOctetLength( (SQLINTEGER)pValuePtr ) );
 
-                ARD: Unused
-                APD: Unused
-                IRD: R/W
-                IPD: R/W          
-            */    
-            MYODBCDbgReturn( setRowsProcessedPtr( (SQLUINTEGER*)pValuePtr ) );
-    } /* switch (for header fields) */
+        case SQL_DESC_OCTET_LENGTH_PTR:
+            /*!
+                \internal ODBC Rule
+      
+                IPD: R/W
+            */
+            MYODBCDbgReturn( setOctetLengthPtr( (SQLINTEGER*)pValuePtr ) );
 
-    /* record field needs a valid record */
-    if ( nRecord < 0 || nRecord >= listRecords.count() )
-        MYODBCDbgReturn( dia.doAppend( MYODBC_DIA_07009, 0, NULL ) );
+        case SQL_DESC_PARAMETER_TYPE:
+            /*!
+                \internal ODBC Rule
+      
+                IPD: Unused
+            */
+            MYODBCDbgReturn( pdes->dia.doAppend( MYODBC_DIA_HY091, 0, NULL ) );
 
-    /* handle as record field */
-    MYODBCDbgReturn( listRecords[nRecord]->setDescField( nFieldIdentifier, pValuePtr,
nBufferLength ) );
-}
+        case SQL_DESC_PRECISION:
+            /*!
+                \internal ODBC Rule
+      
+                IPD: R/W
+            */
 
-/*!
-    \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.
+            /*!
+                \internal ODBC Rule
+                
+                This SQLSMALLINT pDesRec field contains the number of digits 
+                for an exact numeric type, the number of bits in the mantissa 
+                (binary precision) for an approximate numeric type, or the numbers 
+                of digits in the fractional seconds component for the SQL_TYPE_TIME, 
+                SQL_TYPE_TIMESTAMP, or SQL_INTERVAL_SECOND data type. This field 
+                is undefined for all other data types.
+            */
+            MYODBCDbgReturn( setPrecision( (SQLSMALLINT)pValuePtr ) );
 
-    \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
+        case SQL_DESC_ROWVER:
+            /*!
+                \internal ODBC Rule
+      
+                IPD: Unused
+            */
+            MYODBCDbgReturn( pdes->dia.doAppend( MYODBC_DIA_HY091, 0, NULL ) );
 
-    \retval MYODBC_C_TRUE   success (its possible to have success but count < 
-                            SQL_DESC_COUNT)
-    \retval MYODBC_C_FALSE  failed
-*/
-SQLRETURN MYODBCDesIRD::setCount( SQLSMALLINT nCount, bool bUnbind )
-{
-    MYODBCDbgEnter();
+        case SQL_DESC_SCALE:
+            /*!
+                \internal ODBC Rule
+      
+                IPD: R/W
+            */
 
-    /* We should always have a bookmark record at index 0. */
-    if ( nCount < 0 )
-        MYODBCDbgReturn( dia.doAppend( MYODBC_DIA_07009, 0, NULL ) );
+            /*!
+                \internal ODBC Rule
+                
+                This SQLSMALLINT pDesRec field contains the defined scale for 
+                decimal and numeric data types. The field is undefined for all 
+                other data types.
+            */
+            MYODBCDbgReturn( setScale( (SQLSMALLINT)pValuePtr ) );
 
-    /* append */
-    while ( nCount > listRecords.count() )
-    {
-        new MYODBCDesRecIRD( this );
-    }
+        case SQL_DESC_SCHEMA_NAME:
+            /*!
+                \internal ODBC Rule
+      
+                IPD: Unused
+            */
+        case SQL_DESC_SEARCHABLE:
+            /*!
+                \internal ODBC Rule
+      
+                IPD: Unused
+            */
+        case SQL_DESC_TABLE_NAME:
+            /*!
+                \internal ODBC Rule
+      
+                IPD: Unused
+            */
+            MYODBCDbgReturn( pdes->dia.doAppend( MYODBC_DIA_HY091, 0, NULL ) );
 
-    /* truncate */
-    while ( listRecords.count() > nCount )
-    {
-        /* do not delete bound records */
-        if ( listRecords.last()->getDataPtr() && !bUnbind )
-            break;
+        case SQL_DESC_TYPE:
+            /*!
+                \internal ODBC Rule
+      
+                IPD: R/W
+            */
+            MYODBCDbgReturn( setTypeC( (SQLSMALLINT)pValuePtr ) );
 
-        delete listRecords.last();
-    }
+        case SQL_DESC_TYPE_NAME:
+            /*!
+                \internal ODBC Rule
+      
+                IPD: Unused
+            */
+        case SQL_DESC_UNNAMED:
+            /*!
+                \internal ODBC Rule
+      
+                IPD: Unused
+            */
+        case SQL_DESC_UNSIGNED:
+            /*!
+                \internal ODBC Rule
+      
+                IPD: Unused
+            */
+        case SQL_DESC_UPDATABLE:
+            /*!
+                \internal ODBC Rule
+      
+                IPD: Unused
+            */
+            MYODBCDbgReturn( pdes->dia.doAppend( MYODBC_DIA_HY091, 0, NULL ) );
+    }   
 
-    MYODBCDbgReturn( SQL_SUCCESS );
+    MYODBCDbgReturn( pdes->dia.doAppend( MYODBC_DIA_HY091, 0, NULL ) );
 }
 
-
-

Modified: MYODBCDes/MYODBCDesLib/MYODBCDesRecIPD.h
===================================================================
--- MYODBCDes/MYODBCDesLib/MYODBCDesRecIPD.h	2006-01-04 06:58:46 UTC (rev 28)
+++ MYODBCDes/MYODBCDesLib/MYODBCDesRecIPD.h	2006-01-05 05:07:04 UTC (rev 29)
@@ -3,14 +3,12 @@
 
 class MYODBCDesIPD;
 
-class MYODBCDesRecIPD
+class MYODBCDesRecIPD : public MYODBCDesRec
 {
 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 */

Modified: MYODBCDes/MYODBCDesLib/MYODBCDesRecIRD.cpp
===================================================================
--- MYODBCDes/MYODBCDesLib/MYODBCDesRecIRD.cpp	2006-01-04 06:58:46 UTC (rev 28)
+++ MYODBCDes/MYODBCDesLib/MYODBCDesRecIRD.cpp	2006-01-05 05:07:04 UTC (rev 29)
@@ -1,153 +1,35 @@
 #include "MYODBCDesInternal.h"
 
-SQLRETURN MYODBCDesIRD::setDescField( SQLSMALLINT nRecNumber, SQLSMALLINT
nFieldIdentifier, SQLPOINTER pValuePtr, SQLINTEGER nBufferLength )
-{
-    MYODBCDbgEnter();
+/*!
+    \brief  zzzzz
+    
+            zzzzz
 
-    /*!
-        \internal ODBC Rule
+    \param  zzzzz
 
-        If an application calls SQLSetDescField to set any field other 
-        than SQL_DESC_COUNT or the deferred fields SQL_DESC_DATA_PTR, 
-        SQL_DESC_OCTET_LENGTH_PTR, or SQL_DESC_INDICATOR_PTR, the record 
-        becomes unbound.
-    */
+    \return zzzzz
 
-    /* the above rule is covered by the; doUnbind() calls */
+    \sa     zzzzz
+*/    
+MYODBCDesRecIRD::MYODBCDesRecIRD( MYODBCDesIRD *pdes )
+    : MYODBCResRec( pdes )
+{
+    MYODBCDbgEnter();
 
-    /* header field? */
-    switch ( nFieldIdentifier )
-    {
-        case SQL_DESC_ALLOC_TYPE:
-            /*!
-                \internal ODBC Rule
+    Q_ASSERT( !pdes );
 
-                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( dia.doAppend( MYODBC_DIA_HY091, 0, NULL ) );
-
-        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( dia.doAppend( MYODBC_DIA_HY091, 0, NULL ) );
-
-        case SQL_DESC_BIND_TYPE:
-            /*!
-                \internal ODBC Rule
-
-                ARD: R/W
-                APD: R/W
-                IRD: Unused
-                IPD: Unused
-            */
-            MYODBCDbgReturn( dia.doAppend( MYODBC_DIA_HY091, 0, NULL ) );
-
-        case SQL_DESC_COUNT:
-            /*!
-                \internal ODBC Rule
-
-                ARD: R/W
-                APD: R/W
-                IRD: R
-                IPD: R/W
-            */
-            MYODBCDbgReturn( dia.doAppend( MYODBC_DIA_HY091, 0, NULL ) );
-
-        case SQL_DESC_ROWS_PROCESSED_PTR:
-            /*!
-                \internal ODBC Rule
-
-                ARD: Unused
-                APD: Unused
-                IRD: R/W
-                IPD: R/W          
-            */    
-            MYODBCDbgReturn( setRowsProcessedPtr( (SQLUINTEGER*)pValuePtr ) );
-    } /* 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 ) );
+    MYODBCDbgReturn2();
 }
 
-/*!
-    \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 MYODBCDesIRD::setCount( SQLSMALLINT nCount, bool bUnbind )
+SQLRETURN MYODBCDesRecIRD::setDescField( SQLSMALLINT /* nFieldIdentifier */, SQLPOINTER
/* pValuePtr */, SQLINTEGER /* nBufferLength */ )
 {
     MYODBCDbgEnter();
 
-    /* We should always have a bookmark record at index 0. */
-    if ( nCount < 0 )
-        MYODBCDbgReturn( dia.doAppend( MYODBC_DIA_07009, 0, NULL ) );
+    /*! \internal ODBC Rule
 
-    /* append */
-    while ( nCount > listRecords.count() )
-    {
-        new MYODBCDesRecIRD( this );
-    }
-
-    /* truncate */
-    while ( listRecords.count() > nCount )
-    {
-        /* do not delete bound records */
-        if ( listRecords.last()->getDataPtr() && !bUnbind )
-            break;
-
-        delete listRecords.last();
-    }
-
-    MYODBCDbgReturn( SQL_SUCCESS );
+        The DescriptorHandle argument was associated with an IRD, and the FieldIdentifier

+        argument was not SQL_DESC_ARRAY_STATUS_PTR or SQL_DESC_ROWS_PROCESSED_PTR.
+    */
+    MYODBCDbgReturn( pdes->dia.doAppend( MYODBC_DIA_HY016, 0, NULL ) );
 }
 
-
-

Modified: MYODBCDes/MYODBCDesLib/MYODBCDesRecIRD.h
===================================================================
--- MYODBCDes/MYODBCDesLib/MYODBCDesRecIRD.h	2006-01-04 06:58:46 UTC (rev 28)
+++ MYODBCDes/MYODBCDesLib/MYODBCDesRecIRD.h	2006-01-05 05:07:04 UTC (rev 29)
@@ -3,14 +3,12 @@
 
 class MYODBCDesIRD;
 
-class MYODBCDesRecIRD
+class MYODBCDesRecIRD : public MYODBCDesRec
 {
 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 */

Modified: MYODBCDes/include/MYODBCDes.h
===================================================================
--- MYODBCDes/include/MYODBCDes.h	2006-01-04 06:58:46 UTC (rev 28)
+++ MYODBCDes/include/MYODBCDes.h	2006-01-05 05:07:04 UTC (rev 29)
@@ -138,7 +138,7 @@
     virtual SQLUINTEGER getArraySize();
     virtual SQLUSMALLINT *getArrayStatusPtr();
     virtual SQLINTEGER *getBindOffsetPtr();
-    virtual SQLINTEGER getBindType();
+    virtual SQLUINTEGER getBindType();
     virtual SQLSMALLINT getCount();
     virtual SQLUINTEGER *getRowsProcessedPtr();
 
@@ -180,27 +180,19 @@
 
     /* misc */
     SQLHANDLE getOwner();
-    MYODBC_RTTI_DES_TYPE getDesType();
 
 protected:
-    MYODBC_RTTI_DES_TYPE    nTypeSubID;            /*!< MYODBC_RTTI_DES_UND, APD, IPD,
ARD, or IRD     */
     SQLHANDLE               hOwner;                /*!< dbc if explicit else stmt     
                */  
     MYODBCDia               dia;                   /*!< errors, warnings, etc         
                */
 
-    SQLSMALLINT     nAllocType;
-    SQLUINTEGER     nArraySize;
-    SQLUSMALLINT *  pnArrayStatusPtr;
-    SQLINTEGER *    pnBindOffsetPtr;
-    SQLINTEGER      nBindType;
-    /* SQLSMALLINT     nCount; */                    /*!< Highest viable index (-1 if
none).           
-                                                    The app sees SQL_DESC_COUNT as 1
based but   
-                                                    because we have a "hidden" record at
index 0 
-                                                    it is, for most of what we do, 0
based.      
-                                                    This var is purposefully independent
of      
-                                                    records->elements.                
                 */
-    SQLUINTEGER *   pnRowsProcessedPtr;
+    SQLSMALLINT             nAllocType;
+    SQLUINTEGER             nArraySize;
+    SQLUSMALLINT *          pnArrayStatusPtr;
+    SQLINTEGER *            pnBindOffsetPtr;
+    SQLUINTEGER             nBindType;
+    SQLUINTEGER *           pnRowsProcessedPtr;
 
-    QList<MYODBCResRec*> 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.          
              */
 };
@@ -210,308 +202,6 @@
 #include "MYODBCDesIPD.h"
 #include "MYODBCDesIRD.h"
 
-+++++++++++++++++++++++++
-
-/*!
-    \brief  Gets length information from the desired descriptor record.
-
-            The length is determined by a set of rules which revolve
-            around the data type.           
-
-            The values returned by these functions for the column or parameter 
-            size correspond to "precision" as defined in ODBC 2.x. However, the 
-            values do not necessarily correspond to the values returned in 
-            SQL_DESC_PRECISION or any other one descriptor field. The same is 
-            true for decimal digits, which correspond to "scale" as defined in 
-            ODBC 2.x. It does not necessarily correspond to the values returned 
-            in SQL_DESC_SCALE or any other one descriptor field, but comes from 
-            different descriptor fields depending on the data type.
-            
-            The values returned for the column (or parameter) size do not correspond 
-            to the values in any one descriptor field. The values can come from 
-            either the SQL_DESC_PRECISION or the SQL_DESC_LENGTH field, depending 
-            on the type of data, as shown in the following table.
-
-
-                SQL type 	                    Descriptor field corresponding to
-                                                column or parameter size
-                                                
-                All character and binary types 	LENGTH
-                All numeric types 	            PRECISION
-                All datetime and interval types LENGTH
-                SQL_BIT                         LENGTH
-
-    \param
-*/                                                  
-SQLRETURN MYODBCDesGetLength( MYODBC_DES_PTR    pDes,
-                              SQLUSMALLINT      nRecord, 
-                              SQLSMALLINT *     pnDataTypePtr, 
-                              SQLUINTEGER *     pnColumnSizePtr, 
-                              SQLSMALLINT *     pnDecimalDigitsPtr );
-/*!
-    \brief  Adjusts given descriptor such that it is ready to be of the specified type.
-
-            This function has been created to support SQLDescCopy().
-              
-    \todo   At this time this just "resets" the des so as to be ok as
MYODBC_RTTI_DES_UND.  In
-            the future this should be capable of morphing to and from various
combinations of 
-            des types. On the other hand - this may only be possible in the driver
itself.
-
-    \param  pDes        A viable descriptor. This was probably just created - a copy of
an
-                        existing descriptor.
-    \param  nDesType    The descriptor type. Only MYODBC_RTTI_DES_UND supported at this
time.
-
-    \return void
-
-    \sa     SQLDescCopy
-*/
-void MYODBCDesMorph( MYODBC_DES_PTR         pDes, 
-                     MYODBC_RTTI_DES_TYPE   nDesType );
-
-
-/*! 
-    \brief      Sets SQL_DESC_CONCISE_TYPE field of the given 
-                descriptor record.
-                 
-                Call this function to set the concise type - 
-                ensuring that related fields are synchronized as
-                needed. 
-
-                This convenience function saves the caller from 
-                having to determine whether to call 
-                MYODBCDesRecConciseTypeSQL() or to call
-                MYODBCDesRecConciseTypeC() - this function
-                can determine this based upon the descriptor type.
-
-    \param      pRecord         A viable MYODBC_DES_REC_PTR.
-    \param      nConciseType    The concise type. SQL concise type if 
-                                descriptor is an IRD or IPD. C 
-                                concise type if descriptor is an ARD 
-                                or APD.
-                                
-    \return     SQLRETURN
-
-    \retval     SQL_SUCCESS     Concise type was set and other fields
-                                synchronized as required. 
-    \retval     !SQL_SUCCESS    Error setting concise type. Check 
-                                diagnostic information for details.
-*/
-SQLRETURN MYODBCDesRecConciseType( MYODBC_DES_REC_PTR   pRecord, 
-                                   SQLSMALLINT          nConciseType );
-
-/*!
-    \brief  Sets SQL_DESC_CONCISE_TYPE - only allow C types.
-
-            Sets SQL_DESC_CONCISE_TYPE and synchronises related fields.
-
-    \param  pRecord         A viable MYODBC_DES_REC_PTR. Should be a; 
-                            MYODBC_RTTI_DES_ARD or MYODBC_RTTI_DES_APD.
-    \param  nConciseType    A concise C-type. For example; SQL_C_CHAR. 
-    
-    \return SQLRETURN
-
-    \retval SQL_SUCCESS
-    \retval !SQL_SUCCESS with diagnostic info
-    
-    \sa     MYODBCDesRecConciseType            
-*/
-SQLRETURN MYODBCDesRecConciseTypeC( MYODBC_DES_REC_PTR  pRecord, 
-                                    SQLSMALLINT         nValue );
-
-/*!
-    \brief  Sets SQL_DESC_CONCISE_TYPE - only allow SQL types.
-
-            Sets SQL_DESC_CONCISE_TYPE and synchronises related fields.
-
-    \param  pRecord         A viable MYODBC_DES_REC_PTR. Should be a; 
-                            MYODBC_RTTI_DES_IRD or MYODBC_RTTI_DES_IPD.
-    \param  nConciseType    A concise SQL-type. For example; SQL_CHAR.
-    
-    \return SQLRETURN
-
-    \retval SQL_SUCCESS
-    \retval !SQL_SUCCESS with diagnostic info
-    
-    \sa     MYODBCDesRecConciseType            
-*/
-SQLRETURN MYODBCDesRecConciseTypeSQL( MYODBC_DES_REC *  pRecord, 
-                                      SQLSMALLINT       nConciseType );
-
-/*!
-    \brief  Get desired record.
-
-            Get the desired record while accounting for the automatic expansion of 
-            record array sometimes needed according to ODBC spec. 
-            
-    \param  pDes A viable MYODBC_DES_PTR. 
-    \param  nRecord     0 based record (0 = bookmark record)
-    \param  bAppend     - True  - IF rec_num > SQL_DESC_COUNT THEN append enough recs
to make rec_num viable
-                        - False - IF rec_num > SQL_DESC_COUNT THEN return NULL 
-                        
-    \return MYODBC_DES_REC_PTR
-*/
-MYODBC_DES_REC_PTR MYODBCDesRecGet( MYODBC_DES_PTR  pDes, 
-                                    SQLSMALLINT     nRecord, 
-                                    MYODBC_C_BOOL   bAppend );
-
-/*!
-    \brief  Sets SQL_DESC_DATETIME_INTERVAL_CODE for the given record.
-
-            Sets SQL_DESC_DATETIME_INTERVAL_CODE for the given record
-            with validation.
-            
-    \param  pRecord                 A viable MYODBC_DES_REC_PTR.
-    \param  nDateTimeIntervalCode   The desired SQL_DESC_DATETIME_INTERVAL_CODE. 
-                                    For example; SQL_CODE_YEAR.
-    \return SQLRETURN
-    \retval SQL_SUCCESS
-    \retval !SQL_SUCCESS    With diagnostic info.
-*/
-SQLRETURN MYODBCDesRecIntervalCode( MYODBC_DES_REC_PTR  pRecord, 
-                                    SQLSMALLINT         nDateTimeIntervalCode );
-
-/*! 
-    \internal 
-    \brief  Initializes an IRD record describing an INTEGER.
-    
-            This function has been created to reduce the amount of code
-            needed to initialize IRD records - such as when we are 
-            creating internal results.
-                                
-    \param  pDesRec         Viable, uninitialized, IRD record.
-    \param  pszColumnName   Value for; desc_base_column_name, desc_label, desc_name.   
-    \param  nNullable       Value for; desc_nullable.
-    \param  nUnsigned       Value for; desc_unsigned.
-    
-    \return void
-
-    \sa     MYODBCDesRecIrdSmallInt
-            MYODBCDesRecIrdVarChar
-*/
-void MYODBCDesRecIrdInteger( MYODBC_DES_REC_PTR pDesRec, 
-                             SQLCHAR *          pszColumnName, 
-                             SQLSMALLINT        nNullable, 
-                             SQLSMALLINT        nUnsigned );
-/*! 
-    \internal 
-    \brief  Initializes an IRD record describing a SMALLINT.
-    
-            This function has been created to reduce the amount of code
-            needed to initialize IRD records - such as when we are 
-            creating internal results.
-                                
-    \param  pDesRec         Viable, uninitialized, IRD record.
-    \param  pszColumnName   Value for; desc_base_column_name, desc_label, desc_name.   
-    \param  nNullable       Value for; desc_nullable.
-    \param  nUnsigned       Value for; desc_unsigned.
-    
-    \return void
-
-    \sa     MYODBCDesRecIrdVarChar
-            MYODBCDesRecIrdInteger
-*/
-void MYODBCDesRecIrdSmallInt( MYODBC_DES_REC_PTR    pDesRec, 
-                              SQLCHAR *             pszColumnName, 
-                              SQLSMALLINT           nNullable, 
-                              SQLSMALLINT           nUnsigned );
-/*! 
-    \internal 
-    \brief  Initializes an IRD record describing a VARCHAR.
-    
-            This function has been created to reduce the amount of code
-            needed to initialize IRD records - such as when we are 
-            creating internal results.
-                                
-    \param  pDesRec         Viable, uninitialized, IRD record.
-    \param  pszColumnName   Value for; desc_base_column_name, desc_label, desc_name.   
-    \param  nNullable       Value for; desc_nullable.
-    
-    \return void
-
-    \sa     MYODBCDesRecIrdSmallInt
-            MYODBCDesRecIrdInteger
-*/
-void MYODBCDesRecIrdVarChar( MYODBC_DES_REC_PTR pDesRec, 
-                             SQLCHAR *          pszColumnName, 
-                             SQLSMALLINT        nNullable );
-
-/*! 
-    \brief      Sets SQL_DESC_TYPE field of the given 
-                descriptor record.
-                 
-                Call this function to set the type - 
-                ensuring that related fields are synchronized as
-                needed. 
-
-                This convenience function saves the caller from 
-                having to determine whether to call 
-                MYODBCDesRecTypeSQL() or to call
-                MYODBCDesRecTypeC() - this function
-                can determine this based upon the descriptor type.
-
-    \param      pRecord         A viable MYODBC_DES_REC_PTR.
-    \param      nType           The type. SQL type if descriptor 
-                                is an IRD or IPD. C type if 
-                                descriptor is an ARD or APD.
-                                
-    \return     SQLRETURN
-
-    \retval     SQL_SUCCESS     Type was set and other fields 
-                                synchronized as required. 
-    \retval     !SQL_SUCCESS    Error/warning setting type. Check 
-                                diagnostic information for details.
-*/
-SQLRETURN MYODBCDesRecType( MYODBC_DES_REC_PTR  pRecord, 
-                            SQLSMALLINT         nType );
-
-/*!
-    \brief  Sets SQL_DESC_TYPE - only allow C types.
-
-            Sets SQL_DESC_TYPE and synchronises related fields.
-
-    \note   Most of the C-type define values are same as corresponding
-            SQL-type define values but some are different (at least
-            on unixODBC).
-
-    \todo   There are opportunities to optimize here (reduce code and 
-            improve response). Current form is for readability.
-
-    \param  pRecord A viable MYODBC_DES_REC_PTR. Should be a; 
-                    MYODBC_RTTI_DES_ARD or MYODBC_RTTI_DES_APD.
-    \param  nType   A C-type. For example; SQL_C_CHAR. 
-    
-    \return SQLRETURN
-
-    \retval SQL_SUCCESS
-    \retval !SQL_SUCCESS with diagnostic info
-    
-    \sa     MYODBCDesRecType            
-*/
-SQLRETURN MYODBCDesRecTypeC( MYODBC_DES_REC_PTR pRecord, 
-                             SQLSMALLINT        nType );
-
-/*!
-    \brief  Sets SQL_DESC_TYPE - only allow SQL types.
-
-            Sets SQL_DESC_TYPE and synchronises related fields.
-
-    \todo   There are opportunities to optimize here (reduce code and 
-            improve response). Current form is for readability.
-
-    \param  pRecord A viable MYODBC_DES_REC_PTR. Should be a; 
-                    MYODBC_RTTI_DES_IRD or MYODBC_RTTI_DES_IPD.
-    \param  nType   A SQL-type. For example; SQL_CHAR.
-    
-    \return SQLRETURN
-
-    \retval SQL_SUCCESS
-    \retval !SQL_SUCCESS with diagnostic info
-    
-    \sa     MYODBCDesRecType            
-*/
-SQLRETURN MYODBCDesRecTypeSQL( MYODBC_DES_REC_PTR   pRecord, 
-                               SQLSMALLINT          nType );
-
 #endif
 
 

Modified: MYODBCDes/include/MYODBCDesAPD.h
===================================================================
--- MYODBCDes/include/MYODBCDesAPD.h	2006-01-04 06:58:46 UTC (rev 28)
+++ MYODBCDes/include/MYODBCDesAPD.h	2006-01-05 05:07:04 UTC (rev 29)
@@ -8,18 +8,16 @@
 #define MYODBC_DES_APD_H
 
 #include "MYODBCDes.h"
-#include "MYODBCResRecAPD.h"
 
 /*!
     \brief  
     \sa     
 */
-class MYODBCDesAPD
+class MYODBCDesAPD : public MYODBCDes
 {
     friend class MYODBCResRecAPD;
 public:
     MYODBCDesAPD( SQLHANDLE hOwner );
-    ~MYODBCDesAPD();
 
     /* setters */
     SQLRETURN setDescField( SQLSMALLINT nRecNumber, SQLSMALLINT nFieldIdentifier,
SQLPOINTER pValuePtr, SQLINTEGER nBufferLength );

Modified: MYODBCDes/include/MYODBCDesARD.h
===================================================================
--- MYODBCDes/include/MYODBCDesARD.h	2006-01-04 06:58:46 UTC (rev 28)
+++ MYODBCDes/include/MYODBCDesARD.h	2006-01-05 05:07:04 UTC (rev 29)
@@ -8,18 +8,16 @@
 #define MYODBC_DES_ARD_H
 
 #include "MYODBCDes.h"
-#include "MYODBCResRecARD.h"
 
 /*!
     \brief  
     \sa     
 */
-class MYODBCDesARD
+class MYODBCDesARD : public MYODBCDes
 {
     friend class MYODBCResRecARD;
 public:
     MYODBCDesARD( SQLHANDLE hOwner );
-    ~MYODBCDesARD();
 
     /* setters */
     SQLRETURN setDescField( SQLSMALLINT nRecNumber, SQLSMALLINT nFieldIdentifier,
SQLPOINTER pValuePtr, SQLINTEGER nBufferLength );

Modified: MYODBCDes/include/MYODBCDesIPD.h
===================================================================
--- MYODBCDes/include/MYODBCDesIPD.h	2006-01-04 06:58:46 UTC (rev 28)
+++ MYODBCDes/include/MYODBCDesIPD.h	2006-01-05 05:07:04 UTC (rev 29)
@@ -8,18 +8,16 @@
 #define MYODBC_DES_IPD_H
 
 #include "MYODBCDes.h"
-#include "MYODBCResRecIPD.h"
 
 /*!
     \brief  
     \sa     
 */
-class MYODBCDesIPD
+class MYODBCDesIPD : public MYODBCDes
 {
     friend class MYODBCResRecIPD;
 public:
     MYODBCDesIPD( SQLHANDLE hOwner );
-    ~MYODBCDesIPD();
 
     /* setters */
     SQLRETURN setDescField( SQLSMALLINT nRecNumber, SQLSMALLINT nFieldIdentifier,
SQLPOINTER pValuePtr, SQLINTEGER nBufferLength );

Modified: MYODBCDes/include/MYODBCDesIRD.h
===================================================================
--- MYODBCDes/include/MYODBCDesIRD.h	2006-01-04 06:58:46 UTC (rev 28)
+++ MYODBCDes/include/MYODBCDesIRD.h	2006-01-05 05:07:04 UTC (rev 29)
@@ -8,21 +8,20 @@
 #define MYODBC_DES_IRD_H
 
 #include "MYODBCDes.h"
-#include "MYODBCResRecIRD.h"
 
 /*!
     \brief  
     \sa     
 */
-class MYODBCDesIRD
+class MYODBCDesIRD : public MYODBCDes
 {
     friend class MYODBCResRecIRD;
 public:
     MYODBCDesIRD( SQLHANDLE hOwner );
-    ~MYODBCDesIRD();
 
     /* setters */
     SQLRETURN setDescField( SQLSMALLINT nRecNumber, SQLSMALLINT nFieldIdentifier,
SQLPOINTER pValuePtr, SQLINTEGER nBufferLength );
+
     SQLRETURN setCount( SQLSMALLINT nCount, bool bUnbind );
 
     /* getters */

Thread
Connector/ODBC 5 commit: r29 - MYODBCDbg/include MYODBCDes/MYODBCDesLib MYODBCDes/includepharvey5 Jan