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 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122
|
/**************************************************
*
*
**************************************************
* This code was created by Peter Harvey @ CodeByDesign.
* Released under GPL 18.FEB.99
*
* Contributions from...
* -----------------------------------------------
* Peter Harvey - pharvey@codebydesign.com
**************************************************/
#include "classSpecialColumns.h"
#include "id.xpm"
classSpecialColumns::classSpecialColumns( QListView *pParent, classCanvas *pCanvas, SQLHDBC hDbc, char *pszTable )
: classNode( pParent, pCanvas )
{
Init( hDbc, pszTable );
}
classSpecialColumns::classSpecialColumns( QListViewItem *pParent, classCanvas *pCanvas, SQLHENV hDbc, char *pszTable )
: classNode( pParent, pCanvas )
{
Init( hDbc, pszTable );
}
classSpecialColumns::classSpecialColumns( QListViewItem *pParent, QListViewItem *pAfter, classCanvas *pCanvas, SQLHENV hDbc, char *pszTable )
: classNode( pParent, pAfter, pCanvas )
{
Init( hDbc, pszTable );
}
classSpecialColumns::~classSpecialColumns()
{
listColumns.clear();
}
void classSpecialColumns::Init( SQLHDBC hDbc, char *pszTable )
{
this->hDbc = hDbc;
this->qsTable = pszTable;
setText( 0, "SpecialColumns" );
setText( 1, "" );
setText( 2, "" );
sortChildItems( 1, FALSE );
listColumns.setAutoDelete( TRUE );
this->setPixmap( 0, QPixmap( id_xpm ) );
}
void classSpecialColumns::setOpen( bool o )
{
if ( o && !childCount() )
{
LoadColumns();
}
QListViewItem::setOpen( o );
}
void classSpecialColumns::setup()
{
setExpandable( TRUE );
QListViewItem::setup();
}
void classSpecialColumns::LoadColumns()
{
SQLHSTMT hstmt;
SQLRETURN nReturn = -1;
SQLCHAR szTableName[101] = "";
SQLCHAR szColumnName[101] = "";
QString qsError;
// CREATE A STATEMENT
nReturn = SQLAllocStmt( hDbc, &hstmt );
if ( nReturn != SQL_SUCCESS )
{
QMessageBox::warning( pCanvas, "Data Manager", "Failed to SQLAllocStmt" );
return;
}
// EXECUTE OUR SQL/CALL
strcpy( (char *)szTableName, qsTable.data() );
if ( SQL_SUCCESS != (nReturn=SQLSpecialColumns( hstmt, SQL_BEST_ROWID, 0, 0, 0, 0, szTableName, SQL_NTS, SQL_SCOPE_SESSION, SQL_NULLABLE )) )
{
QMessageBox::warning( pCanvas, "Data Manager", "Failed to SQLSpecialColumns" );
return;
}
// GET RESULTS
nReturn = SQLFetch( hstmt );
while ( nReturn == SQL_SUCCESS || nReturn == SQL_SUCCESS_WITH_INFO )
{
nReturn = SQLGetData( hstmt, 2, SQL_C_CHAR, &szColumnName[0], sizeof(szColumnName), 0 );
if ( nReturn != SQL_SUCCESS )
strcpy( (char *)szColumnName, "Unknown" );
listColumns.append( new classColumn( this, pCanvas, hDbc, (char *)szColumnName ) );
nReturn = SQLFetch( hstmt );
}
// FREE STATEMENT
nReturn = SQLFreeStmt( hstmt, SQL_DROP );
if ( nReturn != SQL_SUCCESS )
QMessageBox::warning( pCanvas, "Data Manager", "Failed to SQLFreeStmt" );
}
void classSpecialColumns::selectionChanged( QListViewItem *p )
{
classColumn *pColumn;
for ( pColumn = listColumns.first(); pColumn != 0; pColumn = listColumns.next() )
pColumn->selectionChanged( p );
if ( p == this )
{
}
}
|