sortiren in Access-DB



  • Hallo,

    ich möchte gerne meine Datensätze nach einer Gruppe sortieren lassen, aber
    es geht nicht.. es kommt auch keine Fehlermeldung.

    Bitte schaut es euch mal an, vielleicht habt ihr ne Idee:

    void CABC_DBDoc::OnSgruppe() 
    {
    	// TODO: Code für Befehlsbehandlungsroutine hier einfügen
    	CMyRecordset *m_pSet;
    
    	m_pSet = new CMyRecordset(NULL);
    
    	m_pSet->Open(CRecordset::snapshot, NULL, CRecordset::none );
    
    	// sortieren nach Wert
    	m_pSet->m_strSort = "Gruppe, Name";
    
    	// den Recordset aktualisieren und schliessen
    	m_pSet->Requery();
    	m_pSet->Close(); 
    
    }
    

    Wenn ich dann in der DB nachschaue ist sie immernoch unsortiert...

    Danke!



  • WANN schaust du das nach? Mach mal nen Pfeil an die Zeile.

    Hast du es shcon mal mit nur einem Feld versucht?

    🙂



  • also ich drücke auf sortieren ... dann flackert ganz kurz der Bildschirm, ich beende das Prg un dgucke dann in die Access-DB.

    Habs auch schon mit einem probiert.



  • Aua, jetzt hab ich nen Handabdruck auf der Stirn... 🤡

    Du sortiert nur für den Moment. 🙄
    [cpp]void CABC_DBDoc::OnSgruppe()
    {
    // TODO: Code für Befehlsbehandlungsroutine hier einfügen
    CMyRecordset *m_pSet;

    m_pSet = new CMyRecordset(NULL);

    m_pSet->Open(CRecordset::snapshot, NULL, CRecordset::none );

    // sortieren nach Wert
    m_pSet->m_strSort = "Gruppe, Name";

    // den Recordset aktualisieren und schliessen
    m_pSet->Requery();
    // JETZT ist dein RECORDSET sortiert
    m_pSet->Close();

    }[/cpp]

    Verstanden? Sonst muss ich weiter ausholen...



  • mit m_strSort sortierst du auch deinen Recordset und nicht die Datenbank um es mal salop auszudrücken, sortierst du die eingelesenen Daten! nicht die DB!!! wenn du jetzt die DB Löschst und das eingelesene in die DB schreibst, dann ist sie sortiert aber wieso willst du es in der DB sortieren, du kannst es doch beim nutzen in deinem Prog sortieren! Wenn du aber in Access dir das sortiert anschauen möchtest dann mach ein View drauf bei dem du sagst order by ... 😃



  • okay verstehe - ist also nur für den Moment...

    aber wie kann ich "für immer" umsortieren - so nutzt mir das ja nichts...???



  • lol, die datenbank ist immer "unsortiert" oder eben immer "sortiert", je nach betrachtungsweise. das access frontend gibt dir nur eine ansicht auf die daten. die sortierung der daten selber siehst du nicht. damit die daten im access-frontend soertiert sind, musst du eben auf A...Z klicken. dadurch werden aber deine daten in keinster weise veraendert.

    Esco



  • "Für immer" ginge vielleicht so, wie Polofreak geschrieben hat.

    Oder du machst einen View (eine Abfrage) - die ist IMMER so sortiert, wie du das festgelegt hast. 🙂



  • *bussi@estartu* du gibst mir Recht 😃 Juhu endlich hab ich mal was so gutes geschrieben dass selbst ein Profi wie du mir Recht geben kann! JUHU!



  • @estartu_de
    genauso habe ich es jetzt gemacht 🙂

    hmm kann man auch absteigend sortieren?
    jetzte wird von 1 bis 100 ausfteigend sortiert, andersherum wäre mir sehr angenehm.



  • nach deinem sort asc für absteigend und desc (standard) für aufsteigend



  • vielen Dank...
    aber kannst Du mir bitte ein kleines Code-Beispiel geben? 😕



  • @Polofreak: Auf die Idee wäre ich aber NIE gekommen.
    Berufsblindheit, die hast du noch nicht so. 😉



  • aber wie gebe ich das nun ein?



  • // sortieren nach Wert
        m_pSet->m_strSort = "Gruppe, Name DESC";
    


  • Vielen Dank !
    Das hilft mir gut weiter 🙂



  • Um es mal auf den Punkt zu bringen.

    Ein RDBMS speicher die Daten IMMER sequenziell. Dh so wie sie dem RDBMS übergeben werden wird immer an das Ende der Datenbank-Datei gespeichert.

    Wie das funktioniert sollte eine User nicht belasten. Dafür gibt es ja RDBMS.
    Man kann dem RDBMS aber sagen das er die Daten wie gewünscht zurückgeben soll.
    Wie das RDBMS das macht sollte eine User nicht belasten. Dafür gibt es ja RDBMS.
    Um es dem RDBMS zu sagen gibt es die Abfragesprache SQL.
    Da gibt es den Befehl ORDER BY.

    Eine Sortiereung der Daten im Datenbankfile macht für Normaluser keinen Sinn. Dafür gibt es Indexfiles.


Log in to reply