List:Commits« Previous MessageNext Message »
From:pharvey Date:January 31 2006 8:51am
Subject:Connector/ODBC 5 commit: r51 - MYODBCDes/MYODBCDesLib MYODBCDes/include MYODBCRes/MYODBCResLib MYODBCRes/include
View as plain text  
Added:
   MYODBCDes/include/MYODBCDesRec.h
   MYODBCDes/include/MYODBCDesRecAPD.h
   MYODBCDes/include/MYODBCDesRecARD.h
   MYODBCDes/include/MYODBCDesRecIPD.h
   MYODBCDes/include/MYODBCDesRecIRD.h
Removed:
   MYODBCDes/MYODBCDesLib/MYODBCDesRec.h
   MYODBCDes/MYODBCDesLib/MYODBCDesRecAPD.h
   MYODBCDes/MYODBCDesLib/MYODBCDesRecARD.h
   MYODBCDes/MYODBCDesLib/MYODBCDesRecIPD.h
   MYODBCDes/MYODBCDesLib/MYODBCDesRecIRD.h
Modified:
   MYODBCDes/MYODBCDesLib/MYODBCDes.cpp
   MYODBCDes/MYODBCDesLib/MYODBCDesInternal.h
   MYODBCDes/MYODBCDesLib/MYODBCDesLib.vpj
   MYODBCDes/MYODBCDesLib/MYODBCDesRec.cpp
   MYODBCDes/MYODBCDesLib/MYODBCDesRecIRD.cpp
   MYODBCDes/include/MYODBCDes.h
   MYODBCDes/include/MYODBCDesAPD.h
   MYODBCDes/include/MYODBCDesARD.h
   MYODBCDes/include/MYODBCDesIPD.h
   MYODBCDes/include/MYODBCDesIRD.h
   MYODBCRes/MYODBCResLib/MYODBCRes.cpp
   MYODBCRes/MYODBCResLib/MYODBCResDriver.cpp
   MYODBCRes/MYODBCResLib/MYODBCResLib.pro
   MYODBCRes/include/MYODBCRes.h
   MYODBCRes/include/MYODBCResDriver.h
Log:
UNICODE:
- reducing complexity of descriptor code and code which uses it

Modified: MYODBCDes/MYODBCDesLib/MYODBCDes.cpp
===================================================================
--- MYODBCDes/MYODBCDesLib/MYODBCDes.cpp	2006-01-27 05:46:29 UTC (rev 50)
+++ MYODBCDes/MYODBCDesLib/MYODBCDes.cpp	2006-01-31 08:51:33 UTC (rev 51)
@@ -30,15 +30,15 @@
     \sa     MYODBCDesFree() 
             SQLAllocHandle()
 */
-MYODBCDes::MYODBCDes( SQLHANDLE hOwner )
+MYODBCDes::MYODBCDes( SQLHANDLE hOwner, SQLSMALLINT nAllocType )
 {
     MYODBCDbgEnter();
 
-    doInit();
+    doInit( nAllocType );
 
-    /* derived classes must create bookmark ass needed */
+    /* derived classes must create bookmark as needed   */
 
-    /* we must have a owner (dbc or stm) */
+    /* we must have an owner (dbc or stm)               */
     Q_ASSERT( !hOwner );
 
     /* associate with our owner (caller needs to add us to hOwner's list of descriptors)
*/
@@ -46,6 +46,7 @@
 
     /* descriptors have their own diagnostics - and this is it */
     pdia = new MYODBCDia();
+    Q_ASSERT( !pdia );
 
     MYODBCDbgReturn2();
 }
@@ -73,9 +74,16 @@
 {
     MYODBCDbgEnter();
 
-    while ( !listRecords.isEmpty() )
-        delete listRecords.takeFirst();
+    /* delete records */
+    QMutableVectorIterator<MYODBCDesRec*> i( vectorRecords );
+    while ( i.hasNext() ) 
+    {
+        MYODBCDesRec *pdesrec = i.next();
+        delete pdesrec;
+        i.remove();
+    }
 
+    /* delete diagnostic */
     delete pdia;
 
     MYODBCDbgReturn2();
@@ -114,7 +122,7 @@
     }
 
     /* push down to record for further processing */
-    MYODBCDbgReturn( listRecords[nRecNumber]->setDescRec( nType, nSubType, nLength,
nPrecision, nScale, pDataPtr, pnStringLengthPtr, pnIndicatorPtr ) );
+    MYODBCDbgReturn( vectorRecords[nRecNumber]->setDescRec( nType, nSubType, nLength,
nPrecision, nScale, pDataPtr, pnStringLengthPtr, pnIndicatorPtr ) );
 }
 
 SQLRETURN MYODBCDes::setArraySize( SQLUINTEGER nArraySize )
@@ -162,346 +170,6 @@
     MYODBCDbgReturn( SQL_SUCCESS );
 }
 
