mardi 17 mars 2015

How to use SQLite-View as QCombobox-Model?

I am new in Qt and I try to make a little SQLite-Database Applikation.


The Question is: Is ist possible (if yes, how) to use a SQLite-View as relationed table in a QCombobox?????


I have tried to take a SQLite-Table to set the relation and it worked perfect. Then I changed the SQLite-Tabel with a SQLite-View and the data is not written to the database.


What I did till now:


First I connect to the database and set a new QSqiRelationalTableModel:



modBelege = new QSqlRelationalTableModel(this, cn::db());
modBelege->setEditStrategy(QSqlRelationalTableModel::OnManualSubmit);
modBelege->setTable("belege");


Then I set the relation and set the model for the QCombobox (txtAdr):



modBelege->setRelation(8, QSqlRelation("kontakte","AdrKey","Name"));//<----- "kontakte" is the SQLite-Table from the Database !!!!!!

QSqlTableModel *relationModAdresse = modBelege->relationModel(8);
relationModAdresse->setSort(1,Qt::AscendingOrder);
relationModAdresse->select();
ui->txtAdrKey->setModel(relationModAdresse);
ui->txtAdrKey->setModelColumn(1); // Index of the visible Column


At least I make a new QDataWidgetMapper and map the data to the QCombobox:



mapper=new QDataWidgetMapper(this);
mapper->setModel(modBelege);
mapper->setItemDelegate(new QSqlRelationalDelegate(this));

mapper->addMapping(ui->txtAdrKey,8);

mapper->toFirst();


The code above works perfect, but "kontakte" is the SQLite-Table. If I change it to "vkontakte" (=SQLite-View) the data is not written to the database.


Then I have tried the following:


I let the relation to the SQLite-Table:



modBelege->setRelation(8, QSqlRelation("kontakte","AdrKey","Name"));//<----- "kontakte" is the SQLite-Table from the Database !!!!!!


And then I set the model for the QCombobox directly to the SQLite-View:



QSqlTableModel *modAdresse=new QSqlTableModel();
modAdresse=new QSqlTableModel();
modAdresse->setTable("vKontakte");// <----- "vkontakte" is the SQLite-View from the Database !!!!!!
modAdresse->select();


Now the Index of the selected row in the QCombobox is written to the database and not the value of the foreign Key-Field (the first column of the view and the table)!!!!!!!


It was not possible for me to write the value of the relationed Key-Field instead of the Index of the row to the database.


Does anybody has a solution for my problem?????


Thank you in advance!!


Franz


Aucun commentaire:

Enregistrer un commentaire