|
|
aufsummieren des Feldinhaltes einer Row mit SQL Befehl- #18253 in section [744051] |
Sec: |
(51) MS-Visual FoxPro 9.0 |
Von: |
Cyprian Kuschka |
An: |
Bernd Köhl |
Am/Um: |
18.07.2024 19:33:15 |
|
ich muss Horzontal über die Feleder summieren. Zeile1 ->Feld1-Feld.n Zeile.n Feld1-Feld.n Ich kann nur die Summe per code bilden. Gibts dazu kein SQL.
|
alternativ gäbe es eine solche Möglichkeit mit einem SQL Befehl: SELECT RECNO() AS DSatz, SUM(column2 + column3 + ... + column(n)) AS nRowSum FROM yourTable GROUP BY RECNO() der durch dich veröffentlichte Quellcode kann nicht funktionieren. Probleme im Code: Unendliche Schleife: Die DO WHILE !EOF()-Schleife könnte potenziell unendlich laufen, wenn keine Bedingung dafür sorgt, dass EOF() jemals true wird. Dies passiert, wenn der Befehl SKIP nicht korrekt arbeitet oder keine Datensätze vorhanden sind. Variableninitialisierung: nRowSum wird nicht initialisiert. Es sollte vor der Schleife initialisiert werden, um die korrekten Summierungen durchzuführen. Indirekte Adressierung: Der Code versucht, durch Zeichenkettenmanipulation auf die Werte in der grdGrid zuzugreifen. Dies führt zu Fehlern, da &cWertRow keine gültige Referenz ist. Korrekte Verwendung von FCOUNT(): FCOUNT() liefert die Anzahl der Felder in der aktuellen Workarea und hat möglicherweise nichts mit der Anzahl der Spalten im Grid zu tun. Rechenfehler: nRowSum wird nicht korrekt berechnet, da nWertRow möglicherweise den falschen Wert erhält. Wie Du siehst besteht hier sehr viel Potenzial: mein Vorschlag als VFP Code nRowSum = 0 && Initialisiere nRowSum vor der Schleife DO WHILE !EOF() DSatz = RECNO() FOR gnCount = 2 TO FCOUNT() - 1 IF gnCount < 10 cWertRow = EVAL("thisForm.cntPanel.grdGrid.Column" + STR(gnCount, 1, 0) + ".Text1.Value") ELSE cWertRow = EVAL("thisForm.cntPanel.grdGrid.Column" + STR(gnCount, 2, 0) + ".Text1.Value") ENDIF nWertRow = cWertRow nRowSum = nRowSum + nWertRow NEXT thisForm.cntPanel.grdGrid.Column20.Text1.Value = nRowSum SKIP ENDDO thisform.Refresh() Viel Erfolg Viele Grüße Cyprian
|
|
|
|