-SQLRETURN MYODBCDes::setAutoUniqueValue( SQLSMALLINT nRecord, SQLINTEGER nAutoUniqueValue
)
-{
-    MYODBCDbgEnter();
-
-    Q_ASSERT( nRecord < 0 );
-    Q_ASSERT( nRecord >= listRecords.count() );
-
-    MYODBCDbgReturn( listRecords[nRecord]->setAutoUniqueValue( nAutoUniqueValue ) );
-}
-
-SQLRETURN MYODBCDes::setBaseColumnName( SQLSMALLINT nRecord, const QString
&stringBaseColumnName )
-{
-    MYODBCDbgEnter();
-
-    Q_ASSERT( nRecord < 0 );
-    Q_ASSERT( nRecord >= listRecords.count() );
-
-    MYODBCDbgReturn( listRecords[nRecord]->setBaseColumnName( stringBaseColumnName )
);
-}
-
-SQLRETURN MYODBCDes::setBaseTableName( SQLSMALLINT nRecord, const QString
&stringBaseTableName )
-{
-    MYODBCDbgEnter();
-
-    Q_ASSERT( nRecord < 0 );
-    Q_ASSERT( nRecord >= listRecords.count() );
-
-    MYODBCDbgReturn( listRecords[nRecord]->setBaseTableName( stringBaseTableName ) );
-}
-
-SQLRETURN MYODBCDes::setCaseSensitive( SQLSMALLINT nRecord, SQLINTEGER nCaseSensitive )
-{
-    MYODBCDbgEnter();
-
-    Q_ASSERT( nRecord < 0 );
-    Q_ASSERT( nRecord >= listRecords.count() );
-
-    MYODBCDbgReturn( listRecords[nRecord]->setCaseSensitive( nCaseSensitive ) );
-}
-
-SQLRETURN MYODBCDes::setCatalogName( SQLSMALLINT nRecord, const QString
&stringCatalogName )
-{
-    MYODBCDbgEnter();
-
-    Q_ASSERT( nRecord < 0 );
-    Q_ASSERT( nRecord >= listRecords.count() );
-
-    MYODBCDbgReturn( listRecords[nRecord]->setCatalogName( stringCatalogName ) );
-}
-
-SQLRETURN MYODBCDes::setConciseType( SQLSMALLINT nRecord, SQLSMALLINT nConciseType )
-{
-    MYODBCDbgEnter();
-
-    Q_ASSERT( nRecord < 0 );
-    Q_ASSERT( nRecord >= listRecords.count() );
-
-    MYODBCDbgReturn( listRecords[nRecord]->setConciseType( nConciseType ) );
-}
-
-SQLRETURN MYODBCDes::setDataPtr( SQLSMALLINT nRecord, SQLPOINTER pDataPtr )
-{
-    MYODBCDbgEnter();
-
-    Q_ASSERT( nRecord < 0 );
-    Q_ASSERT( nRecord >= listRecords.count() );
-
-    MYODBCDbgReturn( listRecords[nRecord]->setDataPtr( pDataPtr ) );
-}
-
-SQLRETURN MYODBCDes::setDatetimeIntervalCode( SQLSMALLINT nRecord, SQLSMALLINT
nDatetimeIntervalCode )
-{
-    MYODBCDbgEnter();
-
-    Q_ASSERT( nRecord < 0 );
-    Q_ASSERT( nRecord >= listRecords.count() );
-
-    MYODBCDbgReturn( listRecords[nRecord]->setDatetimeIntervalCode(
nDatetimeIntervalCode ) );
-}
-
-SQLRETURN MYODBCDes::setDatetimeIntervalPrecision( SQLSMALLINT nRecord, SQLINTEGER
nDatetimeIntervalPrecision )
-{
-    MYODBCDbgEnter();
-
-    Q_ASSERT( nRecord < 0 );
-    Q_ASSERT( nRecord >= listRecords.count() );
-
-    MYODBCDbgReturn( listRecords[nRecord]->setDatetimeIntervalPrecision(
nDatetimeIntervalPrecision ) );
-}
-
-SQLRETURN MYODBCDes::setDisplaySize( SQLSMALLINT nRecord, SQLINTEGER nDisplaySize )
-{
-    MYODBCDbgEnter();
-
-    Q_ASSERT( nRecord < 0 );
-    Q_ASSERT( nRecord >= listRecords.count() );
-
-    MYODBCDbgReturn( listRecords[nRecord]->setDisplaySize( nDisplaySize ) );
-}
-
-SQLRETURN MYODBCDes::setFixedPrecScale( SQLSMALLINT nRecord, SQLSMALLINT nFixedPrecScale
)
-{
-    MYODBCDbgEnter();
-
-    Q_ASSERT( nRecord < 0 );
-    Q_ASSERT( nRecord >= listRecords.count() );
-
-    MYODBCDbgReturn( listRecords[nRecord]->setFixedPrecScale( nFixedPrecScale ) );
-}
-
-SQLRETURN MYODBCDes::setIndicatorPtr( SQLSMALLINT nRecord, SQLINTEGER *pnIndicatorPtr )
-{
-    MYODBCDbgEnter();
-
-    Q_ASSERT( nRecord < 0 );
-    Q_ASSERT( nRecord >= listRecords.count() );
-
-    MYODBCDbgReturn( listRecords[nRecord]->setIndicatorPtr( pnIndicatorPtr ) );
-}
-
-SQLRETURN MYODBCDes::setLabel( SQLSMALLINT nRecord, const QString &stringLabel )
-{
-    MYODBCDbgEnter();
-
-    Q_ASSERT( nRecord < 0 );
-    Q_ASSERT( nRecord >= listRecords.count() );
-
-    MYODBCDbgReturn( listRecords[nRecord]->setLabel( stringLabel ) );
-}
-
-SQLRETURN MYODBCDes::setLength( SQLSMALLINT nRecord, SQLUINTEGER nLength )
-{
-    MYODBCDbgEnter();
-
-    Q_ASSERT( nRecord < 0 );
-    Q_ASSERT( nRecord >= listRecords.count() );
-
-    MYODBCDbgReturn( listRecords[nRecord]->setLength( nLength ) );
-}
-
-SQLRETURN MYODBCDes::setLiteralPrefix( SQLSMALLINT nRecord, const QString
&stringLiteralPrefix )
-{
-    MYODBCDbgEnter();
-
-    Q_ASSERT( nRecord < 0 );
-    Q_ASSERT( nRecord >= listRecords.count() );
-
-    MYODBCDbgReturn( listRecords[nRecord]->setLiteralPrefix( stringLiteralPrefix ) );
-}
-
-SQLRETURN MYODBCDes::setLiteralSuffix( SQLSMALLINT nRecord, const QString
&stringLiteralSuffix )
-{
-    MYODBCDbgEnter();
-
-    Q_ASSERT( nRecord < 0 );
-    Q_ASSERT( nRecord >= listRecords.count() );
-
-    MYODBCDbgReturn( listRecords[nRecord]->setLiteralSuffix( stringLiteralSuffix ) );
-}
-
-SQLRETURN MYODBCDes::setLocalTypeName( SQLSMALLINT nRecord, const QString
&stringLocalTypeName )
-{
-    MYODBCDbgEnter();
-
-    Q_ASSERT( nRecord < 0 );
-    Q_ASSERT( nRecord >= listRecords.count() );
-
-    MYODBCDbgReturn( listRecords[nRecord]->setLocalTypeName( stringLocalTypeName ) );
-}
-
-SQLRETURN MYODBCDes::setName( SQLSMALLINT nRecord, const QString &stringName )
-{
-    MYODBCDbgEnter();
-
-    Q_ASSERT( nRecord < 0 );
-    Q_ASSERT( nRecord >= listRecords.count() );
-
-    MYODBCDbgReturn( listRecords[nRecord]->setName( stringName ) );
-}
-
-SQLRETURN MYODBCDes::setNullable( SQLSMALLINT nRecord, SQLSMALLINT nNullable )
-{
-    MYODBCDbgEnter();
-
-    Q_ASSERT( nRecord < 0 );
-    Q_ASSERT( nRecord >= listRecords.count() );
-
-    MYODBCDbgReturn( listRecords[nRecord]->setNullable( nNullable ) );
-}
-
-SQLRETURN MYODBCDes::setNumPrecRadix( SQLSMALLINT nRecord, SQLINTEGER nNumPrecRadix )
-{
-    MYODBCDbgEnter();
-
-    Q_ASSERT( nRecord < 0 );
-    Q_ASSERT( nRecord >= listRecords.count() );
-
-    MYODBCDbgReturn( listRecords[nRecord]->setNumPrecRadix( nNumPrecRadix ) );
-}
-
-SQLRETURN MYODBCDes::setOctetLength( SQLSMALLINT nRecord, SQLINTEGER nOctetLength )
-{
-    MYODBCDbgEnter();
-
-    Q_ASSERT( nRecord < 0 );
-    Q_ASSERT( nRecord >= listRecords.count() );
-
-    MYODBCDbgReturn( listRecords[nRecord]->setOctetLength( nOctetLength ) );
-}
-
-SQLRETURN MYODBCDes::setOctetLengthPtr( SQLSMALLINT nRecord, SQLINTEGER *pnOctetLengthPtr
)
-{
-    MYODBCDbgEnter();
-
-    Q_ASSERT( nRecord < 0 );
-    Q_ASSERT( nRecord >= listRecords.count() );
-
-    MYODBCDbgReturn( listRecords[nRecord]->setOctetLengthPtr( pnOctetLengthPtr ) );
-}
-
-SQLRETURN MYODBCDes::setParamterType( SQLSMALLINT nRecord, SQLSMALLINT nParamterType )
-{
-    MYODBCDbgEnter();
-
-    Q_ASSERT( nRecord < 0 );
-    Q_ASSERT( nRecord >= listRecords.count() );
-
-    MYODBCDbgReturn( listRecords[nRecord]->setParamterType( nParamterType ) );
-}
-
-SQLRETURN MYODBCDes::setPrecision( SQLSMALLINT nRecord, SQLSMALLINT nPrecision )
-{
-    MYODBCDbgEnter();
-
-    Q_ASSERT( nRecord < 0 );
-    Q_ASSERT( nRecord >= listRecords.count() );
-
-    MYODBCDbgReturn( listRecords[nRecord]->setPrecision( nPrecision ) );
-}
-
-SQLRETURN MYODBCDes::setRowver( SQLSMALLINT nRecord, SQLSMALLINT nRowver )
-{
-    MYODBCDbgEnter();
-
-    Q_ASSERT( nRecord < 0 );
-    Q_ASSERT( nRecord >= listRecords.count() );
-
-    MYODBCDbgReturn( listRecords[nRecord]->setRowver( nRowver ) );
-}
-
-SQLRETURN MYODBCDes::setScale( SQLSMALLINT nRecord, SQLSMALLINT nScale )
-{
-    MYODBCDbgEnter();
-
-    Q_ASSERT( nRecord < 0 );
-    Q_ASSERT( nRecord >= listRecords.count() );
-
-    MYODBCDbgReturn( listRecords[nRecord]->setScale( nScale ) );
-}
-
-SQLRETURN MYODBCDes::setSchemaName( SQLSMALLINT nRecord, const QString
&stringSchemaName )
-{
-    MYODBCDbgEnter();
-
-    Q_ASSERT( nRecord < 0 );
-    Q_ASSERT( nRecord >= listRecords.count() );
-
-    MYODBCDbgReturn( listRecords[nRecord]->setSchemaName( stringSchemaName ) );
-}
-
-SQLRETURN MYODBCDes::setSearchable( SQLSMALLINT nRecord, SQLSMALLINT nSearchable )
-{
-    MYODBCDbgEnter();
-
-    Q_ASSERT( nRecord < 0 );
-    Q_ASSERT( nRecord >= listRecords.count() );
-
-    MYODBCDbgReturn( listRecords[nRecord]->setSearchable( nSearchable ) );
-}
-
-SQLRETURN MYODBCDes::setTableName( SQLSMALLINT nRecord, const QString
&stringTableName )
-{
-    MYODBCDbgEnter();
-
-    Q_ASSERT( nRecord < 0 );
-    Q_ASSERT( nRecord >= listRecords.count() );
-
-    MYODBCDbgReturn( listRecords[nRecord]->setTableName( stringTableName ) );
-}
-
-SQLRETURN MYODBCDes::setType( SQLSMALLINT nRecord, SQLSMALLINT nType )
-{
-    MYODBCDbgEnter();
-
-    Q_ASSERT( nRecord < 0 );
-    Q_ASSERT( nRecord >= listRecords.count() );
-
-    MYODBCDbgReturn( listRecords[nRecord]->setType( nType ) );
-}
-
-SQLRETURN MYODBCDes::setTypeName( SQLSMALLINT nRecord, const QString &stringTypeName
)
-{
-    MYODBCDbgEnter();
-
-    Q_ASSERT( nRecord < 0 );
-    Q_ASSERT( nRecord >= listRecords.count() );
-
-    MYODBCDbgReturn( listRecords[nRecord]->setTypeName( stringTypeName ) );
-}
-
-SQLRETURN MYODBCDes::setUnnamed( SQLSMALLINT nRecord, SQLSMALLINT nUnnamed )
-{
-    MYODBCDbgEnter();
-
-    Q_ASSERT( nRecord < 0 );
-    Q_ASSERT( nRecord >= listRecords.count() );
-
-    MYODBCDbgReturn( listRecords[nRecord]->setUnnamed( nUnnamed ) );
-}
-
-SQLRETURN MYODBCDes::setUnsigned( SQLSMALLINT nRecord, SQLSMALLINT nUnsigned )
-{
-    MYODBCDbgEnter();
-
-    Q_ASSERT( nRecord < 0 );
-    Q_ASSERT( nRecord >= listRecords.count() );
-
-    MYODBCDbgReturn( listRecords[nRecord]->setUnsigned( nUnsigned ) );
-}
-
-SQLRETURN MYODBCDes::setUpdatable( SQLSMALLINT nRecord, SQLSMALLINT nUpdatable )
-{
-    MYODBCDbgEnter();
-
-    Q_ASSERT( nRecord < 0 );
-    Q_ASSERT( nRecord >= listRecords.count() );
-
-    MYODBCDbgReturn( listRecords[nRecord]->setUpdatable( nUpdatable ) );
-}
-
 SQLRETURN MYODBCDes::getDescRec( SQLSMALLINT nRecNumber, SQLWCHAR *pszName, SQLSMALLINT
nBufferLength, SQLSMALLINT *pnStringLengthPtr, SQLSMALLINT *pnTypePtr, SQLSMALLINT
*pnSubTypePtr, SQLINTEGER *pnLengthPtr, SQLSMALLINT *pnPrecisionPtr, SQLSMALLINT
*pnScalePtr, SQLSMALLINT *pnNullablePtr )
 {
     MYODBCDbgEnter();
@@ -517,7 +185,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( vectorRecords[nRecNumber]->getDescRec( pszName, nBufferLength,
pnStringLengthPtr, pnTypePtr, pnSubTypePtr, pnLengthPtr, pnPrecisionPtr, pnScalePtr,
pnNullablePtr ) );
 }
 
 SQLRETURN MYODBCDes::getDescField( SQLSMALLINT nRecNumber, SQLSMALLINT nFieldIdentifier,
SQLPOINTER pValuePtr, SQLINTEGER nBufferLength, SQLINTEGER *pnStringLengthPtr )
@@ -587,7 +255,7 @@
         MYODBCDbgReturn( SQL_NO_DATA );
 
     /* push down to record for further processing */
-    MYODBCDbgReturn( listRecords[nRecNumber]->getDescField( nFieldIdentifier,
pValuePtr, nBufferLength, pnStringLengthPtr ) );
+    MYODBCDbgReturn( vectorRecords[nRecNumber]->getDescField( nFieldIdentifier,
pValuePtr, nBufferLength, pnStringLengthPtr ) );
 }
 
 SQLSMALLINT MYODBCDes::getAllocType()
@@ -637,7 +305,7 @@
         0 is returned if only the bookmark record exists (this makes the bookmark
         record something of a hidden record).
     */
-    MYODBCDbgReturn3( "%d", (listRecords.count() - 1) );
+    MYODBCDbgReturn3( "%d", (vectorRecords.count() - 1) );
 }
 
 SQLUINTEGER *MYODBCDes::getRowsProcessedPtr()
@@ -647,385 +315,86 @@
     MYODBCDbgReturn3( "%p", pnRowsProcessedPtr );
 }
 
-
-SQLINTEGER  MYODBCDes::getAutoUniqueValue( SQLSMALLINT nRecord )
+SQLHANDLE MYODBCDes::getOwner()
 {
     MYODBCDbgEnter();
 
-    Q_ASSERT( nRecord < 0 );
-    Q_ASSERT( nRecord >= listRecords.count() );
-
-    MYODBCDbgReturn3( "%d", listRecords[nRecord]->getAutoUniqueValue() );
+    MYODBCDbgReturn3( "%p", hOwner );
 }
 
-QString     MYODBCDes::getBaseColumnName( SQLSMALLINT nRecord )
+MYODBCDia *MYODBCDes::getDia()
 {
     MYODBCDbgEnter();
 
-    Q_ASSERT( nRecord < 0 );
-    Q_ASSERT( nRecord >= listRecords.count() );
-
-    MYODBCDbgReturn3( "%s", listRecords[nRecord]->getBaseColumnName() );
+    MYODBCDbgReturn3( "%p", pdia );
 }
 
-QString     MYODBCDes::getBaseTableName( SQLSMALLINT nRecord )
+void MYODBCDes::doClear()
 {
     MYODBCDbgEnter();
 
-    Q_ASSERT( nRecord < 0 );
-    Q_ASSERT( nRecord >= listRecords.count() );
+    /* delete records */
+    QMutableVectorIterator<MYODBCDesRec*> i( vectorRecords );
+    while ( i.hasNext() ) 
+    {
+        MYODBCDesRec *pdesrec = i.next();
+        delete pdesrec;
+        i.remove();
+    }
 
-    MYODBCDbgReturn3( "%s", listRecords[nRecord]->getBaseTableName() );
-}
+    /* reinit header fields */
+    doInit( nAllocType );
 
-SQLINTEGER  MYODBCDes::getCaseSensitive( SQLSMALLINT nRecord )
-{
-    MYODBCDbgEnter();
-
-    Q_ASSERT( nRecord < 0 );
-    Q_ASSERT( nRecord >= listRecords.count() );
-
-    MYODBCDbgReturn3( "%d", listRecords[nRecord]->getCaseSensitive() );
+    MYODBCDbgReturn2();
 }
 
-QString     MYODBCDes::getCatalogName( SQLSMALLINT nRecord )
+MYODBCDes &MYODBCDes::operator=( const MYODBCDes &des )
 {
-    MYODBCDbgEnter();
+    des.doClear();
+    des.nArraySize          = nArraySize;
+    des.nBindType           = nBindType;
+    des.pnArrayStatusPtr    = pnArrayStatusPtr;
+    des.pnBindOffsetPtr     = pnBindOffsetPtr;
+    des.pnRowsProcessedPtr  = pnRowsProcessedPtr;
 
-    Q_ASSERT( nRecord < 0 );
-    Q_ASSERT( nRecord >= listRecords.count() );
+    QVectorIterator<MYODBCDesRec*> i( vectorRecords );
+    while ( i.hasNext() ) 
+    {
+        MYODBCDesRec *pdesrec = i.next();
+        des.doAppend( pdesrec );
+    }
 
-    MYODBCDbgReturn3( "%s", listRecords[nRecord]->getCatalogName() );
+    MYODBCDbgReturn3( "%p", *this );
 }
 
-SQLSMALLINT MYODBCDes::getConciseType( SQLSMALLINT nRecord )
+void MYODBCDes::doInit( SQLSMALLINT nAllocType )
 {
     MYODBCDbgEnter();
 
-    Q_ASSERT( nRecord < 0 );
-    Q_ASSERT( nRecord >= listRecords.count() );
+    Q_ASSERT( nAllocType != SQL_DESC_ALLOC_AUTO && nAllocType !=
SQL_DESC_ALLOC_USER );
 
-    MYODBCDbgReturn3( "%d", listRecords[nRecord]->getConciseType() );
-}
+    this->nAllocType     = nAllocType;
+    nArraySize           = 1;
+    pnArrayStatusPtr     = NULL;
+    pnBindOffsetPtr      = NULL;
+    nBindType            = SQL_BIND_BY_COLUMN;
+    pnRowsProcessedPtr   = NULL;
 
-SQLPOINTER  MYODBCDes::getDataPtr( SQLSMALLINT nRecord )
-{
-    MYODBCDbgEnter();
+    /* we always have a viable index 0 - used, in some cases, as a bookmark */
+    doAppend();
 
-    Q_ASSERT( nRecord < 0 );
-    Q_ASSERT( nRecord >= listRecords.count() );
-
-    MYODBCDbgReturn3( "%p", listRecords[nRecord]->getDataPtr() );
+    MYODBCDbgReturn2();
 }
 
-SQLSMALLINT MYODBCDes::getDatetimeIntervalCode( SQLSMALLINT nRecord )
+void MYODBCDes::doAppend( MYODBCDesRec *pdesrec )
 {
     MYODBCDbgEnter();
 
-    Q_ASSERT( nRecord < 0 );
-    Q_ASSERT( nRecord >= listRecords.count() );
+    MYODBCDesRec *p = doAppend();
 
-    MYODBCDbgReturn3( "%d", listRecords[nRecord]->getDatetimeIntervalCode() );
-}
+    *p = *pdesrec;
 
