25. März 200916 j hey ich bins schonwieder =) ... und auch wieder mit nem problem ^^ also in meiner MySQL datenbank wird das datum im format YYYY-MM-DD gespeichert und ich möchte das er jeden Monat der angegeben wurde nur einmal ausgibt bsp: Datensätze: 2009-01-21 2009-01-21 2009-01-21 2009-02-21 2009-03-21 2009-04-21 Ausgabe soll sein: Januar Februar März April einen ansatz habe ich schon... und zwar SELECT MONTHNAME('2008-02-03'); bei der funktion übersetzt er immerhin die zahl in den Monatsnamen =) ... aber auch nur von dem datum was ich angegeben habe .. gibt es da irgendwie ne möglichkeit das zu machen?! ^^
25. März 200916 j Hat eigentlich nichts mit C++ zu tun. Versuch's mal so: SELECT DISTINCT MONTHNAME(NAME_DES_FELDES)
25. März 200916 j ahh mit SELECT DISTINCT MONTHNAME(NAME_DES_FELDES) from TABELLE; gehts >< .. cool danke =)
25. März 200916 j und schon kommt das nächste problem O.o string query= "SELECT DISTINCT MONTHNAME(Datum) from verwaltung;"; mysql_query(connectionDB, query.c_str()); result=mysql_store_result(connectionDB); int daten = mysql_num_rows(result); for(int i=0; i < daten; i++){ recordset_row=mysql_fetch_row(result); static const char* items[] = { recordset_row[0] , 0 }; test->insertStrList( items ); } so hab ich das jetzt in QT3 geschrieben..die Monate sollen in einer ComboBox eingefügt werden was ich eigentlich damit mache: static const char* items[] = { recordset_row[0] , 0 }; test->insertStrList( items ); und dadurch das ich auch "recordset_row=mysql_fetch_row(result);" in einer for schleife habe sollte er auch in die nächste zeile in der Datenbank springen .. aber er gibt mir nur 12 mal den selben monat aus... wenn ich aber vorher ein nur recordset_row[0] in der konsole ausgeben lasse funktioniert es ... also denk ich mal es liegt am einfügen in die ComboBox .. wie kann ich das vernünftig realisieren das es klappt?
25. März 200916 j Ist dir klar, dass eine static-Variable nur einmal initialisiert wird? Warum überhaupt static?
25. März 200916 j ich versteh es einfach nicht -.- habe ja soweit alles hinbekommen doch wenn ich das ausgewählte datum aus der combobox an einen mysql string übergeben will dann sagt er mir "Segmentation Fault" QString ausgabejahr; ausgabejahr = jahr1->currentText(); QString ausgabemonat; ausgabemonat = monat1->currentText(); string query= "SELECT * FROM verwaltung WHERE YEAR(Datum)="+ausgabejahr+" AND MONTH(Datum)="+ausgabemonat+";"; mysql_query(connectionDB, query.c_str()); result=mysql_store_result(connectionDB); int daten = mysql_num_rows(result); viewdata->clear(); for(int i=0; i < daten; i++){ recordset_row=mysql_fetch_row(result); new QListViewItem( viewdata, recordset_row[1], recordset_row[2], recordset_row[3], recordset_row[4], recordset_row[5], recordset_row[6], recordset_row[7], recordset_row[8] ); } aber da ist doch eigentlich alles richtig oder? hatte schon einiges auskommentiert um zu schauen wo der fehler liegt ... und der muss irgendwo im diesem bereich sein: string query= "SELECT * FROM verwaltung WHERE YEAR(Datum)="+ausgabejahr+" AND MONTH(Datum)="+ausgabemonat+";"; mysql_query(connectionDB, query.c_str()); result=mysql_store_result(connectionDB); int daten = mysql_num_rows(result);
25. März 200916 j ja ...hier nochmal alles was ich für die DB deklariert habe: MYSQL *connectionDB; MYSQL addDB; MYSQL_RES *result; MYSQL_ROW recordset_row; mysql_init(&addDB); connectionDB=mysql_real_connect(&addDB, "HOST", "Benutzer", "PW", "Datenbank", 0,0,0); //edit: also dieser Segmentation Fault kommt erst wenn ich diesen slot im programm aufrufe Bearbeitet 25. März 200916 j von Angus131
25. März 200916 j Ich meinte schon den konkreten Wert von connectionDB an dieser Stelle. Wirf den Debugger an. Fehlerbehandlung im Code scheinst du ja grundsätzlich nicht zu machen
25. März 200916 j also Debugger hab ich leider keinen >< ... aber ConnectionDB sollte eigentlich richtig sein... da es bei anderen funktionen ja geht .. habe gerade auch nochmal versucht "+ausgabemonat+" und "+ausgabejahr+" einfach mal durch zahlen zu ersetzten... dann gehts Bearbeitet 25. März 200916 j von Angus131
25. März 200916 j also Debugger hab ich leider keinen >< ...Wieso das? aber ConnectionDB sollte eigentlich richtig sein... da es bei anderen funktionen ja gehtNö, das könnte eine ganz andere Variable sein, die einfach nur denselben Namen hat.
25. März 200916 j hab kein Debugger weil ich noch nie ein gebraucht hab =) .. und kenne auch auf anhieb keinen für QT >< hab jetzt ConnectionDB auch nochmal umbenannt gibt aber immernoch den selben fehler
25. März 200916 j hab kein Debugger weil ich noch nie ein gebraucht hab =) .. und kenne auch auf anhieb keinen für QT ><Das hat mit QT nichts zu tun. Du brauchst einen passenden Debugger für deinen Compiler. hab jetzt ConnectionDB auch nochmal umbenannt gibt aber immernoch den selben fehler Ist das denn eine globale Variable, oder was?
25. März 200916 j ich hab ConnectionDB bis jetzt in jeder funktion neu deklariert >< .. muss ich aber noch ändern das es global ist ...aber mir ist mal was aufgefallen .. ich hatte das ja schonmal alles gemacht nur war das etwas umständlicher ^^ .. und da hab ich diese 2 strings verwendet: QString jahrstring; QString monatstring; jahrstring = jahr1 -> text(); monatstring = monat1 -> text(); und jetzt mach ich das so: QString ausgabejahr; ausgabejahr = jahr1->currentText(); QString ausgabemonat; ausgabemonat = monat1->currentText(); kann es vllt am "->text();" liegen? und wenn ja wie kann ich das machen?
25. März 200916 j ich hab ConnectionDB bis jetzt in jeder funktion neu deklariert >< ..D.h. du machst in jeder Funktion eine neue Verbindung auf? Oder wie initialisierst du ConnectionDB? Lass dir doch nicht alles aus der Nase ziehen. muss ich aber noch ändern das es global ist ...Das ist eher schlechter Stil. kann es vllt am "->text();" liegen? und wenn ja wie kann ich das machen?Aus deinen kleinen Codeschnipseln kann man das kaum ablesen. Es wäre wirklich gut, wenn du einen Debugger benutzen würdest.
25. März 200916 j ja ich mach in jeder funktion ne neue verbindung auf ... aber warum ist es schlecht die verbindung global ist? und was für ein Debugger soll ich benutzen?! >< ... hab hier ubuntu drauf und das einzigste was ich installiert hab für QT ist der QT3 Assistant QT3 Designer und QT3 Linguist compilieren mach ich mit den 3 befehlen: qmake -project qmake make (falls das hilft) wobei ich aber den Designer und Linguist nicht benutze
25. März 200916 j ich hab den fehler gefunden... und zwar bei der Monatsabfrage... und zwar fragt er nach dem namen und nicht nach der zahl ... kann man den befehl SELECT DISTINCT MONTHNAME(Datum) from verwaltung; denn noch umdrehen?
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.