qsqlquerymodel beim veraendern der datenbank updaten

Alles rund um die Programmierung mit Qt
Antworten
aMan
Beiträge: 12
Registriert: 27. März 2006 23:11

qsqlquerymodel beim veraendern der datenbank updaten

Beitrag von aMan »

hallo,
ich habe folgendes problem:

in einer tabelle (prog) werden verschiedene datensaetze angezeigt, darueber ist eine combobox um einen parameter der abfrage zu veraendern.

wenn dieser veraendert wird, wird eine spalte in einer tabelle (db) veraendert, sodass sich auch die tabelle (prog) aendern muesste.

also muss ich beim aendern der combobox das qsqlquerymodel aktualisieren (der querystring bleibt gleich).

wie mach ich das am besten?

mfg aman..
patrik08
Beiträge: 746
Registriert: 27. Februar 2006 10:48
Wohnort: DE Freiburg

Beitrag von patrik08 »

Ohne nur eine line code zu sehen ... von deinem QSqlTableModel

kann ich nur sagen dass...

Code: Alles auswählen

 sqlmodel = new QSqlTableModel();
        sqlmodel->setTable( tablesql );
        sqlmodel->setEditStrategy(QSqlTableModel::OnRowChange);
        sqlmodel->select();
auch mit combobox..s.
funktioniert
aMan
Beiträge: 12
Registriert: 27. März 2006 23:11

Beitrag von aMan »

geht leider nicht, da die abfrage ueber mehrere tabellen ist und sogar etw. berechnet wird.

mfg aman..
patrik08
Beiträge: 746
Registriert: 27. Februar 2006 10:48
Wohnort: DE Freiburg

Beitrag von patrik08 »

Warum kompliziert machen mit tabellen wenn es einfacher und vorallem schoener kommt mit der qFindChildren methode? + Designer und alle felder haben der 10 tabellen haben der gleichen objektname

Eine tabelle kann auch ein formular sein oder ? es muss nicht immer alles excel sein....

objektname tabellename_feldname

http://qtforum.de/forum/viewtopic.php?t=2192

wenn du ueber 10 tabellen in einen table anzeigst musst du deine eigene qtable model schreiben.... kommst nicht herum....

Was hst du den fuer eine db?
aMan
Beiträge: 12
Registriert: 27. März 2006 23:11

Beitrag von aMan »

hmm..

deine loesung waer da glaub ich nicht so optimal, da ich mehrere hundert datensaetze haben kann.

und bei sowas ist ne richtige db halt doch schoener..

aber danke..

die datenbank ist sqlite

mfg aman..
patrik08
Beiträge: 746
Registriert: 27. Februar 2006 10:48
Wohnort: DE Freiburg

Beitrag von patrik08 »

aMan hat geschrieben:hmm..
deine loesung waer da glaub ich nicht so optimal, da ich mehrere hundert datensaetze haben kann.
die datenbank ist sqlite
mfg aman..
Dann empfehle ich dir eine statische sqlite3 libs zu schreiben die dann geht auf..
Window , Mac (Intel,PPC) , Linux ..... ohne dll oder plug-in ist etwa 3 mal schneller bei komplizierte query .....

kannst ja mal probieren ein muster.... mit qt4
svn co http://ciz.ch/svnciz/static_sqlite_table/ tabelle

dann kannst du dass unmoegliche ans licht bringen...

Mein erstes projekt http://sourceforge.net/projects/qtexcel-xslt/ hatte ich qtsqlplug-in
doch dann im zweiten habe ich daraus gelernt und ...
http://sourceforge.net/projects/visual-xsltproc/ ist eine statische libs....
aMan
Beiträge: 12
Registriert: 27. März 2006 23:11

Beitrag von aMan »

ich glaube kaum, dass ich bei ein paar hundert datensaetzen probleme mit der performance haben werde.

außerdem ist es ot und hilft mir nicht wirkllich weiter..

mfg aman..
patrik08
Beiträge: 746
Registriert: 27. Februar 2006 10:48
Wohnort: DE Freiburg

Beitrag von patrik08 »

aMan hat geschrieben:ich glaube kaum, dass ich bei ein paar hundert datensaetzen probleme mit der performance haben werde.
mfg aman..
Die probleme beginnen eben noch fruher als die performance........
Zeige doch mal dein fehler code abschnitt ... wo dass update an QSqlTableModel vorbeilauft...
aMan
Beiträge: 12
Registriert: 27. März 2006 23:11

Beitrag von aMan »

Code: Alles auswählen

void PTMainWindow::comboboxWorkgroupChanged(int p_index)
{
	long long l_gid = comboBox_workgroup->itemData(p_index).toInt();
	setWorkgroup(l_gid);
	
	this->m_user_stat_model->blub();		//update
}
patrik08
Beiträge: 746
Registriert: 27. Februar 2006 10:48
Wohnort: DE Freiburg

Beitrag von patrik08 »

long long l_gid =

long long ??? gibt keinen sinn....

uint l_gid = kann ich begreifen dass es gehen kann oder
long l_gid =
oder qlonglong

qDebug() << "### long long " << " <=value=> " << l_gid;
aMan
Beiträge: 12
Registriert: 27. März 2006 23:11

Beitrag von aMan »

was ist bitte an long long so komisch?

und was zum teufel hat das mit dem eigentlichen thema am hut?
wenn du mir nicht helfen kannst, dann musst du ja nichts schreiben. aber sowas ist wirklich kontraproduktiv und unnoetig.

mfg aman..
patrik08
Beiträge: 746
Registriert: 27. Februar 2006 10:48
Wohnort: DE Freiburg

Beitrag von patrik08 »

aMan hat geschrieben:was ist bitte an long long so komisch?
mfg aman..
dass es nur C ist... einige compiler koennen damit nicht umgeht ... sagt mein C++ buch und http://www.jk-technology.com/c/inttypes.html#long
+ bei http://www.koders.com/ ist sowas doppelt nicht findbar...
aMan
Beiträge: 12
Registriert: 27. März 2006 23:11

Beitrag von aMan »

auf der seite, die du verlinkt hast, steht
While the C++ standard is quite new and most likely will not change for several years, it is almost certain that C++ compilers will add support for these types as well. The C++ compilers which come with the implementations mentioned above do.
btw: wie soll ich denn deiner meinung nach ein 64 bit int mit dem gcc machen?

===

on topic:
ich habs jetzt so geloest, nicht unbedingt das schoenste, aber ich hatte sonst keine idee..

Code: Alles auswählen

void PTUserStatisticModel::updateModel()
{
	this->setQuery(this->query().lastQuery());
}
edit:
laut trolltech kennen nicht alle kompiler namespaces, soll ich die deswegen auch nicht verwenden?
laut einer anderen seite kennen nicht alle kompiler templates, soll ich diese auch nicht verwenden?
Antworten