Autor |
Beitrag |
COMMANDER86
      
Beiträge: 167
Win XP, Win Vista
D3 Prof., D7 Pers., Lazarus
|
Verfasst: Fr 14.10.05 17:04
Hallo.
Ich habe eine Paradox-Tabelle in der Werte im Währungsformat eingetragen werden. Das Problem ist, dass die Werte problemlos ausgegeben werden, allerdings kann ich Sie nicht wirklich verrechnen. Wie kann ich zwei oder mehr Werte im Währungsformat verrechnen? StrToFloatF usw. tut's nicht!
Mit Dank im Voraus
COMMANDER86
_________________ Streichen Sie bitte sämtlichen Sarkasmus aus vorhergehender Nachricht. Dann wissen Sie, was ich sagen möchte. Meine Lösungen sind die vermutlich Umständlichsten, aber sie funktionieren (bei mir).
|
|
alzaimar
      
Beiträge: 2889
Erhaltene Danke: 13
W2000, XP
D6E, BDS2006A, DevExpress
|
Verfasst: Sa 15.10.05 09:46
Was siehst Du denn, wenn Du z.B. das hier machst:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7:
| Var a : Double;
Begin a := MyParadoxCurrencyField.AsFloat; showmessage (FormatFloat ('#0.0000',a)); End; |
_________________ Na denn, dann. Bis dann, denn.
|
|
Heiko
      
Beiträge: 3169
Erhaltene Danke: 11
|
Verfasst: Sa 15.10.05 10:52
Oder nimm nur Format. Das dürfte eigentlich funktionieren.
|
|
alzaimar
      
Beiträge: 2889
Erhaltene Danke: 13
W2000, XP
D6E, BDS2006A, DevExpress
|
Verfasst: Sa 15.10.05 10:58
Er meint, er kann damit nicht rechnen. Wenn bei FormatFloat oder Format oder FloatToStr oder egal was irgendetwas sinnvolles rauskommt, dann kann er auf die ParadoxCurrency Felder zugreifen. Wenn nicht, würde ich ihm einen 'Parser' vorschlagen. Na, eine kleine Funktion, die aus dem Währungsstring eine Zahl macht.
_________________ Na denn, dann. Bis dann, denn.
|
|
COMMANDER86 
      
Beiträge: 167
Win XP, Win Vista
D3 Prof., D7 Pers., Lazarus
|
Verfasst: So 16.10.05 13:04
Sry.... aber ich habe das jetzt voll nicht gerafft! Wenn ich bspw.:
Delphi-Quelltext 1:
| Edit1.text:=FloatToStrF(StrToFloat(DBEdit1.text)+StrToFloat(DBEdit2.text),fffixed,20,2); |
mache funktioniert das, wenn ich die Tabellenspalte als "alpha" oder "numerisch" deklariere. Wenn ich das Währungsformat nehme, tut das den Teufel.
Ich möcht nur wissen, ob ich in der Berechnung was ändern muss, oder ob der Befehl falsch ist.
Danke, mfG
COMMANDER86
_________________ Streichen Sie bitte sämtlichen Sarkasmus aus vorhergehender Nachricht. Dann wissen Sie, was ich sagen möchte. Meine Lösungen sind die vermutlich Umständlichsten, aber sie funktionieren (bei mir).
|
|
alzaimar
      
Beiträge: 2889
Erhaltene Danke: 13
W2000, XP
D6E, BDS2006A, DevExpress
|
Verfasst: So 16.10.05 13:32
Wieso gehst du über die Text-Eigenschaft des DBEdit-Controls, und nicht einfach über den Feldinhalt?
Du hast eine Tabelle T. Jede Tabelle (TDataset) hat einen Datensatzzeiger, der zeigt auf den aktiven Datensatz. Die datensensitiven Controls (TdbEdit etc.) beziehen ihre Information aus dem TDataset und stellen das jeweils aktuelle Element dar.
Über DBEdit.Text greifst Du doch auf die textuelle Repräsentation des Feldes zu. Wenn Du z.B. ein TCurrencyField hast, und hast z.B. eingestellt, die Währung mit anzuzeigen, dann ist DBEdit.Text = '123,00 €', oder nicht? Daraus eine Floatzahl zu machen, geht eben mit StrToFloat nicht.
Versuche, die Felder direkt zu verwenden. Du kannst Dir die Felder persistent erzeugen, indem Du auf die Tabelle rechtsklickst und über den 'Field-Editor', den Menüpunkt 'Add all Fields' (in deutsch weiss ich nicht, wie das heisst).
_________________ Na denn, dann. Bis dann, denn.
|
|
COMMANDER86 
      
Beiträge: 167
Win XP, Win Vista
D3 Prof., D7 Pers., Lazarus
|
Verfasst: So 16.10.05 23:17
Puh.... kann man denn das "€" ausblenden, die Zahl verrechnen und wieder einblenden? Und mal unter uns: Was sind "Datensatzzeiger" und "datensensitive Controls"? Ich denke ich sollte nichts verwenden, was ich nicht kenne, sonst verlier ich den Überblick... (Watt der Buur nit kennt, datt frisst er net!)
MfG
COMMANDER86
_________________ Streichen Sie bitte sämtlichen Sarkasmus aus vorhergehender Nachricht. Dann wissen Sie, was ich sagen möchte. Meine Lösungen sind die vermutlich Umständlichsten, aber sie funktionieren (bei mir).
|
|
alzaimar
      
Beiträge: 2889
Erhaltene Danke: 13
W2000, XP
D6E, BDS2006A, DevExpress
|
Verfasst: So 16.10.05 23:48
Datensensitive Controls ist ein TDBEdit, TDBGrid etc. Alle Edits, die mit einer Datasource verbunden sind.
Stell Dir ein TDataset als Tabelle vor, und der Datensatzzeiger zeigt auf den aktuellen Datensatz, also das, was Du im TDBEdit siehst.
Rechne einfach mit den Feldern. Wenn Du das nicht kennst, such nach Tutorials hier. Davon gibt es reichlich. Es ist sehr wichtig für gutes Programmieren, die Philosphie der Datasets, Felder etc. zu verstehen.
_________________ Na denn, dann. Bis dann, denn.
|
|
|