Hallo,
ich möchte gerne auf eine View in einer SQLite Datenbank über QSqlTableModel verwenden. Leider werden mir hier keine Daten in Verbindung mit einer QTableView angezeigt. Mein Code sieht wie folgt aus:
[code]
QSqlTableModel model;
model.setTable("v_software_parameter");
mode.select();
...
QTableView view;
view.setModel(&model);
[/code]
Greife ich auf die physische Tabelle "software_parameter" anstatt von "v_software_parameter" zu, dann klappt das.
Ich könnte natürlich für den Zugriff auf die View auch ein QSqlQueryModel verwenden, aber dann verliere ich die Funktionalität zum Sortieren beim Klick auf den Header über QTableView::setSortingEnabled(true).
Hat jemand eine Idee?
Danke,
Thomas
QSqlTableModel mit Datenbank-View verwenden
-
tsteinmaurer
- Beiträge: 18
- Registriert: 13. Juli 2007 10:15
-
tsteinmaurer
- Beiträge: 18
- Registriert: 13. Juli 2007 10:15
Hi!
zu Deinen Fragen:
- Ich verwende SQLite 3
- Die View sieht wie folgt aus:
[code]
create view v_software_parameter
as select
id as ID
, name as Name
, default_value as "Default"
, parameter_unit as Unit
from
software_parameter
union
select
'DAT'
, 'Date'
, date(current_date, 'localtime')
, null
union
select
'TIM'
, 'Local Time'
, time(current_time, 'localtime')
, null
;
[/code]
- Die View v_software_parameter funktioniert mit einem anderen Abfrage-Tool, so auch mit QSqlQueryModel, in QT 4.2 jedoch nicht mit QSqlTableModel. Kann man QSqlTableModel überhaupt mit einer Datenbank-View verwenden?
Danke,
Thomas
zu Deinen Fragen:
- Ich verwende SQLite 3
- Die View sieht wie folgt aus:
[code]
create view v_software_parameter
as select
id as ID
, name as Name
, default_value as "Default"
, parameter_unit as Unit
from
software_parameter
union
select
'DAT'
, 'Date'
, date(current_date, 'localtime')
, null
union
select
'TIM'
, 'Local Time'
, time(current_time, 'localtime')
, null
;
[/code]
- Die View v_software_parameter funktioniert mit einem anderen Abfrage-Tool, so auch mit QSqlQueryModel, in QT 4.2 jedoch nicht mit QSqlTableModel. Kann man QSqlTableModel überhaupt mit einer Datenbank-View verwenden?
Danke,
Thomas
-
tsteinmaurer
- Beiträge: 18
- Registriert: 13. Juli 2007 10:15
Hallo,
ich hab nun das Problem gefunden. Es liegt an der Namensgebung der Felder in der View-Definition. Verwende ich in der View-Definition einen Feldnamen "Default", dann klappt der Zugriff auf die View mit QSqlTableModel nicht. Zum Beispiel:
[code]
create view v_software_parameter
as
select
id as Id
, name as Name
, default_value as "Default"
, parameter_unit as Unit
from
software_parameter
union
select
'DAT'
, 'Date'
, date(current_date, 'localtime')
, null
union
select
'TIM'
, 'Local Time'
, time(current_time, 'localtime')
, null
;
[/code]
Verwende ich z.B. Value als Feldnamen, z.b.:
[code]
create view v_software_parameter
as
select
id as Id
, name as Name
, default_value as Value
, parameter_unit as Unit
from
software_parameter
union
select
'DAT'
, 'Date'
, date(current_date, 'localtime')
, null
union
select
'TIM'
, 'Local Time'
, time(current_time, 'localtime')
, null
;
[/code]
Dann klappt auch der Zugriff mit QSqlTableModel.
Thomas
ich hab nun das Problem gefunden. Es liegt an der Namensgebung der Felder in der View-Definition. Verwende ich in der View-Definition einen Feldnamen "Default", dann klappt der Zugriff auf die View mit QSqlTableModel nicht. Zum Beispiel:
[code]
create view v_software_parameter
as
select
id as Id
, name as Name
, default_value as "Default"
, parameter_unit as Unit
from
software_parameter
union
select
'DAT'
, 'Date'
, date(current_date, 'localtime')
, null
union
select
'TIM'
, 'Local Time'
, time(current_time, 'localtime')
, null
;
[/code]
Verwende ich z.B. Value als Feldnamen, z.b.:
[code]
create view v_software_parameter
as
select
id as Id
, name as Name
, default_value as Value
, parameter_unit as Unit
from
software_parameter
union
select
'DAT'
, 'Date'
, date(current_date, 'localtime')
, null
union
select
'TIM'
, 'Local Time'
, time(current_time, 'localtime')
, null
;
[/code]
Dann klappt auch der Zugriff mit QSqlTableModel.
Thomas