collapse

* Benutzer Info

 
 
Willkommen Gast. Bitte einloggen oder registrieren. Haben Sie Ihre Aktivierungs E-Mail übersehen?

* Wer ist Online

  • Punkt Gäste: 58
  • Punkt Versteckte: 2
  • Punkt Mitglieder: 8
  • Punkt Benutzer Online:

* Forenstatistik

  • stats Mitglieder insgesamt: 13804
  • stats Beiträge insgesamt: 63512
  • stats Themen insgesamt: 8606
  • stats Kategorien insgesamt: 5
  • stats Boards insgesamt: 16
  • stats Am meisten online: 415

Autor Thema: ORDER BY sortiert alphanumerisch  (Gelesen 191 mal)

Offline gilles_de_rais

  • Access-User
  • *
  • Beiträge: 54
ORDER BY sortiert alphanumerisch
« am: November 16, 2017, 16:11:32 »
Hallo,

sicher ganz einfach, ich finde die Lösung - die ja eigentlich nicht schwer sein kann - nicht.

Und zwar habe ich ein abhängiges Kombi, das Kalenderwochen enthält. Diese sind leider alphanumerisch (also 1, 10, 12, 2) sortiert. Wie bekomme ich es hin, dass numerisch (also 1, 2, 3) aufgelistet wird? ORDER BY hilft hier ohne weiteren Zusatz nicht viel weiter.

VG
Dennis
 

Offline MzKlMu

  • Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 6940
Re: ORDER BY sortiert alphanumerisch
« Antwort #1 am: November 16, 2017, 16:18:44 »
Hallo,
...Order By CInt(Kalenderwochen)
Wenn die Kalenderwochen von einem Datum abgeleitet werden, kannst Du auch das Datum zum Sortieren verwenden.

Wie kommst Du auf die Kalenderwochen als Text ?
Gruß
Klaus
 
Folgende Mitglieder bedankten sich: gilles_de_rais

Offline gilles_de_rais

  • Access-User
  • *
  • Beiträge: 54
Re: ORDER BY sortiert alphanumerisch
« Antwort #2 am: November 16, 2017, 16:35:09 »
Hi,
nein, habe die Kalenderwochen nicht als Text, aber SELECT DISTINCT zuvor angewendet, weshalb ich nicht sortieren kann.

Lasse ich DISTINCT weg, kann ich in der Tat sehr gut via Datum sortieren.
 

Offline gilles_de_rais

  • Access-User
  • *
  • Beiträge: 54
Re: ORDER BY sortiert alphanumerisch
« Antwort #3 am: November 16, 2017, 16:37:19 »
Vielleicht liegt es auch daran, dass ich die abhängigen Kombis Ihre Daten alle aus einer einzigen Abfrage beziehen lasse.

Mein Code sieht wie folgt aus. Hier allerdings mit Monatsnamen und nicht mit Kalenderwochen. Trotzdem die gleiche Problematik:

Private Sub cboJahr_AfterUpdate()
strSQL = " SELECT DISTINCT wart_monnam FROM qryWartungen " & _
          " WHERE wart_jahr = " & Nz(Me.cboJahr, 0) & _
          " ORDER BY wart_datum "
         
strSQL1 = "SELECT bahn_name, wart_jahr, wart_kw, wart_monnam, aus_art " & _
          "FROM qryWartungen WHERE wart_jahr = " & Nz(Me.cboJahr, 0) & _
          "AND bahn_id = " & Nz(Me.cboBahnen, 0)

cboMonat.RowSourceType = "Table/Query"
cboMonat.RowSource = strSQL

lstWartungen.RowSourceType = "Table/Query"
lstWartungen.RowSource = strSQL1
End Sub
 

Offline MzKlMu

  • Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 6940
Re: ORDER BY sortiert alphanumerisch
« Antwort #4 am: November 16, 2017, 16:48:18 »
Hallo,
im gezeigten Code gibt es keinen Hinweis wie die Monatsnamen (bzw. KW) entstehen undd as war ja die Frage.

Aber sortiere wie gesagt nach nur dem Datum dann stimmt auch KW und Monat automatisch. Sowohl Monat und KW sind ja genau so aufsteigend wie das Datum.
Gruß
Klaus
 

Offline gilles_de_rais

  • Access-User
  • *
  • Beiträge: 54
Re: ORDER BY sortiert alphanumerisch
« Antwort #5 am: November 16, 2017, 17:00:28 »
Hallo,

Monatsnamen und KW entstehen mittels
wart_monnam: Format(DatSeriell(1;ZInteger([wart_monat]);1);"mmmm")und
wart_kw: Format([wart_datum];"ww";1;1)in der Abfrage.

Ich habe zusätzlich wart_monat: Monat([wart_datum]) in der Abfrage. NAch Anpassung des Codes klappt die Sortierung nach Monatsnamen auch mit DISTINCT.

Private Sub cboJahr_AfterUpdate()
strSQL = " SELECT DISTINCT wart_monnam, wart_monat FROM qryWartungen " & _
          " WHERE wart_jahr = " & Nz(Me.cboJahr, 0) & _
          " ORDER BY wart_monat "
         
