Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Nur 4 Kommastellen bei der Anzeige? (https://www.delphipraxis.net/56781-nur-4-kommastellen-bei-der-anzeige.html)

Tau 11. Nov 2005 01:10

Datenbank: MSDN • Version: 2000 • Zugriff über: ADO

Nur 4 Kommastellen bei der Anzeige?
 
Hallo Leute

kann mir einer folgendes erklären.

Warum im SQL-Server in der spalte 6,55957 (decimal(18,6))steht kann und ich in
der Anzeige nur 6,5596 (DBText, DBGrid DBEdit usw.) herausbekomme.

Das ist mir ein Rätsel. Kann es an der Adokomponente von Delphi oder am Windows liegen?

ich Stehe hier echt auf dem schlauch.

HILFE :wall: :wall: :wall:


Tau
:hi:

Hansa 11. Nov 2005 02:12

Re: Nur 4 Kommastellen bei der Anzeige?
 
hehe, Datenbank MSDN. 8) Also da ist eine Datenbank. Und dann noch ein DBEdit. Wo kriegt das die anzuzeigenden Daten her ? Von einer Datasource. Und wie kriegt die sie aus der DB ? Logisch : mit einem Dataset. Und da hast Du nicht gesagt, welches verwendet wird. Oder ist ADO ein Dataset ? :shock: Da liegt der Hund jedenfalls begraben.

Tau 11. Nov 2005 03:30

Re: Nur 4 Kommastellen bei der Anzeige?
 
Hallo Hansa

DataSet = TADOQuery

wieso sollte da der Hund begraben sein?

jetzt verstehe ich erst recht nur Bahnhof :gruebel:


Tau
:hi:

[Edit]PS: Wer Rechtschreibfehler findet darf sie auch behalten[Edit]

Hansa 11. Nov 2005 11:58

Re: Nur 4 Kommastellen bei der Anzeige?
 
Hab mal nachgeguckt. Zahlenformate kann das nicht. Dann wirst Du wohl persistente Gelder eingebaut haben. rechte Maustaste -> Feldeditor. Steht da was ?

Tau 11. Nov 2005 12:23

Re: Nur 4 Kommastellen bei der Anzeige?
 
Hallo Hansa

Der Feldeditor ist leehr er hat keine Felder drin.

Tau
:hi:

Tau 11. Nov 2005 12:58

Re: Nur 4 Kommastellen bei der Anzeige?
 
Hallo Hansa

Habe die Ursache gefunden für meine Probleme.

Ich lasse meine Feldwerte leer das ist das Problem. Delphi interpretiert den FeldType Decimal(18,6) als BCDFeld

Auszug aus der Delphi Hilfe

Zitat:

Die Funktion erstellt eine neue Variante, deren Wert intern als TBcd-Wert gespeichert wird.

Unit

FMTBcd

Kategorie

Variantenunterstützung

Delphi-Syntax:

procedure VarFMTBcdCreate(var aDest: Variant; const ABcd: TBcd); overload;
function VarFMTBcdCreate: Variant; overload;
function VarFMTBcdCreate(const ABcd: TBcd): Variant; overload;
function VarFMTBcdCreate(const AValue: string, Precision, Scale: Word): Variant; overload;
function VarFMTBcdCreate(const AValue: Double; Precision: Word = 18; Scale: Word = 4): Variant; overload;

C++ Syntax:

extern PACKAGE void __fastcall VarBcdCreate(Variant &aDest, const TBcd ABcd);
extern PACKAGE Variant __fastcall VarBcdCreate(void);
extern PACKAGE Variant __fastcall VarBcdCreate(const TBcd ABcd);
extern PACKAGE Variant __fastcall VarBcdCreate(const AnsiString AValue, Word Precision, Word Scale);

extern PACKAGE Variant __fastcall VarBcdCreate(const double AValue, Word Precision, Word Scale);

Beschreibung

Mit VarBcdCreate können Sie eine Variante erstellen, deren Wert als TBcd-Wert gespeichert wird.

Bei Verwendung der ersten Syntax hat die in aDest zurückgegebene Variante denselben Wert wie ABcd.

Bei Verwendung der zweiten Syntax (es werden keine Argumente übergeben), hat die zurückgegebene Variante den Wert NullBcd.

Bei Verwendung der dritten Syntax hat die zurückgegebene Variante denselben Wert wie ABcd.

Bei Verwendung der anderen Syntaxvarianten wird der Parameter AValue in einen TBcd-Wert mit der angegebenen Genauigkeit (Precision) und Anzahl Dezimalstellen (Scale) konvertiert. Das Ergebnis wird der Variante als Wert zugewiesen.
Besonders der Letzte Absatz ist interessant.

Zitat:

function VarFMTBcdCreate(const AValue: Double; Precision: Word = 18; Scale: Word = 4): Variant; overload;
und
Zitat:

Bei Verwendung der anderen Syntaxvarianten wird der Parameter AValue in einen TBcd-Wert mit der angegebenen Genauigkeit (Precision) und Anzahl Dezimalstellen (Scale) konvertiert. Das Ergebnis wird der Variante als Wert zugewiesen.[/
Jetzt meine Frage wie kann ich mein Problem mit so wenig wie möglich Aufwand ändern. (~800 TADOQuery) :pale:


schöne Grüsse
Tau
:hi:


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:15 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