-SQLINTEGER  MYODBCDes::getDatetimeIntervalPrecision( SQLSMALLINT nRecord )
-{
-    MYODBCDbgEnter();
-
-    Q_ASSERT( nRecord < 0 );
-    Q_ASSERT( nRecord >= listRecords.count() );
-
-    MYODBCDbgReturn3( "%d", listRecords[nRecord]->getDatetimeIntervalPrecision() );
-}
-
-SQLINTEGER  MYODBCDes::getDisplaySize( SQLSMALLINT nRecord )
-{
-    MYODBCDbgEnter();
-
-    Q_ASSERT( nRecord < 0 );
-    Q_ASSERT( nRecord >= listRecords.count() );
-
-    MYODBCDbgReturn3( "%d", listRecords[nRecord]->getDisplaySize() );
-}
-
-SQLSMALLINT MYODBCDes::getFixedPrecScale( SQLSMALLINT nRecord )
-{
-    MYODBCDbgEnter();
-
-    Q_ASSERT( nRecord < 0 );
-    Q_ASSERT( nRecord >= listRecords.count() );
-
-    MYODBCDbgReturn3( "%d", listRecords[nRecord]->getFixedPrecScale() );
-}
-
-SQLINTEGER *MYODBCDes::getIndicatorPtr( SQLSMALLINT nRecord )
-{
-    MYODBCDbgEnter();
-
-    Q_ASSERT( nRecord < 0 );
-    Q_ASSERT( nRecord >= listRecords.count() );
-
-    MYODBCDbgReturn3( "%p", listRecords[nRecord]->getIndicatorPtr() );
-}
-
-QString     MYODBCDes::getLabel( SQLSMALLINT nRecord )
-{
-    MYODBCDbgEnter();
-
-    Q_ASSERT( nRecord < 0 );
-    Q_ASSERT( nRecord >= listRecords.count() );
-
-    MYODBCDbgReturn3( "%s", listRecords[nRecord]->getLabel() );
-}
-
-SQLUINTEGER MYODBCDes::getLength( SQLSMALLINT nRecord )
-{
-    MYODBCDbgEnter();
-
-    Q_ASSERT( nRecord < 0 );
-    Q_ASSERT( nRecord >= listRecords.count() );
-
-    MYODBCDbgReturn3( "%d", listRecords[nRecord]->getLength() );
-}
-
-QString     MYODBCDes::getLiteralPrefix( SQLSMALLINT nRecord )
-{
-    MYODBCDbgEnter();
-
-    Q_ASSERT( nRecord < 0 );
-    Q_ASSERT( nRecord >= listRecords.count() );
-
-    MYODBCDbgReturn3( "%s", listRecords[nRecord]->getLiteralPrefix() );
-}
-
-QString     MYODBCDes::getLiteralSuffix( SQLSMALLINT nRecord )
-{
-    MYODBCDbgEnter();
-
-    Q_ASSERT( nRecord < 0 );
-    Q_ASSERT( nRecord >= listRecords.count() );
-
-    MYODBCDbgReturn3( "%s", listRecords[nRecord]->getLiteralSuffix() );
-}
-
-QString     MYODBCDes::getLocalTypeName( SQLSMALLINT nRecord )
-{
-    MYODBCDbgEnter();
-
-    Q_ASSERT( nRecord < 0 );
-    Q_ASSERT( nRecord >= listRecords.count() );
-
-    MYODBCDbgReturn3( "%s", listRecords[nRecord]->getLocalTypeName() );
-}
-
-QString     MYODBCDes::getName( SQLSMALLINT nRecord )
-{
-    MYODBCDbgEnter();
-
-    Q_ASSERT( nRecord < 0 );
-    Q_ASSERT( nRecord >= listRecords.count() );
-
-    MYODBCDbgReturn3( "%s", listRecords[nRecord]->getName() );
-}
-
-SQLSMALLINT MYODBCDes::getNullable( SQLSMALLINT nRecord )
-{
-    MYODBCDbgEnter();
-
-    Q_ASSERT( nRecord < 0 );
-    Q_ASSERT( nRecord >= listRecords.count() );
-
-    MYODBCDbgReturn3( "%d", listRecords[nRecord]->getNullable() );
-}
-
-SQLINTEGER  MYODBCDes::getNumPrecRadix( SQLSMALLINT nRecord )
-{
-    MYODBCDbgEnter();
-
-    Q_ASSERT( nRecord < 0 );
-    Q_ASSERT( nRecord >= listRecords.count() );
-
-    MYODBCDbgReturn3( "%d", listRecords[nRecord]->getNumPrecRadix() );
-}
-
-SQLINTEGER  MYODBCDes::getOctetLength( SQLSMALLINT nRecord )
-{
-    MYODBCDbgEnter();
-
-    Q_ASSERT( nRecord < 0 );
-    Q_ASSERT( nRecord >= listRecords.count() );
-
-    MYODBCDbgReturn3( "%d", listRecords[nRecord]->getOctetLength() );
-}
-
-SQLINTEGER *MYODBCDes::getOctetLengthPtr( SQLSMALLINT nRecord )
-{
-    MYODBCDbgEnter();
-
-    Q_ASSERT( nRecord < 0 );
-    Q_ASSERT( nRecord >= listRecords.count() );
-
-    MYODBCDbgReturn3( "%p", listRecords[nRecord]->getOctetLengthPtr() );
-}
-
-SQLSMALLINT MYODBCDes::getParamterType( SQLSMALLINT nRecord )
-{
-    MYODBCDbgEnter();
-
-    Q_ASSERT( nRecord < 0 );
-    Q_ASSERT( nRecord >= listRecords.count() );
-
-    MYODBCDbgReturn3( "%d", listRecords[nRecord]->getParamterType() );
-}
-
-SQLSMALLINT MYODBCDes::getPrecision( SQLSMALLINT nRecord )
-{
-    MYODBCDbgEnter();
-
-    Q_ASSERT( nRecord < 0 );
-    Q_ASSERT( nRecord >= listRecords.count() );
-
-    MYODBCDbgReturn3( "%d", listRecords[nRecord]->getPrecision() );
-}
-
-SQLSMALLINT MYODBCDes::getRowver( SQLSMALLINT nRecord )
-{
-    MYODBCDbgEnter();
-
-    Q_ASSERT( nRecord < 0 );
-    Q_ASSERT( nRecord >= listRecords.count() );
-
-    MYODBCDbgReturn3( "%d", listRecords[nRecord]->getRowver() );
-}
-
-SQLSMALLINT MYODBCDes::getScale( SQLSMALLINT nRecord )
-{
-    MYODBCDbgEnter();
-
-    Q_ASSERT( nRecord < 0 );
-    Q_ASSERT( nRecord >= listRecords.count() );
-
-    MYODBCDbgReturn3( "%d", listRecords[nRecord]->getScale() );
-}
-
-QString     MYODBCDes::getSchemaName( SQLSMALLINT nRecord )
-{
-    MYODBCDbgEnter();
-
-    Q_ASSERT( nRecord < 0 );
-    Q_ASSERT( nRecord >= listRecords.count() );
-
-    MYODBCDbgReturn3( "%s", listRecords[nRecord]->getSchemaName() );
-}
-
-SQLSMALLINT MYODBCDes::getSearchable( SQLSMALLINT nRecord )
-{
-    MYODBCDbgEnter();
-
-    Q_ASSERT( nRecord < 0 );
-    Q_ASSERT( nRecord >= listRecords.count() );
-
-    MYODBCDbgReturn3( "%d", listRecords[nRecord]->getSearchable() );
-}
-
-QString     MYODBCDes::getTableName( SQLSMALLINT nRecord )
-{
-    MYODBCDbgEnter();
-
-    Q_ASSERT( nRecord < 0 );
-    Q_ASSERT( nRecord >= listRecords.count() );
-
-    MYODBCDbgReturn3( "%s", listRecords[nRecord]->getTableName() );
-}
-
-SQLSMALLINT MYODBCDes::getType( SQLSMALLINT nRecord )
-{
-    MYODBCDbgEnter();
-
-    Q_ASSERT( nRecord < 0 );
-    Q_ASSERT( nRecord >= listRecords.count() );
-
-    MYODBCDbgReturn3( "%d", listRecords[nRecord]->getType() );
-}
-
-QString     MYODBCDes::getTypeName( SQLSMALLINT nRecord )
-{
-    MYODBCDbgEnter();
-
-    Q_ASSERT( nRecord < 0 );
-    Q_ASSERT( nRecord >= listRecords.count() );
-
-    MYODBCDbgReturn3( "%s", listRecords[nRecord]->getTypeName() );
-}
-
-SQLSMALLINT MYODBCDes::getUnnamed( SQLSMALLINT nRecord )
-{
-    MYODBCDbgEnter();
-
-    Q_ASSERT( nRecord < 0 );
-    Q_ASSERT( nRecord >= listRecords.count() );
-
-    MYODBCDbgReturn3( "%d", listRecords[nRecord]->getUnnamed() );
-}
-
-SQLSMALLINT MYODBCDes::getUnsigned( SQLSMALLINT nRecord )
-{
-    MYODBCDbgEnter();
-
-    Q_ASSERT( nRecord < 0 );
-    Q_ASSERT( nRecord >= listRecords.count() );
-
-    MYODBCDbgReturn3( "%d", listRecords[nRecord]->getUnsigned() );
-}
-
-SQLSMALLINT MYODBCDes::getUpdatable( SQLSMALLINT nRecord )
-{
-    MYODBCDbgEnter();
-
-    Q_ASSERT( nRecord < 0 );
-    Q_ASSERT( nRecord >= listRecords.count() );
-
-    MYODBCDbgReturn3( "%d", listRecords[nRecord]->getUpdatable() );
-}
-
-SQLHANDLE MYODBCDes::getOwner()
-{
-    MYODBCDbgEnter();
-
-    MYODBCDbgReturn3( "%p", hOwner );
-}
-
-MYODBCDia *MYODBCDes::getDia()
-{
-    MYODBCDbgEnter();
-
-    MYODBCDbgReturn3( "%p", pdia );
-}
-
-void MYODBCDes::doClear()
-{
-    MYODBCDbgEnter();
-
-    while ( listRecords.count() )
-    {
-        delete listRecords.takeLast();
-    }
-
-    doInit();
-
     MYODBCDbgReturn2();
 }
 
-void MYODBCDes::doInit()
-{
-    MYODBCDbgEnter();
 
-    nAllocType           = SQL_DESC_ALLOC_USER;
-    nArraySize           = 1;
-    pnArrayStatusPtr     = NULL;
-    pnBindOffsetPtr      = NULL;
-    nBindType            = SQL_BIND_BY_COLUMN;
-    pnRowsProcessedPtr   = NULL;
-
-    MYODBCDbgReturn2();
-}