strSQL1 = "SELECT bahn_name, wart_jahr, wart_kw, wart_monnam, aus_art " & _
          "FROM qryWartungen WHERE wart_jahr = " & Nz(Me.cboJahr, 0) & _
          "AND bahn_id = " & Nz(Me.cboBahnen, 0)

cboMonat.RowSourceType = "Table/Query"
cboMonat.RowSource = strSQL

lstWartungen.RowSourceType = "Table/Query"
lstWartungen.RowSource = strSQL1
End Sub

Ich nehme an, ähnlich wird es dann auch mit Kalenderwochen klappen.

Vielen Dank für Deinen Rat!
 

Offline MzKlMu

  • Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 6940
Re: ORDER BY sortiert alphanumerisch
« Antwort #6 am: November 16, 2017, 17:25:14 »
Hallo,
mit den KW geht das nicht.
Wie es mit den KW geht hatte ich in #1 schon geschrieben.

Übrigens, wenn Du die europäischen KW brauchst ist Deine Formel falsch.
Das wäre dann so:
Format([wart_datum];"ww";2;2)
Gruß
Klaus
 

Offline ebs17

  • Access-Meister
  • ***
  • Beiträge: 819
Re: ORDER BY sortiert alphanumerisch
« Antwort #7 am: November 16, 2017, 18:07:21 »
Die Formatfunktion erzeugt Text, DatePart mit vielen identischen Möglichkeiten gleich eine Ganzzahl.

Für höhere Ansprüche wird man dann mit einer Kalendertabelle oder entsprechenden Abwandlungen, die unmittelbar Monate, Kalenderwochen usw. liefern, arbeiten wobei man auch dort auf Ganzzahlen orientieren wird, schon weil Zahlen schneller verarbeitet werden als gleichartige Texte.
Mit freundlichem Glück Auf!

Eberhard
 

Offline gilles_de_rais

  • Access-User
  • *
  • Beiträge: 54
Re: ORDER BY sortiert alphanumerisch
« Antwort #8 am: November 17, 2017, 09:05:38 »
Hallo,
sortieren nach Datum funktioniert glaube ich nicht, da ich zuvor DISTINCT angewendet habe. Das ist mein Problem. Dass FORMAT Text ausgibt, wusste ich beispielsweise nicht. Guter Hinweis.

Ich gucke mir die Sache nochmal genau unter Berücksichtigung Eurer Hinweise an und löchere Euch ggf. danach nochmal.

Bis hier schon einmal recht herzlichen Dank!
 

Offline gilles_de_rais

  • Access-User
  • *
  • Beiträge: 54
Re: ORDER BY sortiert alphanumerisch
« Antwort #9 am: November 17, 2017, 09:21:39 »
Prima! DatTeil war des Rätsels Lösung. Für die Zukunft werde ich mir dann wohl eher diesen Befehl näher ansehen müssen.

Was genau ist mit Kalendertabelle gemeint?

Viele Grüße,
Dennis
 

Offline ebs17

  • Access-Meister
  • ***
  • Beiträge: 819
Mit freundlichem Glück Auf!

Eberhard
 
Folgende Mitglieder bedankten sich: gilles_de_rais

Offline astropfr

  • Newbie
  • Beiträge: 3
  • Rentner, der das Programmieren nicht lassen kann
Re: ORDER BY sortiert alphanumerisch
« Antwort #11 am: Dezember 10, 2017, 01:17:57 »
Wenn ich Zahlen, die als Text gespeichert sind, numerisch sortieren will, wie hier z.B. Kalenderwochen, dann muss ich nur dafür sorgen, dass die Werte 2-stellig sind: so z.B. KW_ergänzt = Right("00" & KW, 2)
KW_ergänzt kann nun numerisch sortiert werden.
Oder als SQL in Jet-SQL: ORDER BY Right("00" & [KW]; 2) ASC
 

Online DF6GL

  • Global Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 23091
Re: ORDER BY sortiert alphanumerisch
« Antwort #12 am: Dezember 11, 2017, 12:49:20 »
Hallo,

oder gleich richtig zu numerisch konvertieren:

ORDER BY Clng([KW]) ASC
ORDER BY Val([KW]) ASC

Offline ebs17

  • Access-Meister
  • ***
  • Beiträge: 819
Re: ORDER BY sortiert alphanumerisch
« Antwort #13 am: Dezember 11, 2017, 13:56:11 »
Zitat
Wenn ich Zahlen, die als Text gespeichert sind, numerisch sortieren will
Was ist der besondere Grund, Zahlen als Text zu speichern?
Blödsinn, den man nicht macht, muss man nicht behandeln.
=> Zahlen kann der Rechner einfacher und schneller verarbeiten als Texte, vergleiche Binärsystem, auf dem der ganze Kram beruht und das man in der Schule schon mal kennengelernt haben dürfte.
=> Eine Sortierung auf ein pures Feld (ohne Berechnung) könnte einen Index benutzen und somit deutlich schneller laufen.

So sieht es aber bedeutsamer aus und läuft angemessen länger. Das sind auch Werte ...
Mit freundlichem Glück Auf!

Eberhard