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
|
/**************************************************
*
*
**************************************************
* This code was created by Peter Harvey @ CodeByDesign.
* Released under GPL 30.NOV.00
*
* Contributions from...
* -----------------------------------------------
* Peter Harvey - pharvey@codebydesign.com
**************************************************/
#ifndef classBrowse_included
#define classBrowse_included
#include <qwidget.h>
#include <qtable.h>
#include <qlabel.h>
#include <qlistbox.h>
#include <qvaluelist.h>
#include <qfile.h>
#if (QT_VERSION>=300)
#include <qmemarray.h>
#else
#include <qarray.h>
#endif
#include <sqlext.h>
// Typesdefs
typedef QValueList<int> ListRows ;
// QTable subclass that will sort columns with whole row support
class myQTable : public QTable
{
public:
myQTable( int r, int c, QWidget * w = 0, const char * n = 0 ) : QTable( r, c, w, n ) {} ;
void sortColumn( int c, bool s, bool w) { QTable::sortColumn( c, s, TRUE ) ; }
};
#define QUERY_ROW_EXPRESSION 0
#define QUERY_ROW_SHOW 1
#define QUERY_ROW_SORT 2
class classBrowse : public QWidget
{
Q_OBJECT
public:
classBrowse( SQLHDBC hDbc, const QString &qsTable, const QString &qsLibrary, QWidget* parent = 0, const char* name = 0 );
~classBrowse() {};
QString qsDataFileName;
QString qsSQLFileName;
void resizeEvent( QResizeEvent * );
public slots:
void Clear(); // CLEAR QUERY AND DATA
bool Save(); // SAVE DATA
bool SaveAs(); // SAVE DATA AS
bool SaveSQL(); // SAVE QUERY
void Exec(); // RUN QUERY
void SelectAllColumns();
void UnSelectAllColumns();
void UnSortAllColumns();
void UnExprAllColumns();
void DeleteRows();
void InsertRows();
int AddRow();
int CopyRow();
void AutoRefresh( bool );
void WriteHTML( QFile *hFile, bool bPage );
protected:
QTable *tableQuery;
QTable *tableData;
QLabel *labelFilter;
QLabel *labelResults;
QListBox *listStatus;
SQLHDBC hDbc;
QString qsLibrary;
QString qsTable;
bool bAutoRefresh;
void InitQuery();
void ExecHeader( SQLHSTMT hStmt, SWORD nColumns );
int ExecBody( SQLHSTMT hStmt, SWORD nColumns );
bool CreateSQL(QString & qsSQL);
void ClearCells( QTable *table );
void ChangeAllColumns( int row, const char * text );
int GetSelectedRows( QString &qsRowsSelected, ListRows &listRows ) ;
bool OkWithUser( const QString &shortDesc, const QString &qsQuestion ) ;
int RowAction( const QString &shortDesc, const QString &sql, const ListRows &listRows, SQLRETURN &nReturn ) ;
bool CheckRowsAffected(const QString &shortDesc, const ListRows &listRows ) ;
void addStatus( const QString &statusMsg ) ;
};
#endif
|