Acces Datenbank mit ODBC
-
Hallo,
ich habe eine Acces Datenbank mit mehreren Tabellen auf die ich mit verschiedenen CRecordset Objekten zugreife. Soweit funktioniert alles, auch die Abfrage an sich.
Problem: Egal wie ich es probiere funktioniert kein ORDER BYHier ein Code Fragment in dem ich eine Abfrage aus einer Tabelle mit mehreren Spalten machen will und das ganze nach einer Spalte sortiert werden soll:
void MeineFunktion() { CDatenbankDoc* pDoc = GetDocument(); CListBox* p_LB = ( CListBox* ) GetDlgItem( IDC_TRACKS ); CSpurenSet sect( &pDoc->m_Database ); CString SqlString; SqlString.Format( "SELECT * from Spuren WHERE AufnahmeNr = %d ORDER BY Spuren.Spurnummer", m_pSet->m_AufnahmeNr); sect.Open(CRecordset::forwardOnly,SqlString,CRecordset::readOnly); p_LB->ResetContent(); CString aString; while( !sect.IsEOF() ) { p_LB->AddString( sect.m_Spurtitel ); sect.MoveNext(); } }Ich habe von SQL wenig bis keinen Plan. Weiß jemand was ich falsch mache?
-
Eines vorweg: Das SQL-Statement sieht okay aus.
Es gibt zwei Stellen, wo dir die Sortierung verloren gehen kann.
1.)
Du sortiert nach Spurnummer, fügst aber Spurtitel in deine Liste ein. Das sieht für mich seltsam aus.
2.)
Du hast vergessen (?), das automatische Sortieren der Listbox auszuschalten. Das ist ein gerne gemachter Fehler. Damit würden die Datensätze richtig sortiert aus der DB kommen und dann beim Einfügen in die Liste wieder anders sortiert werden.
-
Hi estartu_de,
vielen Dank für den Hinweis, es war tatsächlich die Listbox, da hätte ich auch mal selber dran denken können. Liegt wohl daran, daß ich das Teil sonst nie benutze.