Modified: MYODBCDes/MYODBCDesLib/MYODBCDesInternal.h
===================================================================
--- MYODBCDes/MYODBCDesLib/MYODBCDesInternal.h	2006-01-27 05:46:29 UTC (rev 50)
+++ MYODBCDes/MYODBCDesLib/MYODBCDesInternal.h	2006-01-31 08:51:33 UTC (rev 51)
@@ -2,15 +2,6 @@
 #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"
-#include "MYODBCDesRecIRD.h"
 
 #endif
 

Modified: MYODBCDes/MYODBCDesLib/MYODBCDesLib.vpj
===================================================================
--- MYODBCDes/MYODBCDesLib/MYODBCDesLib.vpj	2006-01-27 05:46:29 UTC (rev 50)
+++ MYODBCDes/MYODBCDesLib/MYODBCDesLib.vpj	2006-01-31 08:51:33 UTC (rev 51)
@@ -199,11 +199,6 @@
 			Name="Header Files"
 			Filters="*.h;*.H;*.hh;*.hpp;*.hxx;*.inc;*.sh;*.cpy;*.if">
 			<F N="MYODBCDesInternal.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"

Modified: MYODBCDes/MYODBCDesLib/MYODBCDesRec.cpp
===================================================================
--- MYODBCDes/MYODBCDesLib/MYODBCDesRec.cpp	2006-01-27 05:46:29 UTC (rev 50)
+++ MYODBCDes/MYODBCDesLib/MYODBCDesRec.cpp	2006-01-31 08:51:33 UTC (rev 51)
@@ -305,6 +305,11 @@
 
     this->stringName = stringName;
 
+    if ( stringName.isEmpty() )
+        setUnnamed( SQL_UNNAMED );
+    else
+        setUnnamed( SQL_NAMED );
+
     MYODBCDbgReturn( SQL_SUCCESS );
 }
 
@@ -1650,6 +1655,9 @@
         case SQL_TYPE_DATE:                         /*  91  */
             this->nConciseType = nConciseType;
             setType( SQL_DATETIME );
+// \todo set SQL_DESC_TYPE_NAME to MySQL data type....
+//            setTypeName( "DATETIME" );
+// 
             setDatetimeIntervalCode( SQL_CODE_DATE );
             MYODBCDbgReturn( SQL_SUCCESS );
         case SQL_TYPE_TIME:                         /*  92  */
@@ -1752,3 +1760,4 @@
     MYODBCDbgReturn( SQL_SUCCESS );
 }
 
+

Deleted: MYODBCDes/MYODBCDesLib/MYODBCDesRec.h
===================================================================
--- MYODBCDes/MYODBCDesLib/MYODBCDesRec.h	2006-01-27 05:46:29 UTC (rev 50)
+++ MYODBCDes/MYODBCDesLib/MYODBCDesRec.h	2006-01-31 08:51:33 UTC (rev 51)
@@ -1,173 +0,0 @@
-#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 MYODBCDesRec
-{
-public:
-    MYODBCDesRec( MYODBCDes *pdes );
-    ~MYODBCDesRec();
-
-    /* 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 ) = 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 ) = 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 );
-    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( SQLWCHAR *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 );
-
-    /* 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();
-
-    MYODBCDes *getDes();
-
-    /* do'rs */
-    virtual SQLRETURN doUnbind();
-
-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 );
-    virtual SQLRETURN setTypeC( SQLSMALLINT nType );
-    virtual SQLRETURN setTypeSQL( SQLSMALLINT nType );
-    virtual SQLRETURN setConciseTypeC( SQLSMALLINT nConciseType );
-    virtual SQLRETURN setConciseTypeSQL( SQLSMALLINT nConciseType );
-
-    virtual SQLRETURN doConsistencyCheck();
-};
-
-#endif
-

Deleted: MYODBCDes/MYODBCDesLib/MYODBCDesRecAPD.h
===================================================================
--- MYODBCDes/MYODBCDesLib/MYODBCDesRecAPD.h	2006-01-27 05:46:29 UTC (rev 50)
+++ MYODBCDes/MYODBCDesLib/MYODBCDesRecAPD.h	2006-01-31 08:51:33 UTC (rev 51)
@@ -1,19 +0,0 @@
-#ifndef MYODBC_DES_REC_APD_H
-#define MYODBC_DES_REC_APD_H
-
-class MYODBCDesAPD;
-
-class MYODBCDesRecAPD : public MYODBCDesRec
-{
-public:
-    MYODBCDesRecAPD( MYODBCDesAPD *pdes );
-
-    /* setters */
-    SQLRETURN setDescField( SQLSMALLINT nFieldIdentifier, SQLPOINTER pValuePtr,
SQLINTEGER nBufferLength );
-    SQLRETURN setConciseType( SQLSMALLINT nConciseType );
-
-    /* getters */
-};
-
-#endif
-

Deleted: MYODBCDes/MYODBCDesLib/MYODBCDesRecARD.h
===================================================================
--- MYODBCDes/MYODBCDesLib/MYODBCDesRecARD.h	2006-01-27 05:46:29 UTC (rev 50)
+++ MYODBCDes/MYODBCDesLib/MYODBCDesRecARD.h	2006-01-31 08:51:33 UTC (rev 51)
@@ -1,19 +0,0 @@
-#ifndef MYODBC_DES_REC_ARD_H
-#define MYODBC_DES_REC_ARD_H
-
-class MYODBCDesARD;
-
-class MYODBCDesRecARD : public MYODBCDesRec
-{
-public:
-    MYODBCDesRecARD( MYODBCDesARD *pdes );
-
-    /* setters */
-    SQLRETURN setDescField( SQLSMALLINT nFieldIdentifier, SQLPOINTER pValuePtr,
SQLINTEGER nBufferLength );
-    SQLRETURN setConciseType( SQLSMALLINT nConciseType );
-
-    /* getters */
-};
-
-#endif
-

Deleted: MYODBCDes/MYODBCDesLib/MYODBCDesRecIPD.h
===================================================================
--- MYODBCDes/MYODBCDesLib/MYODBCDesRecIPD.h	2006-01-27 05:46:29 UTC (rev 50)
+++ MYODBCDes/MYODBCDesLib/MYODBCDesRecIPD.h	2006-01-31 08:51:33 UTC (rev 51)
@@ -1,19 +0,0 @@
-#ifndef MYODBC_DES_REC_IPD_H
-#define MYODBC_DES_REC_IPD_H
-
-class MYODBCDesIPD;
-
-class MYODBCDesRecIPD : public MYODBCDesRec
-{
-public:
-    MYODBCDesRecIPD( MYODBCDesIPD *pdes );
-
-    /* setters */
-    SQLRETURN setDescField( SQLSMALLINT nFieldIdentifier, SQLPOINTER pValuePtr,
SQLINTEGER nBufferLength );
-    SQLRETURN setConciseType( SQLSMALLINT nConciseType );
-
-    /* getters */
-};
-
-#endif
-

Modified: MYODBCDes/MYODBCDesLib/MYODBCDesRecIRD.cpp
===================================================================
--- MYODBCDes/MYODBCDesLib/MYODBCDesRecIRD.cpp	2006-01-27 05:46:29 UTC (rev 50)
+++ MYODBCDes/MYODBCDesLib/MYODBCDesRecIRD.cpp	2006-01-31 08:51:33 UTC (rev 51)
@@ -40,4 +40,33 @@
     MYODBCDbgReturn( setConciseTypeSQL( nConciseType ) );
 }
 
+SQLRETURN MYODBCDesRecIRD::setDefaultInteger()
+{
 
+    setAutoUniqueValue( SQL_FALSE );
+    setBaseColumnName( "" );
+    setBaseTableName( "" );
+    setCaseSensitive( SQL_FALSE );
+    setCatalogName( "" );
+    setConciseTypeSQL( SQL_INTEGER );
+    setDisplaySize( 28 );
+    setFixedPrecScale( SQL_TRUE );
+    setLabel( "" );
+    setLiteralPrefix( "" );
+    setLiteralSuffix( "" );
+    setLocalTypeName( "" );
+    setName( "" );
+    setNullable( SQL_NULLABLE_UNKNOWN );
+    setNumPrecRadix( 10 );
+    setOctetLength( 0 );
+    setPrecision( 10 );
+    setScale( 0 );
+    setSchemaName( "" );
+    setSearchable( SQL_PRED_NONE );
+    setTableName( "" );
+    setUnsigned( SQL_FALSE );
+    setUpdatable( SQL_ATTR_READONLY );
+
+}
+
+

Deleted: MYODBCDes/MYODBCDesLib/MYODBCDesRecIRD.h
===================================================================
--- MYODBCDes/MYODBCDesLib/MYODBCDesRecIRD.h	2006-01-27 05:46:29 UTC (rev 50)
+++ MYODBCDes/MYODBCDesLib/MYODBCDesRecIRD.h	2006-01-31 08:51:33 UTC (rev 51)
@@ -1,20 +0,0 @@
-#ifndef MYODBC_DES_REC_IRD_H
-#define MYODBC_DES_REC_IRD_H
-
-class MYODBCDesIRD;
-
-class MYODBCDesRecIRD : public MYODBCDesRec
-{
-public:
-    MYODBCDesRecIRD( MYODBCDesIRD *pdes );
-
-    /* setters */
-    SQLRETURN setDescField( SQLSMALLINT nFieldIdentifier, SQLPOINTER pValuePtr,
SQLINTEGER nBufferLength );
-    SQLRETURN setConciseType( SQLSMALLINT nConciseType );
-
-    /* getters */
-};
-
-
-#endif
-

