Visual Studio mit Qt Plugin
-
Hallo alle zusammen,
Programmiersprache C++ mit Qt
Ich versuche erfasste Messdaten in einem Access Datenbank zu schreiben.
Die daten kann ich doch erfassen und in die Access Datenbank auch schreiben.Folgende problem habe ich:
- Wie kann ich auf die Access datenbank letzte Primary Key erfassen?
Folgende Beispiel:
Tabelle1 hat 20 Datensätze:
Letzte Primary Key lässt ssich durch dieses Befehl rausfinden:
"SELECT max(Id) FROM Tabelle1"
Auf die Access Ebene, lässt sich das Befehl problemlos ausführen.
Nun auf die C++ Seite bzw. QT + C++ habe ich Problem.
Ich habe eine funktion geschrieben, die mir eigentlich letzte Primary Key ausgibt, aber es klappt nicht und bekomme keine Fehlermeldung:int SQLConnector::getMaxPrimaryKey() { QSqlQuery query; int returValue; query.exec("SELECT max(Id) FROM Tabelle1"); if(query.next()) { returValue = query.value(0).toInt(); } return returValue; }
Was mache ich denn falsch?
- Wie kann ich auf die Access datenbank letzte Primary Key erfassen?
-
Was hat die Frage mit C++ zu tun?
Ist die Defaultdatenbank geöffnet?
Du prüfst das Ergebnis von exec nicht. Wird die Abfrage überhaupt ausgeführt? Was sagt lastError?
-
manni66 schrieb:
Was hat die Frage mit C++ zu tun?
Das ist doch C++
manni66 schrieb:
Ist die Defaultdatenbank geöffnet?
Ja es ist geöffnet.manni66 schrieb:
Du prüfst das Ergebnis von exec nicht. Wird die Abfrage überhaupt ausgeführt? Was sagt lastError?
Ausgeführt ist es nicht und ich bekomme keine Fehlermeldung
-
MarcelGast schrieb:
manni66 schrieb:
Was hat die Frage mit C++ zu tun?
Das ist doch C++
Nein, Qt API oder Access.
Du prüfst das Ergebnis von exec nicht. Wird die Abfrage überhaupt ausgeführt? Was sagt lastError?
Ausgeführt ist es nicht und ich bekomme keine Fehlermeldung[/quote]
Woher weisst du das? Woher sollte die Meldung auch kommen?
-
Ich kenn´ mich mit Qt nicht aus, aber ich vermute, dass deinem Query Objekt einfach der Kontext fehlt. Woher weiß
QSqlQuery
denn, auf welche db es zugreifen soll?
-
@DocShoe
Tjoah, das sollte so sein. Ist aber leider nicht...http://qt-project.org/doc/qt-4.8/qsqlquery.html#QSqlQuery-2
If db is not specified, or is invalid, the application's default database is used. If query is not an empty string, it will be executed.
Zum zuwirehrn.
-
Mein Fehler:
so ist richtig:int SQLConnector::getMaxPrimaryKey() { QSqlQuery query; int returValue; query.exec("SELECT max(Id) FROM Tabelle1"); if(query.next()) { returValue = query.value(0).toInt(); } return returValue+1;// +1 wurde vergessen }
Es wurde nur bei einen gültigen Id eingefügt
Danke trotzdem
Ich habe einen andere Frage :
Folgende Anwendung habe ich:class MainWindow : public QMainWindow { Q_OBJECT ..... public: void foo(bool); } class SQLConnection { .... public: void foo1(bool); }
Ich möchte die Funktion foo() in foo1() aufrufen wie tue ich das ?
-
MarcelGast schrieb:
Ich habe einen andere Frage :
Folgende Anwendung habe ich:class MainWindow : public QMainWindow { Q_OBJECT ..... public: void foo(bool); } class SQLConnection { .... public: void foo1(bool); }
Ich möchte die Funktion foo() in foo1() aufrufen wie tue ich das ?
Wenn du schon diese Grundlagen nicht kennst, würde ich an deiner Stelle erst mal C++ lernen, bevor du mit Qt anfängst.
Die Deklarationen von foo1 und foo enthalten keine Parameternamen..
void foo1(bool test) { foo(test) }
Du kannst auch in Methoden andere einfach aufrufen.
-
quizzmaster schrieb:
Wenn du schon diese Grundlagen nicht kennst, würde ich an deiner Stelle erst mal C++ lernen, bevor du mit Qt anfängst.
Die Deklarationen von foo1 und foo enthalten keine Parameternamen..
void foo1(bool test) { foo(test) }
Du kannst auch in Methoden andere einfach aufrufen.
Danke für den Hinweis
Wie man eine methode von Klasse A in Klasse B aufruft weiss ich.
Erstmal die Klasse muss instanziert oder geerbt werden damit es auf public Methoden zugegeriffen werdenclass A{ ... bool foo(bool); };
Jetzt die classe B
class B{ public: bool foo1(bool); private: A *a; }; // implementiereung von foo1(bool ) bool B:foo1(test) { a->foo(test); ... }
-
Edit: Doch nicht.
-
Warum nit?