Bonjour à tous,

J'ai un gros soucis, je ne trouve pas comment faire pour réaliser une requête avec un nombres de paramètres variables.

Pour le moment j'arrive à faire une requête avec des variables :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
model -> setFilter(QString("Colonne1 LIKE '%1' AND Colonne2 LIKE '%2'").arg(Var1).arg(Var2));
Mais je ne sais pas comment faire lorsque mon nombre de variable est variable !!

Merci pour vos lumières

Dans d'autre termes, comment faire une sous requete avec qt ?

Je pense que ce n'est pas possible avec setfilter donc je m'oriente vers une requete SQL faite dans qt du genre :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 QSqlQuery query;
    query = "SELECT FROM Pieces WHERE id IN :List"
Reste à savoir comment lui passer la liste.

Bon j'arrive à executer ma requete mais pour afficher le résultat dans un Qtableview ça marche pas car le setQuery ne peut pas etre utilsé sur un Qtablemodel

J'y suis arrivé, voilà ma solution :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
    for (int i = 0; i < qli_Models.size(); i++)
    {
        modelPieces -> setFilter(QString("FKidDispositifs = '%1' AND FKidCatalogues LIKE '%2'").arg(qs_Device).arg(qli_Models.value(i)));
        modelPieces -> sort(i_IODatesPieces, Qt::DescendingOrder);
        if (i != qli_Models.size() - 1)
        {
            qs_Filter.append(QString("idPieces = " + QString::number(modelPieces -> record(0).value(i_IOidPieces).toInt()) + " OR "));
        }
        else
        {
            qs_Filter.append(QString("idPieces = " + QString::number(modelPieces -> record(0).value(i_IOidPieces).toInt())));
        }
    }
 
    // Filtre avec un nombre variable de variable
    modelPieces -> setFilter(QString(qs_Filter));