1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
|
/**************************************************
*
*
**************************************************
* This code was created by Peter Harvey @ CodeByDesign.
* Released under GPL 18.FEB.99
*
* Contributions from...
* -----------------------------------------------
* Peter Harvey - pharvey@codebydesign.com
**************************************************/
#include "classTables.h"
#include "classODBC.h"
#include "tables.xpm"
classTables::classTables( QListViewItem *pParent, QListViewItem *pAfter, classCanvas *pCanvas, SQLHENV hDbc, const char *szLibrary )
: classNode( pParent, pAfter, pCanvas ) , hDbc( hDbc ) , qsLibrary( szLibrary )
{
setText( 0, qsLibrary.isEmpty() ? "Tables" : (const char*)qsLibrary );
setText( 1, "LIBRARY " );
setText( 2, "" );
listTables.setAutoDelete( TRUE );
setPixmap( 0, QPixmap( tables_xpm ) );
setExpandable( TRUE );
}
void classTables::setOpen( bool bOpen )
{
if ( bOpen )
LoadTables();
else
listTables.clear();
QListViewItem::setOpen( bOpen );
}
void classTables::LoadTables()
{
CursorScoper s(listView()) ;
SQLRETURN nReturn ;
SQLCHAR szTableName[MAX_COLUMN_WIDTH];
SQLCHAR szTableType[MAX_COLUMN_WIDTH];
SQLCHAR szTableRemarks[MAX_COLUMN_WIDTH];
SQLLEN nIndicatorName;
SQLLEN nIndicatorType;
SQLLEN nIndicatorRemarks;
classTable *pTable = NULL;
// CREATE A STATEMENT
StatementScoper stmt( hDbc ) ; if ( !stmt() ) return ;
// EXECUTE OUR SQL/CALL
if (!SQL_SUCCEEDED(nReturn=SQLTables( stmt(), 0, 0, (SQLCHAR*)qsLibrary.data(), SQL_NTS, 0, 0, 0, 0 ) ) )
return my_msgBox( "classTables", "SQLTables", nReturn, NULL, NULL, stmt() ) ;
SQLBindCol( stmt(), SQLTables_TABLE_NAME, SQL_C_CHAR, szTableName, sizeof(szTableName), &nIndicatorName );
SQLBindCol( stmt(), SQLTables_TABLE_TYPE, SQL_C_CHAR, szTableType, sizeof(szTableType), &nIndicatorType );
SQLBindCol( stmt(), SQLTables_REMARKS, SQL_C_CHAR, szTableRemarks, sizeof(szTableRemarks), &nIndicatorRemarks );
// GET RESULTS
while ( SQL_SUCCEEDED(SQLFetch( stmt() ) ) )
{
if ( nIndicatorName == SQL_NULL_DATA )
listTables.append( pTable = new classTable( this, pTable, pCanvas, hDbc, "Unknown" ) );
else
listTables.append( pTable = new classTable( this, pTable, pCanvas, hDbc, QString((char*)szTableName).stripWhiteSpace(), QString((char*)szTableType).stripWhiteSpace(), QString((char*)szTableRemarks).stripWhiteSpace(), qsLibrary ) );
}
}
void classTables::selectionChanged( QListViewItem *p )
{
for ( classTable *pTable = listTables.first(); pTable != 0; pTable = listTables.next() )
pTable->selectionChanged( p );
}
|