Modified: MYODBCDes/include/MYODBCDes.h
===================================================================
--- MYODBCDes/include/MYODBCDes.h	2006-01-27 05:46:29 UTC (rev 50)
+++ MYODBCDes/include/MYODBCDes.h	2006-01-31 08:51:33 UTC (rev 51)
@@ -52,12 +52,12 @@
 #include <MYODBCDbg.h>
 #include <MYODBCDia.h>
 
-#include <QList>
+#include <QVector>
 #include <QString>
 #include <QStringList>
 #include <QTextStream>
 
-class MYODBCDesRec;
+#include "MYODBCDesRec.h"
 
 /*!
     \brief  Descriptor.
@@ -73,16 +73,14 @@
 {
     friend class MYODBCDesRec;
 public:
-    MYODBCDes( SQLHANDLE hOwner );
+    MYODBCDes( SQLHANDLE hOwner, SQLSMALLINT nAllocType );
     ~MYODBCDes();
 
-    /* setters */
+    QVector<MYODBCDesRec*> vectorRecords;            /*!< Descriptor records.
Avoid adding records directly \sa doAppend setCount.        */
 
-    /* ODBC validated */
+    /* setters */
     virtual SQLRETURN setDescRec( SQLSMALLINT nRecNumber, SQLSMALLINT nType, SQLSMALLINT
nSubType, SQLINTEGER nLength, SQLSMALLINT nPrecision, SQLSMALLINT nScale, SQLPOINTER
pDataPtr, SQLINTEGER *pnStringLengthPtr, SQLINTEGER *pnIndicatorPtr );
     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 );
@@ -90,49 +88,9 @@
     virtual SQLRETURN setCount( SQLSMALLINT nCount, bool bUnbind = false ) = 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 );
-    virtual SQLRETURN setCaseSensitive( SQLSMALLINT nRecord, SQLINTEGER nCaseSensitive );
-    virtual SQLRETURN setCatalogName( SQLSMALLINT nRecord, const QString
&stringCatalogName );
-    virtual SQLRETURN setConciseType( SQLSMALLINT nRecord, SQLSMALLINT nConciseType );
-    virtual SQLRETURN setDataPtr( SQLSMALLINT nRecord, SQLPOINTER pDataPtr );
-    virtual SQLRETURN setDatetimeIntervalCode( SQLSMALLINT nRecord, SQLSMALLINT
nDatetimeIntervalCode );
-    virtual SQLRETURN setDatetimeIntervalPrecision( SQLSMALLINT nRecord, SQLINTEGER
nDatetimeIntervalPrecision );
-    virtual SQLRETURN setDisplaySize( SQLSMALLINT nRecord, SQLINTEGER nDisplaySize );
-    virtual SQLRETURN setFixedPrecScale( SQLSMALLINT nRecord, SQLSMALLINT nFixedPrecScale
);
-    virtual SQLRETURN setIndicatorPtr( SQLSMALLINT nRecord, SQLINTEGER *pnIndicatorPtr );
-    virtual SQLRETURN setLabel( SQLSMALLINT nRecord, const QString &stringLabel );
-    virtual SQLRETURN setLength( SQLSMALLINT nRecord, SQLUINTEGER nLength );
-    virtual SQLRETURN setLiteralPrefix( SQLSMALLINT nRecord, const QString
&stringLiteralPrefix );
-    virtual SQLRETURN setLiteralSuffix( SQLSMALLINT nRecord, const QString
&stringLiteralSuffix );
-    virtual SQLRETURN setLocalTypeName( SQLSMALLINT nRecord, const QString
&stringLocalTypeName );
-    virtual SQLRETURN setName( SQLSMALLINT nRecord, const QString &stringName );
-    virtual SQLRETURN setNullable( SQLSMALLINT nRecord, SQLSMALLINT nNullable );
-    virtual SQLRETURN setNumPrecRadix( SQLSMALLINT nRecord, SQLINTEGER nNumPrecRadix );
-    virtual SQLRETURN setOctetLength( SQLSMALLINT nRecord, SQLINTEGER nOctetLength );
-    virtual SQLRETURN setOctetLengthPtr( SQLSMALLINT nRecord, SQLINTEGER
*pnOctetLengthPtr );
-    virtual SQLRETURN setParamterType( SQLSMALLINT nRecord, SQLSMALLINT nParamterType );
-    virtual SQLRETURN setPrecision( SQLSMALLINT nRecord, SQLSMALLINT nPrecision );
-    virtual SQLRETURN setRowver( SQLSMALLINT nRecord, SQLSMALLINT nRowver );
-    virtual SQLRETURN setScale( SQLSMALLINT nRecord, SQLSMALLINT nScale );
-    virtual SQLRETURN setSchemaName( SQLSMALLINT nRecord, const QString
&stringSchemaName );
-    virtual SQLRETURN setSearchable( SQLSMALLINT nRecord, SQLSMALLINT nSearchable );
-    virtual SQLRETURN setTableName( SQLSMALLINT nRecord, const QString
&stringTableName );
-    virtual SQLRETURN setType( SQLSMALLINT nRecord, SQLSMALLINT nType );
-    virtual SQLRETURN setTypeName( SQLSMALLINT nRecord, const QString &stringTypeName
);
-    virtual SQLRETURN setUnnamed( SQLSMALLINT nRecord, SQLSMALLINT nUnnamed );
-    virtual SQLRETURN setUnsigned( SQLSMALLINT nRecord, SQLSMALLINT nUnsigned );
-    virtual SQLRETURN setUpdatable( SQLSMALLINT nRecord, SQLSMALLINT nUpdatable );
-    
     /* getters */
-
-    /* ODBC validated */
-    virtual SQLRETURN getDescRec( SQLSMALLINT nRecNumber, SQLWCHAR *pszName, SQLSMALLINT
nBufferLength, SQLSMALLINT *pnStringLengthPtr, SQLSMALLINT *pnTypePtr, SQLSMALLINT
*pnSubTypePtr, SQLINTEGER *pnLengthPtr, SQLSMALLINT *pnPrecisionPtr, SQLSMALLINT
*pnScalePtr, SQLSMALLINT *pnNullablePtr );
-    virtual SQLRETURN getDescField( SQLSMALLINT nRecNumber, SQLSMALLINT nFieldIdentifier,
SQLPOINTER pValuePtr, SQLINTEGER nBufferLength, SQLINTEGER *pnStringLengthPtr );
-
-    /* header fields */
+    virtual SQLRETURN       getDescRec( SQLSMALLINT nRecNumber, SQLWCHAR *pszName,
SQLSMALLINT nBufferLength, SQLSMALLINT *pnStringLengthPtr, SQLSMALLINT *pnTypePtr,
SQLSMALLINT *pnSubTypePtr, SQLINTEGER *pnLengthPtr, SQLSMALLINT *pnPrecisionPtr,
SQLSMALLINT *pnScalePtr, SQLSMALLINT *pnNullablePtr );
+    virtual SQLRETURN       getDescField( SQLSMALLINT nRecNumber, SQLSMALLINT
nFieldIdentifier, SQLPOINTER pValuePtr, SQLINTEGER nBufferLength, SQLINTEGER
*pnStringLengthPtr );
     virtual SQLSMALLINT     getAllocType();
     virtual SQLUINTEGER     getArraySize();
     virtual SQLUSMALLINT *  getArrayStatusPtr();
@@ -140,65 +98,29 @@
     virtual SQLUINTEGER     getBindType();
     virtual SQLSMALLINT     getCount();
     virtual SQLUINTEGER *   getRowsProcessedPtr();
+    SQLHANDLE               getOwner();
+    MYODBCDia *             getDia();
 
