Länge eines Feldes in einer SQL-Tabelle nicht richtig
Verfasst: 4. Mai 2008 15:34
Hallo,
Bei folgendem Programmteil wird aller richtig bis auf die Feldlänge
angezeigt. Für Tips oder Antworten bedanke ich mich schon mal im voraus.
Andy
------------------------------------------------------------------
void frmDatenbankinfo::datenSlot( const QString &tabelle )
{
QSqlCursor cur( tabelle );
cur.select();
QSqlRecord *wRecord = cur.editBuffer( TRUE );
int wAnzahlFelder = wRecord->count();
txtFelder->setText( QString( "%1" ).arg( wAnzahlFelder ) );
// Anzahl Dateifelder
int wSpalten = cur.count();
// Reihen löschen
tableDatenfelder->setNumRows( 0 );
// Zuerst Header schreiben
for ( int i=0; i<wSpalten; i++) {
QSqlField *wField = wRecord->field( i );
QString wFieldname = wField->name();
// Tabelle um eine Reihe erhoehen
tableDatenfelder->setNumRows( tableDatenfelder->numRows() + 1 );
int wType = wField->type();
QString wTypename = "undefined";
switch ( wType ) {
case ( QVariant::Bool ): wTypename = "Bool" ; break;
case ( QVariant::Date ): wTypename = "Date"; break;
case ( QVariant::DateTime ): wTypename = "DateTime"; break;
case ( QVariant::Double ): wTypename = "Double"; break;
case ( QVariant::Int ): wTypename = "Int"; break;
case ( QVariant::LongLong ): wTypename = "LongLong"; break;
case ( QVariant::ULongLong ): wTypename = "ULongLong"; break;
case ( QVariant::String ): wTypename = "String"; break;
case ( QVariant::CString ): wTypename = "CString"; break;
case ( QVariant::Time ): wTypename = "Time"; break;
case ( QVariant::UInt ): wTypename = "UInt"; break;
}
QSqlFieldInfo wFieldinfo = QSqlFieldInfo( wFieldname, wType );
int wLaenge = wFieldinfo.length();
tableDatenfelder->setText ( i, 0, wFieldname );
tableDatenfelder->setText ( i, 1, wTypename );
tableDatenfelder->setText ( i, 2, QString( "%1" ).arg( wLaenge ) );
}
}
Bei folgendem Programmteil wird aller richtig bis auf die Feldlänge
angezeigt. Für Tips oder Antworten bedanke ich mich schon mal im voraus.
Andy
------------------------------------------------------------------
void frmDatenbankinfo::datenSlot( const QString &tabelle )
{
QSqlCursor cur( tabelle );
cur.select();
QSqlRecord *wRecord = cur.editBuffer( TRUE );
int wAnzahlFelder = wRecord->count();
txtFelder->setText( QString( "%1" ).arg( wAnzahlFelder ) );
// Anzahl Dateifelder
int wSpalten = cur.count();
// Reihen löschen
tableDatenfelder->setNumRows( 0 );
// Zuerst Header schreiben
for ( int i=0; i<wSpalten; i++) {
QSqlField *wField = wRecord->field( i );
QString wFieldname = wField->name();
// Tabelle um eine Reihe erhoehen
tableDatenfelder->setNumRows( tableDatenfelder->numRows() + 1 );
int wType = wField->type();
QString wTypename = "undefined";
switch ( wType ) {
case ( QVariant::Bool ): wTypename = "Bool" ; break;
case ( QVariant::Date ): wTypename = "Date"; break;
case ( QVariant::DateTime ): wTypename = "DateTime"; break;
case ( QVariant::Double ): wTypename = "Double"; break;
case ( QVariant::Int ): wTypename = "Int"; break;
case ( QVariant::LongLong ): wTypename = "LongLong"; break;
case ( QVariant::ULongLong ): wTypename = "ULongLong"; break;
case ( QVariant::String ): wTypename = "String"; break;
case ( QVariant::CString ): wTypename = "CString"; break;
case ( QVariant::Time ): wTypename = "Time"; break;
case ( QVariant::UInt ): wTypename = "UInt"; break;
}
QSqlFieldInfo wFieldinfo = QSqlFieldInfo( wFieldname, wType );
int wLaenge = wFieldinfo.length();
tableDatenfelder->setText ( i, 0, wFieldname );
tableDatenfelder->setText ( i, 1, wTypename );
tableDatenfelder->setText ( i, 2, QString( "%1" ).arg( wLaenge ) );
}
}