Important: Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

QSqlRelationalTablemodel - setFilter



  • Hallo,

    ich nutzte nutze für eine Datenbankanbindung ein QSqlRelationalTableModel mit mehreren Relationionen.
    Ich beschreibe mein Problem mit Hilfe des klassischen Bibliotheksbeispiels:

    Tabelle Ausleihe:
    Spalten Id, NutzerId, BuchId, Datum;

    Nun sollen in meiner Tabelle aber nicht die Ids auftauchen, sondern die Bezeichnungen.
    Bsp:

      m_Ausleihe->setRelation(2, QSqlRelation("NutzerId", "Id", "Name")); 
    

    (Die Tabelle NutzerID enthält (Id, Name);

    Soweit klar, funktioniert zufriedenstellend.

    Jetzt möchte ich aber z.B. die Ausleihe-Tabelle nach einem bestimmten Nutzernamen filtern, durch die Tabelle komme in der ersten Runde aber nicht an die ID heran, sondern nur an den Namen.
    Jetzt könnte man das durch eine zusätzliche SQL-Abfrage lösen. Gibt es dazu einen eleganteren Weg?

    Grüße

    Moppi



  • @moppi83
    Wenn ich es gut verstehen habe:

    https://doc.qt.io/qt-5/qsqlrelationaltablemodel.html#details

    The reference table name is aliased. The alias is the word "relTblAl" and the relationed column index joined by an underscore (e.g. relTblAl_2). The alias can be used to filter the table (For example, setFilter("relTblAl_2='Oslo' OR relTblAl_3='USA'")).


Log in to reply