TbTypen (ID:INTEGER, Bezeichnung:Text)
TbKompressoren(ID:INTEGER>, Typ:INTEGER FOREIGN KEY TbTypen:ID, Serial:INTEGER)
TbAdsorbertausch (ID:INTEGER, DATUM:TEXT, Kompressor:INTEGER FOREIGN KEY tbKompressoren:ID);
Ich hoffe ich habe den Aufbau verständlich dargestellt.
Nun möchte ich in einem TableView im MainWindow die Daten der Tabelle TbAdsorbertausch darstellen.
Grundsätzlich funktioniert das auch erstmal.
Allerdings möchte ich über das Feld Kompressor:ID auf die Daten der Tabelle TbKompressor zugreifen. Und zwar einmal auf
die Seriennummer (was auch funktioniert) und zum anderen über das Feld TbKompressor.Id auf den Wert
TbTypen.Bezeichnung.
Wie mache ich das ?
Ich habe dazu in MainWindow folgende Variablen:
QSqlTableModel *m_tbTypen;
QSqlRelationalTableModel *m_tbKompressoren, *m_tbAdsorbertausch;
Beim Start führe ich folgenden Code aus:
Code: Alles auswählen
// Kompressortypen
m_tbTypen = new QSqlTableModel (this, m_dbm->GetDb());
m_tbTypen->setTable("TbTypen");
m_tbTypen->select();
ui->tvKompressortypen->setModel((m_tbTypen));
ui->tvKompressortypen->resizeColumnsToContents();
// Kompressoren
m_tbKompressoren = new QSqlRelationalTableModel(this, m_dbm->GetDb());
m_tbKompressoren->setTable ("TbKompressoren");
// Relation auf System setzen
m_tbKompressoren->setRelation(1, QSqlRelation("TbTypen","ID","Bezeichnung"));
m_tbKompressoren->select();
ui->tvKompressoren->setModel(m_tbKompressoren);
ui->tvKompressoren->resizeColumnsToContents();
// Adsorbertausch
m_tbAdsorbertausch = new QSqlRelationalTableModel(this, m_dbm->GetDb());
m_tbAdsorbertausch->setTable ("TbAdsorbertausch");
m_tbAdsorbertausch->setRelation(2,QSqlRelation("TbKompressoren","ID","Typ"));
// m_tbAdsorbertausch->setRelation(2,QSqlRelation("TbKompressoren","ID","Serial"));
m_tbAdsorbertausch->setRelation(3,QSqlRelation("TbTechniker","ID","Name"));
m_tbAdsorbertausch->setRelation(4,QSqlRelation("TbStandorte","ID","Standort"));
m_tbAdsorbertausch->select();
ui->tvAdsorbertausch->setModel(m_tbAdsorbertausch);
ui->tvAdsorbertausch->resizeColumnsToContents();
Ich muss auf TbKompressoren.ID zwei Relationen setzen: Eine um an die Seriennummer zu kommen, und eine um an den Typ zu kommen.
Dies geht schon nicht, sobald ich die zweite Relation setze wird die erste gelöscht.
Und das zweite Problem ist halt wie komme ich an den Wert TbTypen.Bezeichnung ?
Wäre klasse wenn mir jemand helfen könnte.