Code Verständnisproblem



  • Ich bastel mal zusammen, wie ich das meine:

    SqlString.Format( "('%s','%s','%s','%s','%s')", NewSong.Shelf.c_str(),NewSong.Interpreter.c_str(),NewSong.Title.c_str(),NewSong.Rubric.c_str(),NewSong.CD.c_str());
            strErgebnis.Format("Delete from [tbl_Datenbank] where [ID] = %d", m_ListDataFound.GetItemData( item )); //conection with the databse
            music_data.ExecuteSQL(strErgebnis); // send to database
    

    Das packst du VOR das Löschen aus dem Listcontrol, aber in die Schleife.
    Variablendeklaration musst du noch machen, aber die solltest du ja kennen. 😉



  • Und dieses ItemData befinden sich in nItem



  • Unsere Posts haben sich wohl überschnitten, guck mal oben. 🙂



  • Achso du nutz einen Delete Befehl



  • Was anderes würde mir ehrlich gesagt bei deiner Auslesemethode nicht einfallen.

    Würdest du statisch und nicht dynamisch zugreifen, gäbe es noch eine andere Möglichkeit.
    Ahja, du kannst das delete noch optimieren, indem du mit ... [ID] in (...) arbeitest. Dann wird das nur einmal ausgeführt und nicht für jede Zeile, aber das ist nur noch Kür. 😉



  • OK danke guck mal ob ich das jetzt hinbekomm 😃 Wenn nicht dann muss ich mir überlegen ob ich nicht lieber was anderes lernen will ausser Prog 🙄



  • Nanana, so schlimm ist es doch nun auch nicht. 😉
    Du hast dich ja auch gleich an die Aufgaben für Fortgeschrittene gewagt - die sind schwerer, aber du lernst mehr. 🙂



  • Wenn du das sagst



  • Eine Frage hätte ich aber noch ich hab den Code zwar jetzt angepasst, aber ich weiss noch nicht so recht wie ich DeleteSong mit den Daten aus der List fülle:

    CDatabase music_data;
    	CString SqlString;
    	CString strErgebnis;
    
    	MusicPiece DeleteSong;
    
    	    // Ist was markiert?
            POSITION pos = m_ListDataFound.GetFirstSelectedItemPosition();
            if (pos == NULL)
            { // Nichts gewählt, Fehlermeldung oder nix machen
    			MessageBox("Es wurde kein Eintrag zum Löschen ausgewählt","Fehler",MB_OK);
            }
            else
            {
                while (pos)
                {
    
    				 SqlString.Format( "('%s','%s','%s','%s','%s')", DeleteSong.Shelf.c_str(),DeleteSong.Interpreter.c_str(),DeleteSong.Title.c_str(),DeleteSong.Rubric.c_str(),DeleteSong.CD.c_str());
    				strErgebnis.Format("Delete from [tbl_Datenbank] where [ID] = %d", m_ListDataFound.GetItemData(???)); //conection with the databse
    				 music_data.ExecuteSQL(strErgebnis); // send to database
                    // Index des Items holen und gleich weitersetzen
                    int nItem = m_ListDataFound.GetNextSelectedItem(pos);
                    // nItem ist der Index des Eintrags
    				m_ListDataFound.DeleteItem(nItem);
    
                }
            }
    

    Bis jetzt habe ich ja immer nur die m_Variablen kopiert, aber wie kann ich auch den Inhalt der list zugreifen?? Muss ich da etwa pos als so ne art Zähler benutzen?? Also DeleteSong[pos].Shelf ?? Oder wie mach ich das??
    Und mein Zweites problem in dem Code ist hinter GetItemData nen Fragezeichen, weil ich nicht weiss was ich da reinschreiben soll wenn ich pos reinschreib dann funktioniert das nicht dann sagt er logischerweise das er kein int konvertieren kann

    Gruss Silver



  • ??? muss nItem sein.
    Und MusicPiece brauchst du an der Stelle nicht, da du dir die ID ja extra gemerkt hast. 🙂

    Und die erste Zeile in der Schleife (SqlString.Format...) kannst du löschen.

    Hast du nun verstanden, was ItemData ist und wie es mit der ID aus der Datenbank zusammenhängt?



  • JA durch die ID weiss ItemData welcher Datensatz gemeint ist.
    Aber das mit dem GetItemData( nItem ) verwirrt mich noch. Wieso komm da nItem rein wenn ich das doch erst später initialisiere? Oder hab ich da jetzt was falsch verstanden??



  • Ups... dann initialisier das bitte vorher.


Anmelden zum Antworten