Problème avec QSqlTableModel
Bonjour.
J'étais en train de suivre le tutoriel "Accès aux données" présent dans la partie QT. La table contient uniquement 2 champs : id_rubrique,libelle_rubrique
L'environnement est une Debian ETCH, la base de données est une Sybase ASA 9. Connexion OBBC avec unixODBC + FreeTDS en driver. Qt 4.7.0 fraichement compilé.
Lorsque je souhaite utiliser un QSqlTableModel j'ai l'erreur suivante :
Code:
1 2
|
qGetStringData: Error while fetching data ( "[FreeTDS][SQL Server]Column out of range" |
Le code utilisé est le suivant :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
SqlDatabase db = QSqlDatabase::addDatabase("QODBC");
db.setDatabaseName(QString("XXXX"));
db.setUserName("XXX");
db.setPassword("XXX");
if (! db.open() ) {
qDebug() << db.lastError().text();
}
QSqlTableModel *model = new QSqlTableModel;
model->setTable("Rubrique");
model->select();
qDebug() << model->query().lastQuery(); |
Le lastQuery() ne m'affiche que "SELECT" dans la console.
Trace ODBC : (remarquez le <b>Column Number = 6</b>)
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
[ODBC][29691][SQLGetData.c][224]
Entry:
Statement = 0x809e2c8
Column Number = 6
Target Type = 1 SQL_CHAR
Buffer Length = 256
Target Value = 0xbfe9c2bc
StrLen Or Ind = 0xbfe9c3c8
[ODBC][29691][SQLGetData.c][470]
Exit:[SQL_ERROR]
Buffer = [id_rubrique]
Strlen Or Ind = 0xbfe9c3c8 -> 0
DIAG [S1002] [FreeTDS][SQL Server]Column out of range |
Cependant le code suivant est parfaitement fonctionnel :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
SqlDatabase db = QSqlDatabase::addDatabase("QODBC");
db.setDatabaseName(QString("XXXX"));
db.setUserName("XXX");
db.setPassword("XXX");
QSqlQuery requeteur;
if (! db.open() ) {
qDebug() << db.lastError().text();
}
requeteur.exec("SELECT * FROM Rubrique");
while ( requeteur.next() ) {
int id_rubrique = requeteur.value(0).toInt();
QString libelle_rubrique=requeteur.value(1).toString();
QMessageBox::information( 0, QObject::tr("Information récupérée"), "Id : " + QString::number(id_rubrique) + "\nLibellé : " + libelle_rubrique );
} |
Je sèche complètement :/
Merci d'avance pous vos pistes.