In meinem Formular gibt es ein Kombinationsfeld, das nur eine Spalte enthält.
Die Spalte enthält eine Liste mit Namen.
Obwohl die ABFRAGE der Tabelle Partner das Feld für die ComboBox sortiert,
wird nach Öffnen der Combo diese nach Partner.ID sortiert.
In der Datensatzherkunft steht
SELECT Partner.ID, Partner.Name FROM Partner;
In der Ereignisprozedur habe ich die Aktualisierung der Liste.
Das sieht dann so aus:
Private Sub Kombinationsfeld43_GotFocus() 'Liste immer gleich aktualisieren
Me.Kombinationsfeld43.Requery
End Sub
Was kann ich machen, oder muss ich ändern, damit dieses Feld sortiert wird und nicht die ID?
ZitatKombinationsfeld, das nur eine Spalte enthält
vs.
In der Datensatzherkunft steht
SELECT Partner.ID, Partner.Name FROM Partner;
Ein wenig musst Du noch an Deiner Übersicht arbeiten: ID und Name, das macht zwei Felder, auch wenn vielleicht nur eines sichtbar gestellt wurde.
Eine Sortierung in der Tabelle ist für aufbauende Abfragen i.d.R. egal. Es wird dann die physische Sortierung der Tabelle hergenommen, die sich aus dem Primärschlüssel der Tabelle ableitet, und das dürfte die ID sein.
Wenn Du eine explizite Sortierung wünschst, musst Du sie in der Abfrage angeben:
SELECT ID, Name FROM Partner ORDER BY NameMfGA
ebs
Hallo,
ZitatObwohl die ABFRAGE der Tabelle Partner das Feld für die ComboBox sortiert,
???
Deine Abfrage sortiert doch nicht...
So wird sortiert:
SELECT Partner.ID, Partner.[Name] FROM Partner order by [Name];
Private Sub Kombinationsfeld43_Enter()
Me.Kombinationsfeld43.Requery
End Sub
Hallo,
und noch der dringende Rat, verzichte auf ein Feldname "Name", das führt zu großen Problemen, auch wenn das [] Klammerpaar verwendet wird.
Okay Leute,
ich danke für den Hinweis mit der Sortierung...... order by [Name];.......
Ich habe es geändert und eingebaut.
Weiterhin habe ich auch gleich in den Tabellen alle Feldnamen NAME auf NACHNAME geändert,
um Fehler mit Datenfeldnamen und VBA Befehlen wie .NAME zu verhindern.
Danke euch allen für die Antworten......
Gruß Achim
Ich muss nochmal an FRANZ was fragen.
Du schreibst in deiner Antwort, dass meine Abfrage nicht sortiert.
Das verstehe ich nicht.
In der Abfrage kann ich doch bei Sortierung Auf- oder Abwärts festlegen und dann speichern.
Oder habe ich dich total missverstanden mit deiner Aussage
Zitat
Deine Abfrage sortiert doch nicht.....
Hallo,
ZitatIn der Abfrage kann ich doch bei Sortierung Auf- oder Abwärts festlegen und dann speichern.
Ja, schon, aber erst über Order by ist es dauerhaft und zuverlässig festgelegt.
Hallo,
vermutlich reden wir von zwei unterschiedlichen Sachen:
im Abfrage-ENTWURF kann eine Sortierung(sregel "auf-/absteigend") bei den jeweiligen Abfragespalten angegeben werden, die sich dann als "orderby" im Abfrage-SQL-Statement niederschlägt. Nicht zu verwechseln ist das mit der Angabe in "Sortiert nach" im Fenster "Abfrageeigenschaften", bei der
ACCESS nach Ausführen der Abfrage und Klick auf "Sortierung anwenden" im Kontextmenü die angebene Eigenschaft (auf den "Abfrage-Recordset") eben anwendet, d. h. erst dann danach sortiert.
Deine Angabe aber lautet:
ZitatIn der Datensatzherkunft steht
SELECT Partner.ID, Partner.Name FROM Partner;
d. h. das Kombifeld benutzt keinen gespeicherten Abfragenamen in seiner Datensatzherkunft, sondern ein SQL-Statement (SQL-String) , den man bei laxer Diskussion halt fälschlicherweise auch "Abfrage" nennt, und der in diesem Fall eben keine OrderBy- Klausel besitzt.
(Wenn man es ganz genau nimmt, wird dieser SQL-String allerdings trotzdem als interne "Abfrage" in einer der Systemtabellen abgelegt, ist jedoch für den User normalerweise nicht sichtbar.)
Weitere Hinweise zu Sortierung und auch "Vererbung" ist in der Access/VBA-Hilfe unter"OrderBy" zu finden.
(Schreibmarke (Cursor) in das Feld "Sortiert nach" in den Abfrageeigenschaften im Abfrageentwurf setzen und F1 drücken.)