Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Wie kann ich die Ausgabe ind Dbgrid manipulieren (https://www.delphipraxis.net/21428-wie-kann-ich-die-ausgabe-ind-dbgrid-manipulieren.html)

Reini64 2. Mai 2004 21:23


Wie kann ich die Ausgabe ind Dbgrid manipulieren
 
Guten Abend !

ich habe folgendes Problem:

ich habe eine Datenbank in dieser Datenbank habe das Feld "EK" als Einkaufpreis als Integer Beispiel: 1045 entspricht gleich 10,45. Die Datenbank soll auch so bleiben. Ich möchte nun aber das die DBGrid mir "10,45" anzeigt und nicht 1045.

Ich möchte aber kein SQL-Script verwenden, da die Abfragezeiten hierzu zulange sind. (400 000 Datensätze).
Wie kann ich das Steuern.

Gruß

Reini

fkerber 2. Mai 2004 21:26

Re: Wie kann ich die Ausgabe ind Dbgrid manipulieren
 
Hi!

Schau mal nach Hier im Forum suchenCopy
Dann kopierst du die ersten 2 Stellen, machst ein komma dazu und dann den Rest wieder dran.

So oder so ähnlich :oops:

Ciao fkerber

Reini64 2. Mai 2004 21:44

Re: Wie kann ich die Ausgabe ind Dbgrid manipulieren
 
der Wert soll mir in der dbgrid direkt angezeigt werden.
die Formatierung erfolgt erst bei der Übernahme, hier geht es ganz einfach um die Anzeige in der DBGrid

Gruß


Reini

woki 2. Mai 2004 21:51

Re: Wie kann ich die Ausgabe ind Dbgrid manipulieren
 
Hi,

schau Dir mal das Ereignis OnGetText der TField Komponente an.

Grüsse
Woki

Reini64 2. Mai 2004 22:13

Re: Wie kann ich die Ausgabe ind Dbgrid manipulieren
 
gibt es irgend wo ein Beispiel dazu ?

woki 2. Mai 2004 22:22

Re: Wie kann ich die Ausgabe ind Dbgrid manipulieren
 
ist mir nicht bekannt, aber du mußt nur aus der übergebnen Fieldkomponente den übergebenen Feldwert nehmen, und in Text den gewüschten Ausgabestring reinschreiben, d.h 1 Zeile Code.

Robert_G 2. Mai 2004 22:30

Re: Wie kann ich die Ausgabe ind Dbgrid manipulieren
 
Zitat:

Zitat von Reini64
Ich möchte aber kein SQL-Script verwenden, da die Abfragezeiten hierzu zulange sind. (400 000 Datensätze).

Na dann erkläre mir mal wie dein DBGrid an seine Daten kommt. ;)
Mit einem vernünftigen Abfrageplan (meist reichen Indizes für die Felder in der WHERE-Clause) sind 400.000 DS schneller da als sie dein Grid darstellen kann (auch auf einem HighEnd PC als Client).


Es gibt aber IMHO auch die Möglichkeit sog. "calculated Fields" anzulegen.
Frag's Pferd wie das genau funktioniert, ich persönlich kann das DBGrid nicht ausstehen und habe mich deshalb damit nicht befasst. Eine Suche in der OH sollte da erfolgsversprechend sein.

Reini64 2. Mai 2004 22:43

Re: Wie kann ich die Ausgabe ind Dbgrid manipulieren
 
Hallo Robert_G

womit gib's Du den die Daten zurück aus einer Table oder Query ?

woki 2. Mai 2004 22:45

Re: Wie kann ich die Ausgabe ind Dbgrid manipulieren
 
Hi,

Nochmal, sowohl für die Lösung dieser Aufgabe als auch für die calculated Fields ist nicht das DBGrid zuständig, sondern die TDataset-Komponente. Per Doppelclick auf die verwendete TDataset -Komponente kann man persistente Felder erzeugen, die dann wiederum das oben erwähnte Ereignis besitzen.

Das TDataset ist nebenbei bemerkt dann auch die Stelle an der man berechnete Felder hinzufügen kann.

@Robert_G: Ist es möglich, das Du dich entschieden hast, visuelle datensensitive Komponenten nicht zu mögen, bevor du sie richtig verstanden hattest?

Grüsse
Woki

Robert_G 2. Mai 2004 22:57

Re: Wie kann ich die Ausgabe ind Dbgrid manipulieren
 
@woki
Da liegst du wahrscheinlich gar nicht so falsch ;)
Ich kam von Oracle zu Delphi und bei diesen DB Aware Kompos hat mich von Anfang an gestört, das ich keinen direkten Einfluss auf das UPDATE, INSERT & DELETE -Statement habe. (Durch das DataBinding in D8 ist das zum Glück nicht mehr der Fall...)
Das das DBGrid verdammt eklig im Handling für den User ist, dürfte aber jedem klar sein der es in seinen Apps "verbaut".

woki 2. Mai 2004 23:31

Re: Wie kann ich die Ausgabe ind Dbgrid manipulieren
 
Zitat:

Zitat von Robert_G
@woki
Da liegst du wahrscheinlich gar nicht so falsch ;)
Ich kam von Oracle zu Delphi und bei diesen DB Aware Kompos hat mich von Anfang an gestört, das ich keinen direkten Einfluss auf das UPDATE, INSERT & DELETE -Statement habe.

Das ist nicht richtig, und zwar auch für ältere Versionen von Delphi nicht (Hab jetzt kein Delphi 1 installiert). Wäre audh katastrophal, wenn es so wäre. Schau Dir z.B. mal im Reiter BDE TUpdataSQL an.

Zitat:

Zitat von Robert_G
Das das DBGrid verdammt eklig im Handling für den User ist, dürfte aber jedem klar sein der es in seinen Apps "verbaut".

Nun, das kommt darauf an, wofür man es verwendet, und welche aufgabenspezifischen Erweiterungen es erhält.

Grüsse
Woki

MrSpock 2. Mai 2004 23:36

Re: Wie kann ich die Ausgabe ind Dbgrid manipulieren
 
Hallo,

OnGetText war schon das richtige Event. Wenn du persistente Felder benutzt, wähle das entsprechende Feld EK aus und weise dem OnGetText event entsprechenden Code zu. Das Event ist vom Typ:

Delphi-Quellcode:
procedure(Sender: TField; var Text: String; DisplayText: Boolean) of object;
Der Variablen Text weist du dann den Text zu, der angezeigt werden soll:

Delphi-Quellcode:
Text := Format('%8.2f', [MyTableEK.AsFloat / 100.0]);
DisplayText := True;

Reini64 3. Mai 2004 23:16

Re: Wie kann ich die Ausgabe ind Dbgrid manipulieren
 
vielen Dank für die Hilfe MrSpock !!! :P


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