Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi StringGrid neue berechnete Spalte (https://www.delphipraxis.net/34777-stringgrid-neue-berechnete-spalte.html)

Hansi 28. Nov 2004 11:41


StringGrid neue berechnete Spalte
 
Schönen Sonntag!

Mit folgendem Code wird ein StringGrid mit Daten gefüllt. Sieht dann ungefähr dann so aus

Datum Wert1 Wert2 Mittelwert
20.11.2004 100 50 ...
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var x,y : Integer;
begin
  if not Query1.IsEmpty then begin
    stringgrid1.ColCount := Query1.FieldCount;
    stringgrid1.RowCount := Query1.RecordCount + 1;
    stringgrid1.FixedCols := 0;
    stringgrid1.FixedRows := 1;
    For x := 0 To Query1.FieldCount-1 Do stringgrid1.Cells[x,0] := Query1.Fields[x].FieldName;
    y := 0;
    While Not Query1.Eof Do Begin
      For x := 0 To Query1.FieldCount-1 Do stringgrid1.Cells[x, y + 1] := Query1.Fields[x].AsString;
      Query1.Next;
      Inc(y);
    End;
  End;
end;

Nun meine Frage: Wie kann ich den Mittelwert(aus Wert1 und Wert2) in die StringGrid ausgeben. (Mittelwert gibt es bis dahin nicht!)

kiar 28. Nov 2004 11:47

Re: StringGrid neue berechnete Spalte
 
hallo hansi

das zauberwort in sql heisst avg . schau mal in die OH und dann gibst du noch ein feld an und schon macht dein SG das auch.

raik

EDIT dicke finger kleine tasten :mrgreen:

Hansi 28. Nov 2004 11:51

Re: StringGrid neue berechnete Spalte
 
Schreib mal bitte wie Du das in den Code einfügen würdest?

Du meinst AVG?

P.S. Die OH kannst doch voll vergessen oder?

kiar 28. Nov 2004 11:52

Re: StringGrid neue berechnete Spalte
 
in den code hier gar nicht. das müsstest du in deine sql -anweisunge einfügen.

zeige mal den sql der Query.

raik

Hansi 28. Nov 2004 11:56

Re: StringGrid neue berechnete Spalte
 
Delphi-Quellcode:
SELECT Datum, Wert1, Wert2 FROM Tabelle WHERE Name='710000' AND Datum BETWEEN '01.01.2000' AND '31.12.2000'

Hansi 28. Nov 2004 12:07

Re: StringGrid neue berechnete Spalte
 
P.S. Was muss ich machen damit z.B. das Produkt von Wert1 und Wert2 in einer zusätzliuchen Spalte angezeigt wird?

kiar 28. Nov 2004 12:08

Re: StringGrid neue berechnete Spalte
 
hallo hansi,

die frgae ist nun, willst du den mittel wert
Code:
Sum(wert1) +sum(wert2) div zeilenzahl oder
Sum(wert1) div zeilenzahl + sum(wert2) div zeilenzahl
raik

Hansi 28. Nov 2004 12:10

Re: StringGrid neue berechnete Spalte
 
:wiejetzt:

Wo trage ich Deinen Code ein?

kiar 28. Nov 2004 12:20

Re: StringGrid neue berechnete Spalte
 
mache es so
SQL-Code:
SELECT Datum, Wert1, Wert2,((wert1 +wert2)/2) FROM Tabelle WHERE Name='710000' AND Datum BETWEEN '01.01.2000' AND '31.12.2000'

Hansi 28. Nov 2004 12:27

Re: StringGrid neue berechnete Spalte
 
Damit bringt er ein Fehlermeldung(Keine Übereinstimmung der Typen im Ausdruck) Wahrscheinlich weil ich keine freie Spalte in der Tabelle habe, oder? Bei SELECT kann ich Doch nur Spalten(Felder) ansprechen die auch existieren, oder?

Kann ich die BErechnung auch in der While Schleife einfügen? Nur wie?

kiar 28. Nov 2004 12:30

Re: StringGrid neue berechnete Spalte
 
also ich habe das getestet mit dem sql Editor im Ibexpert und Firebird 1.5
da klappt das alles einwandfrei.

frage mit welcher db und mit welchem zugriff arbeiteet du?

raik

Hansi 28. Nov 2004 12:32

Re: StringGrid neue berechnete Spalte
 
Paradox Tabelle mit SQl mit Delphi 7 Enterprise.

Was ist IBExpert?

kiar 28. Nov 2004 12:37

Re: StringGrid neue berechnete Spalte
 
ein admin tool für IB und FB.

paradox hat natürlich nur ein beschränktes sql , damit wird es nicht gehen, wie ich es beschrieben habe. es ist die frage, ob du am anfang der entwicklung bist. wenn ja solltest du dich mit gedanken beschäftigen, von paradox wegzugehen.

raik

ich muss mal schauen, wie man es realisieren kann


raik

kiar 28. Nov 2004 12:43

Re: StringGrid neue berechnete Spalte
 
du kannst aber auch nach dem einlesen der daten, den mittelwert errechnen:
Delphi-Quellcode:
pseudo
    zeilenweise die zelle des stringgrid für wert1 und wert 2 addieren und durch 2 dividieren
    ergebnis in mittelwert eintagen

Hansi 28. Nov 2004 12:46

Re: StringGrid neue berechnete Spalte
 
Ich bin noch ziemlich am Anfang! :oops: :pale: :wall: :kotz:

Wie ist FireBird? Einfach oder komplex?

Wenn Du wissen willst was ich machen will schau doch bitte meine letten Threads an.

Hansi 28. Nov 2004 12:52

Re: StringGrid neue berechnete Spalte
 
Ich bräuchte eine Anleitung wie ich aus einer Tabelle (man kann diese auch als zwichenschritt machen) Werte entnehme mit diesen rechne multiplizieren und dann in eine neue tabelle dies abspeichere.

Kannst Du mir da helfen?

fkerber 28. Nov 2004 12:55

Re: StringGrid neue berechnete Spalte
 
Hi!

Sehe ich das richtig, dass du alles in einem Stringgrid stehen hast?

Über StringGrid.Cells[0,0] sprichst du z.b. die oberste linke Zelle an.

Also exemplarisch:

Delphi-Quellcode:
for i:=0 to anzahl_zeilen-1 do
begin
 Stringgrid1.Cells[i,3]:=inttostr(strtoint(Stinggrid1.Cells[i,1]) +  strtoint(Stinggrid1.Cells[i,2]) div 2);
end;
Ciao Frederic

kiar 28. Nov 2004 12:58

Re: StringGrid neue berechnete Spalte
 
hallo,

habe mir dein project , welches du realisieren willst, mal angeschaut.

viel spass :mrgreen:

das mit paradox zu realisieren ist paradox. nimm bitte firebird und lies dir entsprechende tuts durch.

ein wirklich gutes findest du hier in der DP von domo sokrat.
vergiss es solche komplexen sachen mit paradox realisieren zu wollen.

hier wirst du schnell an die granzen stossen. ausserdem ist diese db auch nicht mehr zeitgemäß ,wird nicht weiterentwickelt .

raik

kiar 28. Nov 2004 13:01

Re: StringGrid neue berechnete Spalte
 
frederic,

addiere zweimal die gleiche zelle? :gruebel:

da ist dir wohl ein schreibfehler unterlaufen, aber im prinzip ist es die umsetzung des pseudocode von oben :thumb:

raik

fkerber 28. Nov 2004 13:04

Re: StringGrid neue berechnete Spalte
 
Hi!

:oops:
Da macht man einmal Copy&Paste und schon fliegt man auf :wink:
Habe es oben gändert, danke.


Ciao Frederic

Hansi 28. Nov 2004 13:09

Re: StringGrid neue berechnete Spalte
 
Danke für die Hilfe! Probiers gleich mal aus!


hat funktioniert! Falls einer dies später liest hier die Lösung für mich:

Delphi-Quellcode:
...
var i:Integer;
begin
For i:=1 to Query1.FieldCount-1 do
  begin
    StringGrid1.Cells[3,i] := FloatToStr(StrToFloat(StringGrid1.Cells[1,i]) + StrToFloat(StringGrid1.        Cells[2,i]));
  end;
end;
...

delphifan2004 31. Okt 2020 21:21

AW: StringGrid neue berechnete Spalte
 
Warum überhaupt ein StringGrid für diese Aufgabe? Geht da nicht ein DBGrid besser. Für SQL Datenbanken gibt es doch in Delphi passende Komponenten, die mit DBGrid zusammenarbeiten. Wozu da mühsam selber rumbasteln?


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