Also das Problem liegt beim Speichern. Du speicherst ganz einfach einen QString der ein für dich lesbares Datum enthält. Das ist aber definitiv nicht das, was QDate/QDateTime benötigt um daraus ein sinnvolles Datum zu erzeugen. Du solltest also korrekt ein QDateTime - Objekt beim Speichern benutzen anstatt einen QString:
Code: Alles auswählen
QSqlQuery qry;
qry.prepare("INSERT INTO DatumTest (startDatum, bewegungsDatum, bezeichnung) VALUES (:start, :bewegung, :descr)");
qry.bindValue(":start", ui->deDatum01->dateTime());
qry.bindValue(":bewegung", ui->deDatum02->dateTime());
qry.bindValue(":end", ui->frmBezeichnung->text());
if(qry.exec())
...
Eine andere Datenbank hätte Dir das wohl schon beim Insert um die Ohren gehauen, SQLite speichert intern alles als Text so dass dies hier nicht auffiel.
Und noch ein wenig Manöverkritik:
- Die UI-Datei war nicht mit dabei, das Problem an sich hätte wohl auch in einen 20-Zeiler in der main gezeigt werden können (Tabelle erzeugen, QDateTime so einfügren wie Du es tust, dies wieder auslesen und per qDebug() ausgeben)
- Zweimal memory-leak, qry muss in diesem Fall nichtmal per new erzeugt werden:
Code: Alles auswählen
void Dialog::fillTableView()
{
QSqlQueryModel *model = new QSqlQueryModel();
QSqlQuery *qry = new QSqlQuery(myDB);
...
- Hier erzeugst du jedes Mal eine neue Datenbankverbindung (und schließt die alte) - komplett unnötig. Einfach auf die DB mit QSqlDatabase::database() zugreifen. Deshalb musst Du in fillTableView auch immer wieder ein neues Model etc. erzeugen was normalerweise unnötig ist:
Code: Alles auswählen
bool connOpen()
{
myDB = QSqlDatabase::addDatabase("QSQLITE");
myDB.setDatabaseName("TestDB.db");
if(myDB.open())
....
}
- Es ist nirgends definiert, welche Spalte wann zurückgeliefert wird. Demnach
immer angeben was man will:
Code: Alles auswählen
qry.prepare("SELECT * FROM DatumTest WHERE lfdNr = '"+xhSelect+"' ");
-->
qry.prepare("SELECT lfdNr, startDatum, bewegungsDatum, bezeichnung FROM DatumTest WHERE lfdNr = '"+xhSelect+"' ");
- Ein QSqlQueryModel ist zwar für einfachste Dinge gut aber wenn es was größeres werden soll würde ich eher ein cusom-Model benutzen.