AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Währung in Stringfeld sortieren
Thema durchsuchen
Ansicht
Themen-Optionen

Währung in Stringfeld sortieren

Ein Thema von winnionkel · begonnen am 15. Mär 2007 · letzter Beitrag vom 15. Mär 2007
Antwort Antwort
winnionkel

Registriert seit: 9. Dez 2005
Ort: Roßlau
63 Beiträge
 
Delphi 7 Enterprise
 
#1

Währung in Stringfeld sortieren

  Alt 15. Mär 2007, 08:52
Datenbank: Access • Version: 7 • Zugriff über: ADO
Hallo,

ich habe folgendes Problem:

Ich habe in einem Stringfield Geldbeträge gespeichert.
Wenn ich diese nun sortieren möchte, stimmt die Sortierreihenfolge nicht.

Beispiel:

14,59
2,96
21,93
3,98

Wieso das so ist, ist mir klar, da es ein Stringfield ist.
Ich muß das aber so machen, da in dem Feld auch stehen kann: 'Auf Anfrage', oder ähnliches.

Frage:
Wie muß mein ORDER BY Statemnet aussehen ? ( ADO auf Access )

Gruß
Winni
Winfried
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Währung in Stringfeld sortieren

  Alt 15. Mär 2007, 09:05
...order by cast(feld as numeric(15,2)) ... Du solltest aber vorher die Textbeschreibungen ausblenden
Markus Kinzler
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#3

Re: Währung in Stringfeld sortieren

  Alt 15. Mär 2007, 09:08
Zitat von winnionkel:
Ich habe in einem Stringfield Geldbeträge gespeichert.
Wenn ich diese nun sortieren möchte, stimmt die Sortierreihenfolge nicht.

Wieso das so ist, ist mir klar, da es ein Stringfield ist.
Ich muß das aber so machen, da in dem Feld auch stehen kann: 'Auf Anfrage', oder ähnliches.
Es muss nicht unbedingt ein Stringfeld sein.

Alternative 1:
Du kannst auch ein Currency-Feld verwenden und ein spezielle Vereinbarung treffen:
-1.0 bedeutet "Auf Anfrage"
-2.0 bedeutet "nicht mehr lieferbar"
Im Event OnGetText des Felds wird in diesen Fällen die Zahl durch obigen Text ersetzt.
Die Benutzeroberfläche zeigt also etwas anderes an, als in dem Feld steht.
Alternative 2:
Du kannst auch ein zusätzliches Feld (z.B. ArtikelStatus) einführen.
Dieses Feld gibt an, ob der Geldbetrag gültig ist oder ob ein anderer Status gilt ("Auf Anfrage").
Das ist die sauberste Lösung, da man so den ArtikelStatus abfragen kann und z.B. über die Where-Bedingung einen Filter setzen kann.
Andreas
  Mit Zitat antworten Zitat
winnionkel

Registriert seit: 9. Dez 2005
Ort: Roßlau
63 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Währung in Stringfeld sortieren

  Alt 15. Mär 2007, 09:15
Hallo,

ich lese die Preislisten aus CSV Dateien ein.
In dem Währungsfeld kann alles mögliche stehen.
Z. B. auch ein Punkt oder Komma in einem Satz, sodas ich beim einlesen schlecht feststellen kann, ob das nun ein Preis ider eine Bemerkung ist.
Winfried
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Währung in Stringfeld sortieren

  Alt 15. Mär 2007, 09:37
Dann mußt du den Inhalt versuchen zu interpretieren. U.U. reicht ja Val()
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von yörsch
yörsch

Registriert seit: 10. Jan 2007
Ort: Lampertheim
206 Beiträge
 
Delphi XE2 Architect
 
#6

Re: Währung in Stringfeld sortieren

  Alt 15. Mär 2007, 09:48
Man nennt das natürliche Sortierung.

Siehe : Sortierung
Jörg
have FUN
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#7

Re: Währung in Stringfeld sortieren

  Alt 15. Mär 2007, 12:20
Zitat von winnionkel:
ich lese die Preislisten aus CSV Dateien ein.
In dem Währungsfeld kann alles mögliche stehen.
Dann hat der Ersteller der CSV-Datei nicht an die Maschinenlesbarkeit gedacht
bzw ihm war nicht bewusst, dass ein Feld nur einen Datentyp und nur eine Bedeutung haben soll.
(Stichwort: 1. Normalform)

Ich würde das Feld in 2 Felder aufsplitten, (ein Cuurency und ein Stringfeld) und den Inhalt jeweils
in das passende Feld übernehmen.
Die Parameter code der Procedure Val() sagt dir, ob es eine gültige Zahl oder ein String ist.
Andreas
  Mit Zitat antworten Zitat
winnionkel

Registriert seit: 9. Dez 2005
Ort: Roßlau
63 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: Währung in Stringfeld sortieren

  Alt 15. Mär 2007, 12:26
Das sind Preislisten von Internet - Shops.
Da hat jede Preisliste ein anderes Format.

Man weiß ja nicht, was die Programmierer sich gedacht haben,
als die den CSV Export gemacht haben

Und mein Kunde möchte jetzt nun mal, das die Bemerkungen auch im Preisfeld angezeigt werden.

Aber mit VAL() ist schon mal ne gute Idee.
Winfried
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:24 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz