PDA

Vollständige Version anzeigen : 2 und 3-stellige Zahlen


TautriaDelta
22.09.2001, 21:18
Hallo auch,

habe heute folgendes Problem.
Ich möchte in einem gefilterten FO die Daten durch Klick auf die Spaltenüberschriften sortieren lassen und benutze dazu folgenden Code:
Me.OrderBY = "Feldname"
Me.OrderByOn = True

Okay soweit, nur habe ich eine Spalte, die sich hervorragend zum sortieren eignet, diese enhält aber 2- und 3-stellige Zahlen, und Access interpretiert die Zahlen falsch, d.h. die 96 ist grösser als die 112 usw. Ich habe es auch schon mit der DESC-Anweisung probiert, aber dann funktioniert es auch nicht. Ich kann/darf/will aber keine führenden Nullen einführen.

Wie mache ich's nun denn (und dass ist für Jinx :-) ) die Online-Hilfe ist wirklich nicht aussagekräftig in diesem Punkt, dass die Zahlen im Format 32;48;64;96;112;128;160 usw. sortiert werden?

Ikke
22.09.2001, 21:57
Hi,
das Problem dürfte daher kommen, daß die Feldnamen als Text interpretiert werden, auch wenn da Zahlen drin stehen. Dann ist 20 nämlich "größer" 100, da die 2 nach der 1 kommt. Du mußt also entweder die "Texte" in Zahlen umwandeln und danach sortieren, oder alle Zahlen auf drei Stellen normieren (z.B. "020"), oder die Anzahl der Stellen in die Sortierung mit einbeziehen.
Ich hoffe, daß es geholfen hat! ;)

TautriaDelta
22.09.2001, 22:13
Du hast Recht, ich formatiere das Feld als Text, weil teilweise auch Text drin steht. Also wäre die einzige Möglichkeit, die Anzahl in die Sortierung mit einzubeziehen, nur weiss ich als Access-(noch-)Laie nicht, wie's geht...

Ikke
22.09.2001, 22:34
Ich hab's geahnt, daß diese Frage kommt, als ich die Bemerkung getippt hatte.... Naja ich hab' mir diese Suppe eingelöffelt....
Ich hatte gehofft, daß irgendein Makro- bzw. Anweisungs-Crack hier dann die geniale Idee hat, aber bis die kommt versuch ich es halt mal auf meine Art.
Auch wenn jetzt wieder einige stöhnen, weil ich wieder mit VBA anfange, aber da fällt mir eigentlich nur eine Lösung ein:
Erweiter Deine Tabelle um ein Feld (das ja nirgends ausgegeben zu werden braucht), das du z.B. Sort nennst.
Dann ersetzt Du Deinen Code durch die folgende Routine:
Dim aktuelleDB as Database, DAT as Recordset
Set aktuelleDB = CurrentDB
Set DAT = aktuelleDB.OpenRecordset("DeineAbfrage", dbOpenDynaset)
DAT.MoveFirst
Do While Not DAT.EOF
DAT.Edit
DAT!Sort = CDbl(DAT!Feld)
DAT.Update
DAT.MoveNext
Loop
Me.OrderBy = "Sort"
Me.OrderByOn = True
'Oder, wenn die Abfrage generell nach Sort sortiert ist, was Sinn macht
'Me.Requery

Ich habe diese Routine nicht ausprobiert, also könnten sich Tippfehler eingeschlichen haben, ausserdem schreibst Du, daß das Feld auch Text enthalten kann. Ich bin mir aber nicht sicher, wie die Cdbl-Anweisung reagiert, wenn Sie auf einen normalen Text angewendet wird. Vielleicht mußt Du hier also noch eine Sicherheit mit einfügen, wie z.B. On Error Resume Next, oder was in der Richtung.
Ich bin gespannt, ob das hinhaut!

TautriaDelta
22.09.2001, 22:40
Ich probier's aus, denke aber, es ist einfacher, eine führende Null in der Tabelle anzufügen und bei der Anzeige zu ignorieren.

Ikke
22.09.2001, 23:46
Das glaube ich auch! Ist schon dämlich, daß man Zahlen im Text nicht vernünftig sortiert bekommt! Da muß man leider tricksen, soweit ich es bislang weiß! :(

Chico
23.09.2001, 00:34
Hi TautriaDelta

vielleicht hilft Dir der folgende Link weiter: http://www.computerchannel.de/tipps/office/3005.phtml?fromsearch=1
Hier wird beschrieben, wie Du alphanumerisch
sortieren kannst.
Mit Gruß aus Berlin
Chico

WalterS
23.09.2001, 08:38
Hi Delta!

nimm einfach
Me.OrderBY = "val(Feldname)"
Me.OrderByOn = True

TautriaDelta
23.09.2001, 14:14
Danke, hat alles geklappt. Nur eine Frage noch: Wie sieht die Syntax für für den Befehl
ORDERON = "Feld" eigentlich aus, wenn ich nach mehreren Feldern sortieren möchte, denn dort versagt mir Access bisher seine Unterstützung. Ich habe - bis auf die richtige Lösung - nämlich schon alles erdenkliche probiert, es will nicht.

Hilfe, denn da sind noch ein paar Sortierungen, die auf 3 Feldern beruhen müssen, sonst sieht's vollkommen chaotisch aus.

WalterS
23.09.2001, 19:37
Hallo!

Also das geht so!
me.OrderBy= "Feld1, Feld2 DESC, Feld3"

Wobei durch Desc absteigend sortiert wird.

TautriaDelta
23.09.2001, 20:14
Nur so lernt man... dankeschön, jetzt läauft es so, wie ich's mir gedacht habe.