Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi DBGrid: 1E-5 statt 0,00002 (https://www.delphipraxis.net/203022-dbgrid-1e-5-statt-0-00002-a.html)

NicoleWagner 4. Jan 2020 14:56

Datenbank: Firebird • Version: 2 • Zugriff über: FireDAC

DBGrid: 1E-5 statt 0,00002
 
Hallo Leute,

ich habe uralten Code, in dem etwas nicht stimmt. :pale:
Bin richtig raus, wie damals alles ging.

Doch der Reihe nach:
Ich habe eine Firebird-2-Tabelle, die ich mit FireDAC in Delphi XE3 einbette.
Eine ADQuery bzw. ein TDataSource verbindet ein DBGrid mit der DB-Abfrage.
So weit, so fein.

In diesem DBGRid hatte jetzt ein Feld den Wert 0,0001.
Aus gegebenem Anlass veränderte ich es auf 0,00002
Wer nicht zählen will: Im ersten Wert sind 4 Nachkommastellen, im zweiten Wert 5.
Mit einer alternativen Ansicht (FlameRobin) stellte ich fest, dass in der FB-Datenbank der Wert 0,00002 korrekt eingetragen ist. Er ist vom Typ Double Precision. Wie genau der in das DBGrid kommt, das weiß ich leider nicht mehr, uralter Code.
Vermutlich alles als default setting: Also ins neue DBGrid die Query eintragen und die Query auf "active" und die Werte sind da.

NUR - jetzt kommt das Problem: in meinem DBGrid steht jetzt "1E-5", dort wo vorher "0,0001" stand.
Was kann ich tun, dass dort "0,00002" angezeigt wird?

Danke allen, die sich auf die komplizierte Beschreibung eingelassen haben und noch mehr jenen, die mir raten können!

Nicole

Uwe Raabe 4. Jan 2020 15:15

AW: DBGrid: 1E-5 statt 0,00002
 
Gibt es für das entsprechende Feld eine statische Feld-Komponente?

NicoleWagner 4. Jan 2020 15:36

AW: DBGrid: 1E-5 statt 0,00002
 
In grauer Vorzeit hatte ich irgendwo Felder konfiguriert. In diesem DBGrid oder in einem der vielen anderen?
Da gab es wo "fields" und dort trug ich etwas ein. Doch wo?
Ich klickte wohl eine halbe Stunde durch, doch fand nichts. Da sind leider hunderte Parameter und Menüs.
Jedenfalls: Weder im Query- noch im Spalteneditor ist etwas eingetragen.

Wenn ich ein neues DBGrid anlege und damit die Query verbinde, steht dort jedenfalls ebenfalls der Fehlerwert oder die altenative Zahlenschreibweise statt meines 5-Nachkommastellenwerts.

Was eine "statische Feld-Komponente" ist, *erröt*, weiß ich nicht mehr.


Nicole

stifflersmom 4. Jan 2020 15:39

AW: DBGrid: 1E-5 statt 0,00002
 
Hast Du schon mal eien Doppelklick auf Deine Query- bzw. Tablekomponente gemacht?
Da würdest Du dann Feldformatierungen finden können.
Alternativ könntest Du auch das Formular in der Textansicht nach Deiner Formatierung durchforsten.

NicoleWagner 4. Jan 2020 18:37

AW: DBGrid: 1E-5 statt 0,00002
 
Leider nein, alles negativ.
Weder im Formular als Textansicht ist es konfiguriert noch Doppelklicks auf ADQuery oder DataSource oder DBGrid zeigen eine Einstellung.

Ich bin nicht mal sicher, ob die Einstellung ein Formatierungsproblem ist.
Schon die Ausgabe kann ja zweierlei sein: Entweder eine Fehlermeldung (sie steht so in keiner Tabelle!) oder aber die Anzeige "5" für 5 Nachkommastellen.

Das Problem kann also sein die Formatierung der Dezimalzahl oder aber ein Typumwandlung die nur 4 Stellen erlauben würde.
Allerdings welche wäre es? Double sollte das umfassen und die DBGrid genau die Query ausgeben.
Ich postete ja hier, weil ich mit meiner Weisheit am Ende bin.

Oder es wären nur 4 Stellen erlaubt, weil die Spalten zu schmal würden. Wo aber wären die so eng eingestellt? Es bleibt mir ein Rätsel.

und Hinweis: Da ist keine Tablekomponente. Ich verbinde TADQuery mit DataSource bzw. TDBGrid. Also keine TDBTable.

jobo 4. Jan 2020 19:04

AW: DBGrid: 1E-5 statt 0,00002
 
Du könntest mal aus Spaß andere Werte eintragen, z.B.
Null
1
2
-1
0.1
0.02
0.003
0.0004

Und schauen, was es mit dem E auf sich hat. (Ein Fehler ist es wohl nicht, außer jemand hat sich viel Mühe gegeben und einen Konvertierungsfehler in der Form zur Anzeige gebracht)

blawen 4. Jan 2020 21:39

AW: DBGrid: 1E-5 statt 0,00002
 
Zitat:

Zitat von NicoleWagner (Beitrag 1454423)
NUR - jetzt kommt das Problem: in meinem DBGrid steht jetzt "1E-5", dort wo vorher "0,0001" stand.

Bist Du sicher, dass nicht eine "0" fehlt? -> 0.0001 vs. 0.00001

"1E-5" erinnert mich irgendwie an "Enter Exponent" -> (1 * 10^-5)

Uwe Raabe 4. Jan 2020 22:05

AW: DBGrid: 1E-5 statt 0,00002
 
Zitat:

Zitat von NicoleWagner (Beitrag 1454431)
Ich postete ja hier, weil ich mit meiner Weisheit am Ende bin.

Kannst du ein minimales Beispielprojekt mitsamt SQL zum Erzeugen der Datenbank hier anhängen?

Eventuell kommst du beim Aufsetzen eines solchen Projekts ja selbst auf die Ursache.

hstreicher 5. Jan 2020 07:52

AW: DBGrid: 1E-5 statt 0,00002
 
Wie ist das Feld in der Datenbank definiert ? evtl begrenzt das ja die Nachkommastellen die abgespeichert werden

mfg Hannes

stifflersmom 5. Jan 2020 14:44

AW: DBGrid: 1E-5 statt 0,00002
 
Vielleicht eine vergessene(s) "drittparty" Komponente/Tool...
Ich glaube bei gexpert konnte/kann man Preferences für Komponenten einstellen, die dann für jedes Mal gelten, wenn kompiliert wird. Z.B. das Setzen der Connect-Eigenschaft auf false, damit man zur Porgrammierzeit immer Daten in den Formularen sehen kann, aber zur Laufzeit dann irgendwelcge Benutzereinstellungen zur Konnektivität vorher geladen wedren sollen.

p80286 5. Jan 2020 21:50

AW: DBGrid: 1E-5 statt 0,00002
 
Schau mal nach, eine Deiner Komponenten (TDataSet/TQuery) sollte ein DisplayFormat haben.
Dort trägst du dann das gewünsche Format ein und statt 1e-5 wird 0,00001 angezeigt.

Gruß
K-H

NicoleWagner 7. Jan 2020 11:03

AW: DBGrid: 1E-5 statt 0,00002
 
Liste der Anhänge anzeigen (Anzahl: 2)
Danke allen, die geanwortet haben.
Leider ist die Spur noch etwas kühl. Mittlerweile fand ich im "Query"-Editor einen Tab Options, siehe Screenshot.
Dort steht eine Ziffer "4". Wofür sie steht, weiß ich nicht. Das Ausbessern von 4 auf 5 ändert leider nichts.
Hat jemand eine Idee, was man dort einstellen kann?
Alle Settings sollten auf default sein.

im Detail:
@ K-H
die heißeste Spur. So etwas vermute ich. Doch ich weiß nicht, "wo" ist es eintragen könnte. Es sind hunderte Einstellungen mit Untermenues. Oder aber der eben entdeckte Editor. Doch auch dort finde ich nichts, was mir klar wäre als Setting. (Screenshot 1)

@stifflersmom
Ebenfalls eine sehr sinnvolle Idee. Doch gexpert habe ich nicht. Tatsächlich finde ich so ein Einstellungsfeld auch in FireDAC, doch nichts, was ich dort tun könnte, das das Verhalten ändert. (Screenshot 2). Kennt jemand FireDAC oder diese Art der Einstellungen?

@hstreicher
Gute Idee, doch schon in der Frage behandelt

@Uwe Raabe Minimalbeispiel: Ich habe FireDAC, Delphi XE 3, Firebird und FlameRobin. Du auch? - eben.

@blawen
Was Du mit der fehlenden Null meinst, verstehe ich nicht. Und ja, mich erinnert es auch an Exponent. Es kann also sowohl eine Fehlermeldung (E=Error) sein als auch eine Schreibweise (E=Exponent). Ich tippe auf Exponent, weil Fehlermeldungen ein anderes Format haben.

@jobo
Es hakt dort, wo die 5. Nachkommastelle eingetragen werden soll. Die DB ist voll mit anderen Werten. Jeder Wert mit bis zu 4 Stellen ist ok.

jobo 7. Jan 2020 11:51

AW: DBGrid: 1E-5 statt 0,00002
 
Wie meinst Du das mit dem Minimalbeispiel. Es ist gängige Praxis sowas im Problemfall zu liefern.
Deine Bilder zeigen, dass Du nicht ganz auf der richtigen Spur bist. Ein Connection Dialog ist noch etwas weit entfernt vom Ergebnis einer Query. Die Einstellungen dort haben nur generellen Charakter und werden evtl. tiefer liegend überschrieben.

Ich habe keine aktuellen Delphiversionen, deshalb nur der Hinweis:
Mache einen Doppelklick auf die Querykomponente selbst. Damit erhälst Du Zugriff auf den Spalteneditor, dort kannst Du für jedes Feld einzeln Formatangaben etc. machen.

Die daraus resultierenden Properties landen in den Formulardaten, dort kannst Du sie auch mit einem Klick finden und sogar ändern.

p80286 7. Jan 2020 14:05

AW: DBGrid: 1E-5 statt 0,00002
 
Zitat:

Zitat von NicoleWagner (Beitrag 1454521)
.

@jobo
Es hakt dort, wo die 5. Nachkommastelle eingetragen werden soll. Die DB ist voll mit anderen Werten. Jeder Wert mit bis zu 4 Stellen ist ok.

Ich weiß jetzt nicht wo Du etwas eintragen willst. Meiner Meinung nach bietet sich "Default Field Options - Numeric Display" für Deine Zwecke an.

Gruß
K-H

jobo 7. Jan 2020 14:22

AW: DBGrid: 1E-5 statt 0,00002
 
Vermutlich meint mehr "..dann, wenn .. " resp. "sobald", weniger " dort, wo".

Und wie gesagt, ~"Default Field Formats" bwz. ".. Options " wären vielleicht die Lösung, wenn nicht bereits auf Einzelfeldebene andere Eigenschaften definiert sind.

NicoleWagner 7. Jan 2020 14:25

AW: DBGrid: 1E-5 statt 0,00002
 
kann man nicht ausschließen.

Hast Du auch Ideen, WAS ich dort eintrage?
0,######
oder irgendetwas in der Art?
Doch was genau? Oder einen Code?
Leider poppt keine Hilfe aus.

Bzw. bist Du Dir SICHER, dass ich es dort eintrage?
Diverse Versuche meiner schlugen nämlich fehl.
Kennt irgend jemand hier FireDAC gut?
Leider ist vieles nicht so offensichtlich, wie es aussieht.

p80286 7. Jan 2020 14:53

AW: DBGrid: 1E-5 statt 0,00002
 
Jo, ist nicht ganz offensichtlich! Versuch es mal hiermit:http://www.delphibasics.co.uk/RTL.asp?Name=FormatFloat

Gruß
K-H

P.S.
Jetzt weiß ich wieder warum ich diese Datensensitiven Komponenten meide wie er Teufel das Weihwasser.

jobo 7. Jan 2020 15:46

AW: DBGrid: 1E-5 statt 0,00002
 
Mal so ganz grundsätzlich:

Es geht weniger um Ideen, als um Verständnisgewinn. Hilfreich dabei ist präzise Ausdrucksweise. "schlägt fehl" sagt dabei bspw. so gut wie nichts aus, es kommt eine Fehlermeldung? Es hat keine Wirkung? Es kompiliert nicht? Man kann es gar nicht eintragen?
Alles wäre vielleicht easy, wenn Dir jemand über die Schulter schaut und sehen könnte, was schief geht.

TFields sind im übrigen nicht Firedac spezifisch und es ist zunächst nicht wichtig, wie gut man sich damit auskennt.

Hilfe popt bspw. im Internet auf, hier gibt es eine Beschreibung der Formatmaskenbestandteile:
http://docwiki.embarcadero.com/Libra....DisplayFormat

NicoleWagner 7. Jan 2020 16:10

AW: DBGrid: 1E-5 statt 0,00002
 
@jobo
bingo!
Danke Dir und allen anderen!

So lautet die komplette Lösung für:

Zeige mit einer FireDAC Abfrage 5 Nachkommastellen in einer datensensitiven Delphi-Komponente:

- Doppelklick auf TADQuery
- öffnet einen Editor
- der 4. Tab = ganz rechter Tab ist "Options"
- unter 'default file formats' gibt es
- 'Numeric display'
- dort half der Eintrag '0.#####' (Man beachte den Punkt! Ein Komma klappte nicht)

Vorher war dort ein leeres Feld, es war nichts konfiguriert.
Daraus schließe ich, dass der default Eintrag für 4 Kommastellen gesetzt wird und danach die Anzeige mit "E" für Exponent erfolgt.


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