-    /* record fields */
-    virtual SQLINTEGER  getAutoUniqueValue( SQLSMALLINT nRecord );
-    virtual QString     getBaseColumnName( SQLSMALLINT nRecord );
-    virtual QString     getBaseTableName( SQLSMALLINT nRecord );
-    virtual SQLINTEGER  getCaseSensitive( SQLSMALLINT nRecord );
-    virtual QString     getCatalogName( SQLSMALLINT nRecord );
-    virtual SQLSMALLINT getConciseType( SQLSMALLINT nRecord );
-    virtual SQLPOINTER  getDataPtr( SQLSMALLINT nRecord );
-    virtual SQLSMALLINT getDatetimeIntervalCode( SQLSMALLINT nRecord );
-    virtual SQLINTEGER  getDatetimeIntervalPrecision( SQLSMALLINT nRecord );
-    virtual SQLINTEGER  getDisplaySize( SQLSMALLINT nRecord );
-    virtual SQLSMALLINT getFixedPrecScale( SQLSMALLINT nRecord );
-    virtual SQLINTEGER *getIndicatorPtr( SQLSMALLINT nRecord );
-    virtual QString     getLabel( SQLSMALLINT nRecord );
-    virtual SQLUINTEGER getLength( SQLSMALLINT nRecord );
-    virtual QString     getLiteralPrefix( SQLSMALLINT nRecord );
-    virtual QString     getLiteralSuffix( SQLSMALLINT nRecord );
-    virtual QString     getLocalTypeName( SQLSMALLINT nRecord );
-    virtual QString     getName( SQLSMALLINT nRecord );
-    virtual SQLSMALLINT getNullable( SQLSMALLINT nRecord );
-    virtual SQLINTEGER  getNumPrecRadix( SQLSMALLINT nRecord );
-    virtual SQLINTEGER  getOctetLength( SQLSMALLINT nRecord );
-    virtual SQLINTEGER *getOctetLengthPtr( SQLSMALLINT nRecord );
-    virtual SQLSMALLINT getParamterType( SQLSMALLINT nRecord );
-    virtual SQLSMALLINT getPrecision( SQLSMALLINT nRecord );
-    virtual SQLSMALLINT getRowver( SQLSMALLINT nRecord );
-    virtual SQLSMALLINT getScale( SQLSMALLINT nRecord );
-    virtual QString     getSchemaName( SQLSMALLINT nRecord );
-    virtual SQLSMALLINT getSearchable( SQLSMALLINT nRecord );
-    virtual QString     getTableName( SQLSMALLINT nRecord );
-    virtual SQLSMALLINT getType( SQLSMALLINT nRecord );
-    virtual QString     getTypeName( SQLSMALLINT nRecord );
-    virtual SQLSMALLINT getUnnamed( SQLSMALLINT nRecord );
-    virtual SQLSMALLINT getUnsigned( SQLSMALLINT nRecord );
-    virtual SQLSMALLINT getUpdatable( SQLSMALLINT nRecord );
-
-    /* misc */
-    SQLHANDLE getOwner();
-    MYODBCDia *getDia();
-
+    /* do'ers */
+    virtual MYODBCDesRec *doAppend() = 0;           /*!< Append descriptor record. Use
this to avoid mismatched record types.   */ 
     virtual void doClear();
 
+    /* operators */
+    virtual MYODBCDes &operator=( const MYODBCDes &des );
+
 protected:
-    SQLHANDLE               hOwner;                /*!< dbc if explicit else stmt     
                */  
-    MYODBCDia *             pdia;                  /*!< errors, warnings, etc         
                */
+    SQLHANDLE       hOwner;                 /*!< dbc if explicit else stmt            
         */  
+    MYODBCDia *     pdia;                   /*!< errors, warnings, etc                
         */
 
-    SQLSMALLINT             nAllocType;
-    SQLUINTEGER             nArraySize;
-    SQLUSMALLINT *          pnArrayStatusPtr;
-    SQLINTEGER *            pnBindOffsetPtr;
-    SQLUINTEGER             nBindType;
-    SQLUINTEGER *           pnRowsProcessedPtr;
+    SQLSMALLINT     nAllocType;
+    SQLUINTEGER     nArraySize;
+    SQLUSMALLINT *  pnArrayStatusPtr;
+    SQLINTEGER *    pnBindOffsetPtr;
+    SQLUINTEGER     nBindType;
+    SQLUINTEGER *   pnRowsProcessedPtr;
 
-    QList<MYODBCDesRec*>    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.          
              */
-
-    virtual void doInit();
+    virtual void doInit( SQLSMALLINT nAllocType );
+    virtual void doAppend( MYODBCDesRec *pdesrec );
 };
 
 #include "MYODBCDesAPD.h"

Modified: MYODBCDes/include/MYODBCDesAPD.h
===================================================================
--- MYODBCDes/include/MYODBCDesAPD.h	2006-01-27 05:46:29 UTC (rev 50)
+++ MYODBCDes/include/MYODBCDesAPD.h	2006-01-31 08:51:33 UTC (rev 51)
@@ -8,6 +8,7 @@
 #define MYODBC_DES_APD_H
 
 #include "MYODBCDes.h"
+#include "MYODBCDesRecAPD.h"
 
 /*!
     \brief  Application parameter descriptor (APD).

Modified: MYODBCDes/include/MYODBCDesARD.h
===================================================================
--- MYODBCDes/include/MYODBCDesARD.h	2006-01-27 05:46:29 UTC (rev 50)
+++ MYODBCDes/include/MYODBCDesARD.h	2006-01-31 08:51:33 UTC (rev 51)
@@ -8,6 +8,7 @@
 #define MYODBC_DES_ARD_H
 
 #include "MYODBCDes.h"
+#include "MYODBCDesRecARD.h"
 
 /*!
     \brief  

Modified: MYODBCDes/include/MYODBCDesIPD.h
===================================================================
--- MYODBCDes/include/MYODBCDesIPD.h	2006-01-27 05:46:29 UTC (rev 50)
+++ MYODBCDes/include/MYODBCDesIPD.h	2006-01-31 08:51:33 UTC (rev 51)
@@ -8,6 +8,7 @@
 #define MYODBC_DES_IPD_H
 
 #include "MYODBCDes.h"
+#include "MYODBCDesRecIPD.h"
 
 /*!
     \brief  

Modified: MYODBCDes/include/MYODBCDesIRD.h
===================================================================
--- MYODBCDes/include/MYODBCDesIRD.h	2006-01-27 05:46:29 UTC (rev 50)
+++ MYODBCDes/include/MYODBCDesIRD.h	2006-01-31 08:51:33 UTC (rev 51)
@@ -8,7 +8,9 @@
 #define MYODBC_DES_IRD_H
 
 #include "MYODBCDes.h"
+#include "MYODBCDesRecIRD.h"
 
+
 /*!
     \brief  
     \sa     
@@ -26,6 +28,8 @@
 
     /* getters */
 
+    /* doers */
+
 protected:
     void doInit();
 };

Added: MYODBCDes/include/MYODBCDesRec.h
===================================================================
--- MYODBCDes/include/MYODBCDesRec.h	2006-01-27 05:46:29 UTC (rev 50)
+++ MYODBCDes/include/MYODBCDesRec.h	2006-01-31 08:51:33 UTC (rev 51)
@@ -0,0 +1,178 @@
+#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 MYODBCDesRec
+{
+public:
+    MYODBCDesRec( MYODBCDes *pdes );
+    MYODBCDesRec( MYODBCDes *pdes, SQLSMALLINT nConciseType, const QString
&stringName, SQLSMALLINT nNullable, SQLSMALLINT nUnsigned );
+    virtual SQLRETURN doAppend( SQLSMALLINT nConciseType, const QString &stringName,
SQLSMALLINT nNullable );
+    ~MYODBCDesRec();
+
+    /* 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 ) = 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 ) = 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 );
+    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( SQLWCHAR *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 );
+
+    /* 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();
+
+    MYODBCDes *getDes();
+
+    /* do'rs */
+    virtual SQLRETURN doUnbind();
+
+    /* operators */
+    virtual MYODBCDesRec &operator=( const MYODBCDesRec &des );
+
+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 );
+    virtual SQLRETURN setTypeC( SQLSMALLINT nType );
+    virtual SQLRETURN setTypeSQL( SQLSMALLINT nType );
+    virtual SQLRETURN setConciseTypeC( SQLSMALLINT nConciseType );
+    virtual SQLRETURN setConciseTypeSQL( SQLSMALLINT nConciseType );
+
+    virtual SQLRETURN doConsistencyCheck();
+};
+
+#endif
+

Added: MYODBCDes/include/MYODBCDesRecAPD.h
===================================================================
--- MYODBCDes/include/MYODBCDesRecAPD.h	2006-01-27 05:46:29 UTC (rev 50)
+++ MYODBCDes/include/MYODBCDesRecAPD.h	2006-01-31 08:51:33 UTC (rev 51)
@@ -0,0 +1,19 @@
+#ifndef MYODBC_DES_REC_APD_H
+#define MYODBC_DES_REC_APD_H
+
+class MYODBCDesAPD;
+
+class MYODBCDesRecAPD : public MYODBCDesRec
+{
+public:
+    MYODBCDesRecAPD( MYODBCDesAPD *pdes );
+
+    /* setters */
+    SQLRETURN setDescField( SQLSMALLINT nFieldIdentifier, SQLPOINTER pValuePtr,
SQLINTEGER nBufferLength );
+    SQLRETURN setConciseType( SQLSMALLINT nConciseType );
+
+    /* getters */
+};
+
+#endif
+

Added: MYODBCDes/include/MYODBCDesRecARD.h
===================================================================
--- MYODBCDes/include/MYODBCDesRecARD.h	2006-01-27 05:46:29 UTC (rev 50)
+++ MYODBCDes/include/MYODBCDesRecARD.h	2006-01-31 08:51:33 UTC (rev 51)
@@ -0,0 +1,19 @@
+#ifndef MYODBC_DES_REC_ARD_H
+#define MYODBC_DES_REC_ARD_H
+
+class MYODBCDesARD;
+
+class MYODBCDesRecARD : public MYODBCDesRec
+{
+public:
+    MYODBCDesRecARD( MYODBCDesARD *pdes );
+
+    /* setters */
+    SQLRETURN setDescField( SQLSMALLINT nFieldIdentifier, SQLPOINTER pValuePtr,
SQLINTEGER nBufferLength );
+    SQLRETURN setConciseType( SQLSMALLINT nConciseType );
+
+    /* getters */
+};
+
+#endif
+

