![]() |
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!) |
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: |
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? |
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 |
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'
|
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?
|
Re: StringGrid neue berechnete Spalte
hallo hansi,
die frgae ist nun, willst du den mittel wert
Code:
raik
Sum(wert1) +sum(wert2) div zeilenzahl oder
Sum(wert1) div zeilenzahl + sum(wert2) div zeilenzahl |
Re: StringGrid neue berechnete Spalte
:wiejetzt:
Wo trage ich Deinen Code ein? |
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'
|
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? |
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 |
Re: StringGrid neue berechnete Spalte
Paradox Tabelle mit SQl mit Delphi 7 Enterprise.
Was ist IBExpert? |
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 |
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 |
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. |
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? |
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:
Ciao Frederic
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; |
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 |
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 |
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 |
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; ... |
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 18:10 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz