]>
git.saurik.com Git - wxWidgets.git/blob - demos/dbbrowse/browsedb.cpp
11531afeb59bddc1eb8f32052cebe08381c0e0e1
1 //---------------------------------------------------------------------------
2 // Name: BrowserDB.h,cpp
4 // Author: Mark Johnson, mj10777@gmx.net
6 // Created: 19991127.mj10777
7 // Copyright: (c) Mark Johnson
8 // Licence: wxWindows license
10 //---------------------------------------------------------------------------
12 //---------------------------------------------------------------------------
13 //-- all #ifdefs that the whole Project needs. ------------------------------
14 //---------------------------------------------------------------------------
16 #pragma implementation
19 //---------------------------------------------------------------------------
20 // For compilers that support precompilation, includes "wx/wx.h".
21 #include "wx/wxprec.h"
22 //---------------------------------------------------------------------------
26 //---------------------------------------------------------------------------
30 //---------------------------------------------------------------------------
31 #include <wx/dbtable.h>
33 //---------------------------------------------------------------------------
34 // Global structure for holding ODBC connection information
35 // - darf nur einmal im Projekte definiert werden ?? Extra Databasse Klasse ?
36 struct DbStuff ConnectInf
; // Für DBase
37 //---------------------------------------------------------------------------
38 extern DbList
* WXDLLEXPORT PtrBegDbList
; /* from db.cpp, used in getting back error results from db connections */
39 //---------------------------------------------------------------------------
40 char * GetExtendedDBErrorMsg ( char * ErrFile
, int ErrLine
)
44 if ( ErrFile
|| ErrLine
)
49 tStr
. Printf ( " %d " , ErrLine
);
50 msg
+= tStr
. GetData ();
53 msg
. Append ( " \n ODBC errors: \n " );
55 /* Scan through each database connection displaying
56 * any ODBC errors that have occured. */
57 for ( DbList
* pDbList
= PtrBegDbList
; pDbList
; pDbList
= pDbList
-> PtrNext
)
59 // Skip over any free connections
62 // Display errors for this connection
63 for ( int i
= 0 ; i
< DB_MAX_ERROR_HISTORY
; i
++)
65 if ( pDbList
-> PtrDb
-> errorList
[ i
])
67 msg
. Append ( pDbList
-> PtrDb
-> errorList
[ i
]);
68 if ( strcmp ( pDbList
-> PtrDb
-> errorList
[ i
], "" ) != 0 )
74 return ( char *) ( const char *) msg
;
75 } // GetExtendedDBErrorMsg
76 //////////////////////////////////////////////////////////////////////////////////
77 // BJO 20000115 : New stuff : dialog to ask for username and password
78 //////////////////////////////////////////////////////////////////////////////////
79 class UserDialog
: public wxDialog
82 UserDialog ( wxWindow
* parent
);
83 virtual ~ UserDialog ();
84 void OnOK ( wxCommandEvent
& event
);
85 wxString s_UserName
, s_Password
;
89 wxStaticText
* m_Label1
, * m_Label2
;
90 wxTextCtrl
* m_UserName
, * m_Password
;
95 //---------------------------------------------------------------------------
96 BEGIN_EVENT_TABLE ( UserDialog
, wxDialog
)
97 EVT_BUTTON ( wxID_OK
, UserDialog :: OnOK
)
99 //---------------------------------------------------------------------------
100 UserDialog :: UserDialog ( wxWindow
* parent
):
101 wxDialog ( parent
, - 1 , _ ( "ODBC user" ), wxDefaultPosition
, wxSize ( 310 , 300 ), wxDIALOG_MODAL
| wxDEFAULT_DIALOG_STYLE
)
103 wxLayoutConstraints
* layout
;
105 //-----------------------------------------------
106 m_OK
= new wxButton ( this , wxID_OK
, _ ( "Ok" ));
107 layout
= new wxLayoutConstraints
;
108 layout
-> left
. SameAs ( this , wxLeft
, 10 );
109 layout
-> top
. SameAs ( this , wxTop
, 10 );
110 layout
-> height
. AsIs ();
111 layout
-> width
. Absolute ( 75 );
112 m_OK
-> SetConstraints ( layout
);
114 m_Label1
= new wxStaticText ( this , - 1 , _ ( "User ID:" ));
115 layout
= new wxLayoutConstraints
;
116 layout
-> left
. SameAs ( m_OK
, wxLeft
);
117 layout
-> top
. SameAs ( m_OK
, wxBottom
, 10 );
118 layout
-> height
. AsIs ();
119 layout
-> width
. AsIs ();
120 m_Label1
-> SetConstraints ( layout
);
122 m_UserName
= new wxTextCtrl ( this , - 1 , "" );
123 layout
= new wxLayoutConstraints
;
124 layout
-> left
. SameAs ( m_OK
, wxLeft
);
125 layout
-> top
. SameAs ( m_Label1
, wxBottom
, 3 );
126 layout
-> width
. AsIs ();
127 layout
-> height
. AsIs ();
128 m_UserName
-> SetConstraints ( layout
);
130 m_Label2
= new wxStaticText ( this , - 1 , _ ( "Password:" ));
131 layout
= new wxLayoutConstraints
;
132 layout
-> left
. SameAs ( m_OK
, wxLeft
);
133 layout
-> top
. SameAs ( m_UserName
, wxBottom
, 10 );
134 layout
-> height
. AsIs ();
135 layout
-> width
. AsIs ();
136 m_Label2
-> SetConstraints ( layout
);
138 m_Password
= new wxTextCtrl ( this , - 1 , "" , wxDefaultPosition
, wxDefaultSize
, wxTE_PASSWORD
);
139 layout
= new wxLayoutConstraints
;
140 layout
-> left
. SameAs ( m_OK
, wxLeft
);
141 layout
-> width
. AsIs ();
142 layout
-> top
. SameAs ( m_Label2
, wxBottom
, 3 );
143 layout
-> height
. AsIs ();
144 m_Password
-> SetConstraints ( layout
);
151 //---------------------------------------------------------------------------
152 UserDialog ::~ UserDialog ()
155 //---------------------------------------------------------------------------
156 void UserDialog :: OnOK ( wxCommandEvent
& WXUNUSED ( event
))
158 strcpy ( ConnectInf
. Uid
, m_UserName
-> GetValue ());
159 strcpy ( ConnectInf
. AuthStr
, m_Password
-> GetValue ());
162 //////////////////////////////////////////////////////////////////////////////////
163 // BJO 20000115 : end of new stuff
164 //////////////////////////////////////////////////////////////////////////////////
165 //---------------------------------------------------------------------------
166 BrowserDB :: BrowserDB ()
169 ODBCSource
= "" ; // ODBC data source name (created with ODBC Administrator under Win95/NT)
170 UserName
= "" ; // database username - must already exist in the data source
171 Password
= "" ; // password database username
174 } // BrowserDB Constructor
175 //---------------------------------------------------------------------------
176 BrowserDB ::~ BrowserDB ()
178 Zeiger_auf_NULL ( 1 ); // Clean up Tables and Databases (Commit, Close und delete)
179 } // BrowserDB destructor
180 //--------------------------------------------------------------------------------------------
181 bool BrowserDB :: Initialize ( int Quite
)
183 if (! OnStartDB ( Quite
))
185 wxLogMessage ( _ ( " \n\n -E-> BrowserDB::OnStartDB( %s ) : Failed ! " ), ODBCSource
. c_str ());
189 } // BrowserDB:Initialize
190 //--------------------------------------------------------------------------------------------
191 bool BrowserDB :: OnStartDB ( int Quite
)
194 wxLogMessage ( _ ( " \n -I-> BrowserDB::OnStartDB( %s ) : Begin " ), ODBCSource
. c_str ());
195 if ( db_BrowserDB
!= NULL
)
198 wxLogMessage ( _ ( " \n -I-> BrowserDB::OnStartDB() : DB is allready open." ));
201 // Initialize the ODBC Environment for Database Operations
202 if ( SQLAllocEnv (& ConnectInf
. Henv
) != SQL_SUCCESS
)
205 wxLogMessage ( _ ( " \n -E-> BrowserDB::OnStartDB() : DB CONNECTION ERROR : A problem occured while trying to get a connection to the data source" ));
208 //---------------------------------------------------------------------------
209 // Connect to datasource
210 //---------------------------
211 DlgUser
* p_Dlg
= new DlgUser ( pDoc
-> p_MainFrame
, "Username and Password" );
212 p_Dlg
-> s_DSN
= ODBCSource
;
213 p_Dlg
-> s_User
= UserName
;
214 p_Dlg
-> s_Password
= Password
;
219 if ( p_Dlg
-> ShowModal () == wxID_OK
)
221 ( pDoc
-> p_DSN
+ i_Which
)-> Usr
= p_Dlg
-> s_User
;
222 ( pDoc
-> p_DSN
+ i_Which
)-> Pas
= p_Dlg
-> s_Password
;
223 UserName
= p_Dlg
-> s_User
;
224 Password
= p_Dlg
-> s_Password
;
232 //---------------------------
233 strcpy ( ConnectInf
. Dsn
, ODBCSource
); // ODBC data source name (created with ODBC Administrator under Win95/NT)
234 strcpy ( ConnectInf
. Uid
, UserName
); // database username - must already exist in the data source
235 strcpy ( ConnectInf
. AuthStr
, Password
); // password database username
236 db_BrowserDB
= GetDbConnection (& ConnectInf
);
237 // wxLogMessage(">>>%s<<<>>>%s<<<",UserName.c_str(),Password.c_str());
238 if ( db_BrowserDB
== NULL
)
240 strcpy ( ConnectInf
. Dsn
, "" );
241 strcpy ( ConnectInf
. Uid
, "" );
242 strcpy ( ConnectInf
. AuthStr
, "" );
245 wxLogMessage ( _ ( " \n -E-> BrowserDB::OnConnectDataSource() DB CONNECTION ERROR : Unable to connect to the data source. \n\n Check the name of your data source to verify it has been correctly entered/spelled. \n\n With some databases, the user name and password must \n be created with full rights to the table prior to making a connection \n (using tools provided by the database manufacturer)" ));
246 wxLogMessage ( _ ( "-I-> BrowserDB::OnStartDB( %s ) : End " ), ODBCSource
. c_str ());
250 //--------------------------------------------------------------------------
253 Temp1
= db_BrowserDB
-> GetDatabaseName ();
254 Temp2
= db_BrowserDB
-> GetDataSource ();
255 wxLogMessage ( _ ( "-I-> BrowserDB::OnGetDataSourceODBC() - DatabaseName( %s ) ; DataSource( %s )" ), Temp1
. c_str (), Temp2
. c_str ());
256 wxLogMessage ( _ ( "-I-> BrowserDB::OnStartDB( %s ) : End " ), ODBCSource
. c_str ());
261 //--------------------------------------------------------------------------------------------
262 bool BrowserDB :: OnCloseDB ( int Quite
)
265 wxLogMessage ( _ ( "-I-> BrowserDB::OnCloseDB() : Begin " ));
268 db_BrowserDB
-> Close ();
269 FreeDbConnection ( db_BrowserDB
);
271 // Free Environment Handle that ODBC uses
272 if ( SQLFreeEnv (& ConnectInf
. Henv
) != SQL_SUCCESS
)
274 // Error freeing environment handle
279 wxLogMessage ( _ ( " \n -I-> BrowserDB::OnCloseDB() : End " ));
282 //----------------------------------------------------------------------------------------
283 bool BrowserDB :: OnGetNext ( int Cols
, int Quite
)
292 TIMESTAMP_STRUCT t_temp
;
294 //-----------------------------
295 if (! db_BrowserDB
-> GetNext ())
298 Temp0
. Printf ( _ ( " \n -E-> BrowserDB::OnGetNext - ODBC-Error with GetNext \n -E-> " ));
299 Temp0
+= GetExtendedDBErrorMsg ( __FILE__
, __LINE__
);
307 strcpy (( cl_BrowserDB
+ i
)-> tableName
, "-E->" );
308 i_dbDataType
= ( cl_BrowserDB
-> pColFor
+ i
)-> i_dbDataType
;
309 if ( i_dbDataType
== 0 ) // Filter unsupported dbDataTypes
311 if ((( cl_BrowserDB
-> pColFor
+ i
)-> i_sqlDataType
== SQL_VARCHAR
) || (( cl_BrowserDB
-> pColFor
+ i
)-> i_sqlDataType
== SQL_LONGVARCHAR
))
312 i_dbDataType
= DB_DATA_TYPE_VARCHAR
;
313 if (( cl_BrowserDB
-> pColFor
+ i
)-> i_sqlDataType
== SQL_C_DATE
)
314 i_dbDataType
= DB_DATA_TYPE_DATE
;
315 if (( cl_BrowserDB
-> pColFor
+ i
)-> i_sqlDataType
== SQL_C_BIT
)
316 i_dbDataType
= DB_DATA_TYPE_INTEGER
;
317 if (( cl_BrowserDB
-> pColFor
+ i
)-> i_sqlDataType
== SQL_NUMERIC
)
318 i_dbDataType
= DB_DATA_TYPE_VARCHAR
;
319 if (( cl_BrowserDB
-> pColFor
+ i
)-> i_sqlDataType
== SQL_REAL
)
320 i_dbDataType
= DB_DATA_TYPE_FLOAT
;
322 if (( i_dbDataType
== DB_DATA_TYPE_INTEGER
) && (( cl_BrowserDB
-> pColFor
+ i
)-> i_sqlDataType
== SQL_C_DOUBLE
))
324 i_dbDataType
= DB_DATA_TYPE_FLOAT
;
328 case DB_DATA_TYPE_VARCHAR
:
330 if (! db_BrowserDB
-> GetData ( i
+ 1 ,( cl_BrowserDB
-> pColFor
+ i
)-> i_dbDataType
,& s_temp
, sizeof ( s_temp
), & cb
))
332 Temp0
. Printf ( _ ( " \n -E-> BrowserDB::OnGetNext - ODBC-Error with GetNext of > %s <. \n -E-> " ),( cl_BrowserDB
+ i
)-> tableName
);
333 Temp0
+= GetExtendedDBErrorMsg ( __FILE__
, __LINE__
);
336 Temp0
. Printf (( cl_BrowserDB
-> pColFor
+ i
)-> s_Field
, s_temp
);
337 strcpy (( cl_BrowserDB
+ i
)-> tableName
, Temp0
. c_str ());
339 case DB_DATA_TYPE_INTEGER
:
341 if (! db_BrowserDB
-> GetData ( i
+ 1 ,( cl_BrowserDB
-> pColFor
+ i
)-> i_sqlDataType
,& l_temp
, sizeof ( l_temp
), & cb
))
343 Temp0
. Printf ( _ ( " \n -E-> BrowserDB::OnGetData - ODBC-Error with GetNext \n -E-> " ));
344 Temp0
+= GetExtendedDBErrorMsg ( __FILE__
, __LINE__
);
348 Temp0
. Printf (( cl_BrowserDB
-> pColFor
+ i
)-> s_Field
, l_temp
);
349 strcpy (( cl_BrowserDB
+ i
)-> tableName
, Temp0
. c_str ());
352 case DB_DATA_TYPE_FLOAT
:
354 if (! db_BrowserDB
-> GetData ( i
+ 1 ,( cl_BrowserDB
-> pColFor
+ i
)-> i_sqlDataType
,& f_temp
, sizeof ( f_temp
), & cb
))
356 Temp0
. Printf ( _ ( " \n -E-> BrowserDB::OnGetData - ODBC-Error with GetNext \n -E-> " ));
357 Temp0
+= GetExtendedDBErrorMsg ( __FILE__
, __LINE__
);
362 Temp0
. Printf (( cl_BrowserDB
-> pColFor
+ i
)-> s_Field
, f_temp
);
363 strcpy (( cl_BrowserDB
+ i
)-> tableName
, Temp0
. c_str ());
366 case DB_DATA_TYPE_DATE
:
367 t_temp
. day
= t_temp
. month
= t_temp
. year
= t_temp
. hour
= t_temp
. minute
= t_temp
. second
= t_temp
. fraction
= 0 ;
368 if (! db_BrowserDB
-> GetData ( i
+ 1 ,( cl_BrowserDB
-> pColFor
+ i
)-> i_sqlDataType
,& t_temp
, sizeof ( t_temp
), & cb
))
370 Temp0
. Printf ( _ ( " \n -E-> BrowserDB::OnGetData - ODBC-Error with GetNext \n -E-> " ));
371 Temp0
+= GetExtendedDBErrorMsg ( __FILE__
, __LINE__
);
375 // i_Nation = 0 = timestamp , 1=EU, 2=UK, 3=International, 4=US
376 if ((( cl_BrowserDB
-> pColFor
+ i
)-> i_Nation
== 0 ) || // TS YYYY-MM-DD
377 (( cl_BrowserDB
-> pColFor
+ i
)-> i_Nation
== 3 )) // IT YYYY-MM-DD
379 Temp0
. Printf (( cl_BrowserDB
-> pColFor
+ i
)-> s_Field
, t_temp
. year
, t_temp
. month
, t_temp
. day
,
380 t_temp
. hour
, t_temp
. minute
, t_temp
. second
, t_temp
. fraction
);
381 strcpy (( cl_BrowserDB
+ i
)-> tableName
, Temp0
. c_str ());
383 if ( (( cl_BrowserDB
-> pColFor
+ i
)-> i_Nation
== 1 ) || // EU DD.MM.YYYY
384 (( cl_BrowserDB
-> pColFor
+ i
)-> i_Nation
== 2 )) // UK DD/MM/YYYY
386 Temp0
. Printf (( cl_BrowserDB
-> pColFor
+ i
)-> s_Field
, t_temp
. day
, t_temp
. month
, t_temp
. year
,
387 t_temp
. hour
, t_temp
. minute
, t_temp
. second
, t_temp
. fraction
);
388 strcpy (( cl_BrowserDB
+ i
)-> tableName
, Temp0
. c_str ());
390 if (( cl_BrowserDB
-> pColFor
+ i
)-> i_Nation
== 3 ) // US MM/DD/YYYY
392 Temp0
. Printf (( cl_BrowserDB
-> pColFor
+ i
)-> s_Field
, t_temp
. month
, t_temp
. day
, t_temp
. year
,
393 t_temp
. hour
, t_temp
. minute
, t_temp
. second
, t_temp
. fraction
);
394 strcpy (( cl_BrowserDB
+ i
)-> tableName
, Temp0
. c_str ());
402 Temp0
= ( cl_BrowserDB
+ i
)-> colName
;
403 wxLogMessage ( _ ( "-E-> BrowserDB::OnGetNext - DB_DATA_TYPE_?? ( %d ) in Col( %s )" ),( cl_BrowserDB
-> pColFor
+ i
)-> i_dbDataType
, Temp0
. c_str ());
407 Temp0
. Printf ( _ ( "-E-> unknown Format( %d ) - sql( %d )" ),( cl_BrowserDB
-> pColFor
+ i
)-> i_dbDataType
,( cl_BrowserDB
-> pColFor
+ i
)-> i_sqlDataType
);
408 strcpy (( cl_BrowserDB
+ i
)-> tableName
, Temp0
. c_str ());
413 // wxLogMessage("-E-> BrowserDB::OnGetNext - End");
416 //----------------------------------------------------------------------------------------
417 bool BrowserDB :: OnSelect ( wxString tb_Name
, int Quite
)
421 //--------------------------------------------------------------------------
422 SQLStmt
. sprintf ( "SELECT * FROM %s " , tb_Name
. c_str ());
423 if (! db_BrowserDB
-> ExecSql (( char *)( SQLStmt
. GetData ())))
425 Temp0
. Printf ( _ ( " \n -E-> BrowserDB::OnSelect - ODBC-Error with ExecSql of > %s <. \n -E-> " ), tb_Name
. c_str ());
426 Temp0
+= GetExtendedDBErrorMsg ( __FILE__
, __LINE__
);
428 wxMessageBox ( "-E-> BrowserDB::OnSelect - GetData()" );
431 //--------------------------------------------------------------------------
432 while ( db_BrowserDB
-> GetNext ())
436 //--------------------------------------------------------------------------
437 if (! db_BrowserDB
-> ExecSql (( char *)( SQLStmt
. GetData ())))
439 Temp0
. Printf ( _ ( " \n -E-> BrowserDB::OnSelect - ODBC-Error with ExecSql of > %s <. \n -E-> " ), tb_Name
. c_str ());
440 Temp0
+= GetExtendedDBErrorMsg ( __FILE__
, __LINE__
);
444 //--------------------------------------------------------------------------
445 // SetColDefs ( 0,"NAME", DB_DATA_TYPE_VARCHAR, Name, SQL_C_CHAR, sizeof(Name), TRUE, TRUE); // Primary index
446 //--------------------------------------------------------------------------
449 wxLogMessage ( _ ( " \n -I-> BrowserDB::OnSelect( %s ) Records( %d ): End " ), tb_Name
. c_str (), i_Records
);
453 //----------------------------------------------------------------------------------------
454 bool BrowserDB :: OnExecSql ( wxString SQLStmt
, int Quite
)
456 //--------------------------------------------------------------------------
457 if (! db_BrowserDB
-> ExecSql (( char *)( SQLStmt
. GetData ())))
459 Temp0
. Printf ( _ ( " \n -E-> BrowserDB::OnExecSQL - ODBC-Error with ExecSql of > %s <. \n -E-> " ), SQLStmt
. c_str ());
460 Temp0
+= GetExtendedDBErrorMsg ( __FILE__
, __LINE__
);
464 wxMessageBox ( "-E-> BrowserDB::OnExecSql - ExecSql()" );
469 // wxLogMessage(_("\n-I-> BrowserDB::OnExecSql(%s) - End "),SQLStmt.c_str());
473 //----------------------------------------------------------------------------------------
474 wxDbInf
* BrowserDB :: OnGetCatalog ( int Quite
)
477 strcpy ( UName
, UserName
);
478 ct_BrowserDB
= db_BrowserDB
-> GetCatalog ( UName
);
481 //----------------------------------------------------------------------------------------
482 wxColInf
* BrowserDB :: OnGetColumns ( char * tableName
, int numCols
, int Quite
)
486 strcpy ( UName
, UserName
);
487 cl_BrowserDB
= db_BrowserDB
-> GetColumns ( tableName
,& numCols
, UName
);
488 cl_BrowserDB
-> pColFor
= new wxColFor
[ numCols
];
489 for ( i
= 0 ; i
< numCols
; i
++)
491 ( cl_BrowserDB
-> pColFor
+ i
)-> Format ( 1 ,( cl_BrowserDB
+ i
)-> dbDataType
,( cl_BrowserDB
+ i
)-> sqlDataType
,
492 ( cl_BrowserDB
+ i
)-> columnSize
, ( cl_BrowserDB
+ i
)-> decimalDigits
);
496 //----------------------------------------------------------------------------------------
497 void BrowserDB :: Zeiger_auf_NULL ( int Art
)
499 if ( Art
== 1 ) // Löschen
501 if ( cl_BrowserDB
!= NULL
)
502 { // Destroy the memory
503 delete [] cl_BrowserDB
;
505 if ( ct_BrowserDB
!= NULL
)
506 { // Destroy the memory
507 delete [] ct_BrowserDB
;
509 if ( db_BrowserDB
!= NULL
)
511 db_BrowserDB
-> CommitTrans ();
512 db_BrowserDB
-> Close ();
513 CloseDbConnections ();
522 //----------------------------------------------------------------------------------------
523 void BrowserDB :: OnFillSqlTyp ()
525 i_SqlTyp
[ 1 ] = SQL_C_BINARY
; s_SqlTyp
[ 1 ] = "SQL_C_BINARY" ;
526 i_SqlTyp
[ 2 ] = SQL_C_BIT
; s_SqlTyp
[ 2 ] = "SQL_C_BIT" ;
527 i_SqlTyp
[ 3 ] = SQL_C_BOOKMARK
; s_SqlTyp
[ 3 ] = "SQL_C_BOOKMARK" ;
528 i_SqlTyp
[ 4 ] = SQL_C_CHAR
; s_SqlTyp
[ 4 ] = "SQL_C_CHAR" ;
529 i_SqlTyp
[ 5 ] = SQL_C_DATE
; s_SqlTyp
[ 5 ] = "SQL_C_DATE" ;
530 i_SqlTyp
[ 6 ] = SQL_C_DEFAULT
; s_SqlTyp
[ 6 ] = "SQL_C_DEFAULT" ;
531 i_SqlTyp
[ 7 ] = SQL_C_DOUBLE
; s_SqlTyp
[ 7 ] = "SQL_C_DOUBLE" ;
532 i_SqlTyp
[ 8 ] = SQL_C_FLOAT
; s_SqlTyp
[ 8 ] = "SQL_C_FLOAT" ;
533 i_SqlTyp
[ 9 ] = SQL_C_LONG
; s_SqlTyp
[ 9 ] = "SQL_C_LONG" ;
534 i_SqlTyp
[ 10 ] = SQL_C_SHORT
; s_SqlTyp
[ 10 ] = "SQL_C_SHORT" ;
535 i_SqlTyp
[ 11 ] = SQL_C_SLONG
; s_SqlTyp
[ 11 ] = "SQL_C_SLONG" ;
536 i_SqlTyp
[ 12 ] = SQL_C_SSHORT
; s_SqlTyp
[ 12 ] = "SQL_C_SSHORT" ;
537 i_SqlTyp
[ 13 ] = SQL_C_STINYINT
; s_SqlTyp
[ 13 ] = "SQL_C_STINYINT" ;
538 i_SqlTyp
[ 14 ] = SQL_C_TIME
; s_SqlTyp
[ 14 ] = "SQL_C_TIME" ;
539 i_SqlTyp
[ 15 ] = SQL_C_TIMESTAMP
; s_SqlTyp
[ 15 ] = "SQL_C_TIMESTAMP" ;
540 i_SqlTyp
[ 16 ] = SQL_C_TINYINT
; s_SqlTyp
[ 16 ] = "SQL_C_TINYINT" ;
541 i_SqlTyp
[ 17 ] = SQL_C_ULONG
; s_SqlTyp
[ 17 ] = "SQL_C_ULONG" ;
542 i_SqlTyp
[ 18 ] = SQL_C_USHORT
; s_SqlTyp
[ 18 ] = "SQL_C_USHORT" ;
543 i_SqlTyp
[ 19 ] = SQL_C_UTINYINT
; s_SqlTyp
[ 19 ] = "SQL_C_UTINYINT" ;
544 i_SqlTyp
[ 20 ] = SQL_VARCHAR
; s_SqlTyp
[ 20 ] = "SQL_VARCHAR" ;
545 i_SqlTyp
[ 21 ] = SQL_NUMERIC
; s_SqlTyp
[ 21 ] = "SQL_NUMERIC" ;
546 i_SqlTyp
[ 22 ] = SQL_LONGVARCHAR
; s_SqlTyp
[ 22 ] = "SQL_LONGVARCHAR" ;
547 i_SqlTyp
[ 23 ] = SQL_REAL
; s_SqlTyp
[ 23 ] = "SQL_REAL" ;
548 i_SqlTyp
[ 0 ] = 23 ; s_SqlTyp
[ 0 ] = "" ;
550 //----------------------------------------------------------------------------------------
551 void BrowserDB :: OnFilldbTyp ()
553 i_dbTyp
[ 1 ] = DB_DATA_TYPE_VARCHAR
; s_dbTyp
[ 1 ] = "DB_DATA_TYPE_VARCHAR" ;
554 i_dbTyp
[ 2 ] = DB_DATA_TYPE_INTEGER
; s_dbTyp
[ 2 ] = "DB_DATA_TYPE_INTEGER" ;
555 i_dbTyp
[ 3 ] = DB_DATA_TYPE_FLOAT
; s_dbTyp
[ 3 ] = "DB_DATA_TYPE_FLOAT" ;
556 i_dbTyp
[ 4 ] = DB_DATA_TYPE_DATE
; s_dbTyp
[ 4 ] = "DB_DATA_TYPE_DATE" ;
557 i_dbTyp
[ 0 ] = 4 ; s_dbTyp
[ 0 ] = "" ;
559 //----------------------------------------------------------------------------------------