QSQL - Zugriff
QSQL - Zugriff
Hallo
Ich hab einen TableView, in dem Daten aus einer Datenbank eingelesen werden.
Ich möchte nun, wenn der Benutzer auf ein Feld in dem TableView klickt, auf die ganze Zeile in dem SQLtable, in dem sich das Feld befindet auf das er geklickt hat zugreifen.
Der SQLtable sieht ja meines wissens so aus:
Feld1 Feld2 Feld3 ...
data1 data1 data1
data2 data2 data2
...
Wenn er im TableView nun auf Feld2;data2 zugreift möchte ich jetzt alle daten die sich in der reihe von data2 befinden, benutzen.
Nur wie finde ich die im Table wieder?
mit Select ist das schlecht möglich, da es ja sein kann, dass die daten doppelt oder dreifach in der datenbank liegen und nur das genau möchte, was angeklickt wurde.
ich hoffe ihr versteht was ich meine.
nvidia
Ich hab einen TableView, in dem Daten aus einer Datenbank eingelesen werden.
Ich möchte nun, wenn der Benutzer auf ein Feld in dem TableView klickt, auf die ganze Zeile in dem SQLtable, in dem sich das Feld befindet auf das er geklickt hat zugreifen.
Der SQLtable sieht ja meines wissens so aus:
Feld1 Feld2 Feld3 ...
data1 data1 data1
data2 data2 data2
...
Wenn er im TableView nun auf Feld2;data2 zugreift möchte ich jetzt alle daten die sich in der reihe von data2 befinden, benutzen.
Nur wie finde ich die im Table wieder?
mit Select ist das schlecht möglich, da es ja sein kann, dass die daten doppelt oder dreifach in der datenbank liegen und nur das genau möchte, was angeklickt wurde.
ich hoffe ihr versteht was ich meine.
nvidia
Normal hat doch jeder Datensatz in ner SQL DB nen Primaerkey ?
Wenn selber keinen anlegst, kann sein dass die DB da auch selbsttaetig was macht (Oracle, rownumber z.b.) je nach tabellentyp.
Die Keys kannst iin ner unsichtbaren stalten halten ..
Falls es wirklich ne freie tabelle iss, und du die Zeilennummern verwischst (sortierung oder so) dann hasst wirklich Pech. Dann unterstuetzt diese tabelle keinen eindeutigen zugriff auf die datensaetze, wenn die datensaetze nicht eindeutig sind ... dann musst du dir was komplett anderes einfallen lassen....
Ciao ...
Wenn selber keinen anlegst, kann sein dass die DB da auch selbsttaetig was macht (Oracle, rownumber z.b.) je nach tabellentyp.
Die Keys kannst iin ner unsichtbaren stalten halten ..
Falls es wirklich ne freie tabelle iss, und du die Zeilennummern verwischst (sortierung oder so) dann hasst wirklich Pech. Dann unterstuetzt diese tabelle keinen eindeutigen zugriff auf die datensaetze, wenn die datensaetze nicht eindeutig sind ... dann musst du dir was komplett anderes einfallen lassen....
Ciao ...
-
Troll.Soft
- Beiträge: 190
- Registriert: 18. Juni 2008 09:52
- Wohnort: Hamburg
Re: QSQL - Zugriff
Du mußt QModelIndex benutzen. Das hat z.b. eine funktion data() die einen QVariant liefert (ist dein Datum aus row, col). An QModelIndex kommst Du über SignalSlot heran. Und über QModelIndex kommst Du auch an alle anderen Daten heran. Ist etwas eigenartig, wenn man es das Erste Mal macht.Nvidia hat geschrieben:Wenn er im TableView nun auf Feld2;data2 zugreift möchte ich jetzt alle daten die sich in der reihe von data2 befinden, benutzen.
Nur wie finde ich die im Table wieder?
tschüß
Reinhold
habs nun mit eine QSQLtablemodel gemacht.
es klappt nun, aber ich krieg diesen Fehler:
wie beheb ich das?
QSqlDatabasePrivate::removeDatabase: connection 'qt_sql_default_connection' is still in use, all queries will cease to work.
b)
Ich hab eine TableView und der Benutzer kann beliebig viele neue erstellen.
Was ist sinnvoller
1) ich erstelle eine große Datenbank und führe eine Spalte mit Gruppe.
Beim Einlesen in die Tabelle filter ich alle raus, die nicht den gruppenamen haben.
Wenn Daten von einem View zum anderen Verschoben wird, müsste ich nur den Gruppennamen änderen.
2) ich erstelle für jeden View einen Table
es klappt nun, aber ich krieg diesen Fehler:
wie beheb ich das?
QSqlDatabasePrivate::removeDatabase: connection 'qt_sql_default_connection' is still in use, all queries will cease to work.
b)
Ich hab eine TableView und der Benutzer kann beliebig viele neue erstellen.
Was ist sinnvoller
1) ich erstelle eine große Datenbank und führe eine Spalte mit Gruppe.
Beim Einlesen in die Tabelle filter ich alle raus, die nicht den gruppenamen haben.
Wenn Daten von einem View zum anderen Verschoben wird, müsste ich nur den Gruppennamen änderen.
2) ich erstelle für jeden View einen Table
Zuletzt geändert von Nvidia am 21. Mai 2010 16:29, insgesamt 1-mal geändert.
-
Troll.Soft
- Beiträge: 190
- Registriert: 18. Juni 2008 09:52
- Wohnort: Hamburg
-
Troll.Soft
- Beiträge: 190
- Registriert: 18. Juni 2008 09:52
- Wohnort: Hamburg