Added: MYODBCDes/include/MYODBCDesRecIPD.h
===================================================================
--- MYODBCDes/include/MYODBCDesRecIPD.h	2006-01-27 05:46:29 UTC (rev 50)
+++ MYODBCDes/include/MYODBCDesRecIPD.h	2006-01-31 08:51:33 UTC (rev 51)
@@ -0,0 +1,19 @@
+#ifndef MYODBC_DES_REC_IPD_H
+#define MYODBC_DES_REC_IPD_H
+
+class MYODBCDesIPD;
+
+class MYODBCDesRecIPD : public MYODBCDesRec
+{
+public:
+    MYODBCDesRecIPD( MYODBCDesIPD *pdes );
+
+    /* setters */
+    SQLRETURN setDescField( SQLSMALLINT nFieldIdentifier, SQLPOINTER pValuePtr,
SQLINTEGER nBufferLength );
+    SQLRETURN setConciseType( SQLSMALLINT nConciseType );
+
+    /* getters */
+};
+
+#endif
+

Added: MYODBCDes/include/MYODBCDesRecIRD.h
===================================================================
--- MYODBCDes/include/MYODBCDesRecIRD.h	2006-01-27 05:46:29 UTC (rev 50)
+++ MYODBCDes/include/MYODBCDesRecIRD.h	2006-01-31 08:51:33 UTC (rev 51)
@@ -0,0 +1,26 @@
+#ifndef MYODBC_DES_REC_IRD_H
+#define MYODBC_DES_REC_IRD_H
+
+class MYODBCDesIRD;
+
+class MYODBCDesRecIRD : public MYODBCDesRec
+{
+public:
+    MYODBCDesRecIRD( MYODBCDesIRD *pdes );
+
+    /* setters */
+    SQLRETURN setDescField( SQLSMALLINT nFieldIdentifier, SQLPOINTER pValuePtr,
SQLINTEGER nBufferLength );
+    SQLRETURN setConciseType( SQLSMALLINT nConciseType );
+
+    SQLRETURN setDefaultInteger();
+    SQLRETURN setDefaultSmallInt();
+    SQLRETURN setDefaultVarChar();
+
+    /* getters */
+
+
+};
+
+
+#endif
+

Modified: MYODBCRes/MYODBCResLib/MYODBCRes.cpp
===================================================================
--- MYODBCRes/MYODBCResLib/MYODBCRes.cpp	2006-01-27 05:46:29 UTC (rev 50)
+++ MYODBCRes/MYODBCResLib/MYODBCRes.cpp	2006-01-31 08:51:33 UTC (rev 51)
@@ -66,37 +66,44 @@
 {
     MYODBCDbgEnter();
 
-    MYODBCDbgReturn3( "%p", patt->getAppParamDesc() );
+    MYODBCDbgReturn3( "%p", getAtt()->getAppParamDesc() );
 }
 
 MYODBCDes * MYODBCRes::getAppRowDesc()
 {
     MYODBCDbgEnter();
 
-    MYODBCDbgReturn3( "%p", patt->getAppRowDesc() );
+    MYODBCDbgReturn3( "%p", getAtt()->getAppRowDesc() );
 }
 
 MYODBCDes * MYODBCRes::getImpParamDesc()
 {
     MYODBCDbgEnter();
 
-    MYODBCDbgReturn3( "%p", patt->getImpParamDesc() );
+    MYODBCDbgReturn3( "%p", getAtt()->getImpParamDesc() );
 }
 
 MYODBCDes * MYODBCRes::getImpRowDesc()
 {
     MYODBCDbgEnter();
 
-    MYODBCDbgReturn3( "%p", patt->getImpRowDesc() );
+    MYODBCDbgReturn3( "%p", getAtt()->getImpRowDesc() );
 }
 
 MYODBCDia * MYODBCRes::getDia()
 {
     MYODBCDbgEnter();
 
-    MYODBCDbgReturn3( "%p", patt->getDia() );
+    MYODBCDbgReturn3( "%p", getAtt()->getDia() );
 }
 
+MYODBCAttStatement *MYODBCRes::getAtt()
+{
+    MYODBCDbgEnter();
+
+    MYODBCDbgReturn3( "%p", patt );
+}
+
 bool MYODBCRes::isValidColumn( uint nColumn )
 {
     bool b;

Modified: MYODBCRes/MYODBCResLib/MYODBCResDriver.cpp
===================================================================
--- MYODBCRes/MYODBCResLib/MYODBCResDriver.cpp	2006-01-27 05:46:29 UTC (rev 50)
+++ MYODBCRes/MYODBCResLib/MYODBCResDriver.cpp	2006-01-31 08:51:33 UTC (rev 51)
@@ -106,6 +106,9 @@
     MYODBCDbgEnter();
 
     listResults.clear();
+    nRow = 0;
+    getAtt()->getImpParamDesc()->doClear();
+    getAtt()->getImpRowDesc()->doClear();
 
     MYODBCDbgReturn( SQL_SUCCESS );
 }
@@ -239,6 +242,16 @@
     MYODBCDbgReturn( SQL_SUCCESS );
 }
 
+SQLRETURN MYODBCResDriver::doGetTypeInfo( SQLSMALLINT nDataType )
+{
+    MYODBCDbgEnter();
+
+    doClear();
+    getAtt()->getImpRowDesc()->setCount( 19, true );
+
+    MYODBCDbgReturn( SQL_SUCCESS );
+}
+
 bool MYODBCResDriver::isValidRow()
 {
     bool b;

Modified: MYODBCRes/MYODBCResLib/MYODBCResLib.pro
===================================================================
--- MYODBCRes/MYODBCResLib/MYODBCResLib.pro	2006-01-27 05:46:29 UTC (rev 50)
+++ MYODBCRes/MYODBCResLib/MYODBCResLib.pro	2006-01-31 08:51:33 UTC (rev 51)
@@ -39,11 +39,11 @@
 HEADERS		= \
 		../include/MYODBCRes.h \
 		../include/MYODBCResDriver.h \
-		../include/MYODBCResServer.h \
+#		../include/MYODBCResServer.h \
 		MYODBCResInternal.h
 
 SOURCES		= \
 		MYODBCRes.cpp \
-		MYODBCResDriver.cpp \
-		MYODBCResServer.cpp
+		MYODBCResDriver.cpp
+#		MYODBCResServer.cpp
 

Modified: MYODBCRes/include/MYODBCRes.h
===================================================================
--- MYODBCRes/include/MYODBCRes.h	2006-01-27 05:46:29 UTC (rev 50)
+++ MYODBCRes/include/MYODBCRes.h	2006-01-31 08:51:33 UTC (rev 51)
@@ -39,10 +39,10 @@
     virtual SQLRETURN setData( uint nColumn, const QVariant &variantData ) = 0;
     virtual SQLRETURN setRow( qulonglong nRow ) = 0;
 
-    virtual SQLRETURN   getColumns( uint *pnColumns ) = 0;
-    virtual SQLRETURN   getData( uint nColumn, QVariant &variantData ) = 0;
-    virtual SQLRETURN   getRow( qulonglong *pnRow ) = 0;
-    virtual SQLRETURN   getRows( qulonglong *pnRows ) = 0;
+    virtual SQLRETURN getColumns( uint *pnColumns ) = 0;
+    virtual SQLRETURN getData( uint nColumn, QVariant &variantData ) = 0;
+    virtual SQLRETURN getRow( qulonglong *pnRow ) = 0;
+    virtual SQLRETURN getRows( qulonglong *pnRows ) = 0;
 
     virtual SQLRETURN doAppend() = 0;
     virtual SQLRETURN doClear() = 0;
@@ -70,6 +70,7 @@
     virtual MYODBCDes * getImpParamDesc();               /*!< SQL_ATTR_IMP_PARAM_DESC 
                                          */
     virtual MYODBCDes * getImpRowDesc();                 /*!< SQL_ATTR_IMP_ROW_DESC   
                                          */
     virtual MYODBCDia * getDia();
+    virtual MYODBCAttStatement *getAtt();
 };
 
 #endif

Modified: MYODBCRes/include/MYODBCResDriver.h
===================================================================
--- MYODBCRes/include/MYODBCResDriver.h	2006-01-27 05:46:29 UTC (rev 50)
+++ MYODBCRes/include/MYODBCResDriver.h	2006-01-31 08:51:33 UTC (rev 51)
@@ -30,13 +30,15 @@
     SQLRETURN doSeek( qlonglong nRow );
     SQLRETURN doSkip( qlonglong nRows );
 
+    SQLRETURN doGetTypeInfo( SQLSMALLINT nDataType );
+
     bool isValidRow();
     bool isValidRow( qulonglong nRow );
 
 protected:
     /* Our result set is a list of rows. Each row is a vector of column data. Column data
is a QVariant. */
-    QList<QVector<QVariant>> listResults;
-    qulonglong nRow; /* 1 -based (0 as BOS) */
+    QList<QVector<QVariant>>    listResults;
+    qulonglong                  nRow; /* 1 -based (0 as BOS) */
 };
 
 #endif

Thread
Connector/ODBC 5 commit: r51 - MYODBCDes/MYODBCDesLib MYODBCDes/include MYODBCRes/MYODBCResLib MYODBCRes/includepharvey31 Jan