Seite 1 von 1

qsqlquerymodel beim veraendern der datenbank updaten

Verfasst: 28. Juni 2006 08:36
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..

Verfasst: 28. Juni 2006 12:15
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

Verfasst: 28. Juni 2006 20:01
von aMan
geht leider nicht, da die abfrage ueber mehrere tabellen ist und sogar etw. berechnet wird.

mfg aman..

Verfasst: 28. Juni 2006 21:21
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?

Verfasst: 28. Juni 2006 21:31
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..

Verfasst: 28. Juni 2006 21:57
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....

Verfasst: 28. Juni 2006 22:19
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..

Verfasst: 28. Juni 2006 22:39
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...

Verfasst: 28. Juni 2006 22:49
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
}

Verfasst: 28. Juni 2006 23:27
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;

Verfasst: 29. Juni 2006 00:56
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..

Verfasst: 29. Juni 2006 11:26
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...

Verfasst: 30. Juni 2006 15:00
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?