Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Kombinationsfeld ist nicht sortiert

Begonnen von accessy, Dezember 02, 2012, 19:22:18

⏪ vorheriges - nächstes ⏩

accessy

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?

ebs17

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 Name

MfGA
ebs
Mit freundlichem Glück Auf!

Eberhard

DF6GL

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

MzKlMu

Hallo,
und noch der dringende Rat, verzichte auf ein Feldname "Name", das führt zu großen Problemen, auch wenn das [] Klammerpaar verwendet wird.
Gruß Klaus

accessy

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

accessy

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.....

MzKlMu

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.
Gruß Klaus

DF6GL

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.)