Sumowanie wartości z dbgrid

Sumowanie wartości z dbgrid
DY
  • Rejestracja: dni
  • Ostatnio: dni
0

Witam,
mam pewien problem z ADOQuery i dbgrid w Delphi i nie mogę sobie z nim poradzić. Przeszukałem neta ale nie znalazłem odpowiedzi więc chciałbym Was zapytać.
Zrobiłem sobie program, który wczytuje przez ADOQuery do dbgrida pewne dane. Dane ładnie się wczytują i dbgrid pokazuje je poprawnie. Dalej chciałbym dane z jednej kolumny zsumowac jeśli warunek z innej jest spełniony i tu pojawia się właśnie problem. Dane dobrze się sumują (porównane z raportem z bazy) ale nie ma danych w dbgrid - dbgrid jest pusty. Jak zrobić żeby warunki zliczały się i dbgrid był z danymi? Może mi ktoś pomóc z tym problemem bo juz nie mogę sobie poradzić?

Kopiuj
form1.ADOQueryCZ.Active := True;

While not form1.ADOQueryCZ.Eof do Begin  //Kończy działanie jeśli wszystkie wiersze zostały odczytane
      //form1.ADOQueryCZ.Fields.Fields[0].Value;
      if form1.ADOQueryCZ.Fields.Fields[5].Value = 'OM' then
            begin
              nowe:= nowe + form1.ADOQueryCZ.Fields.Fields[0].Value;
            end else
      if form1.ADOQueryCZ.Fields.Fields[5].Value = 'OE' then
            begin
              odrzuty:= odrzuty + form1.ADOQueryCZ.Fields.Fields[0].Value;
            end else
      if form1.ADOQueryCZ.Fields.Fields[5].Value = 'OO' then
            begin
              nierozpoznane:= nierozpoznane + form1.ADOQueryCZ.Fields.Fields[0].Value;
            end else
      if form1.ADOQueryCZ.Fields.Fields[5].Value = 'CO' then
            begin
              skartonowane:= skartonowane + form1.ADOQueryCZ.Fields.Fields[0].Value;
            end else
      if form1.ADOQueryCZ.Fields.Fields[5].Value = 'RI' then
            begin
              doDruku:= doDruku + form1.ADOQueryCZ.Fields.Fields[0].Value;
            end else
      if form1.ADOQueryCZ.Fields.Fields[5].Value = 'OI' then
            begin
              doSpakownia:= doSpakownia + form1.ADOQueryCZ.Fields.Fields[0].Value;
            end;

     form1.ADOQueryCZ.Next; //Skocz do następnego "wiersza" - pozycji w bazie
   End;  
form1.Label1.Caption := 'Nowe '+ IntToStr(nowe);
form1.Label3.Caption := 'Odrzuty '+ IntToStr(odrzuty);
form1.Label2.Caption := 'Nierozpoznane '+ IntToStr(nierozpoznane);
form1.Label4.Caption := 'Skartonowane '+ IntToStr(skartonowane);
form1.Label5.Caption := 'Do druku '+ IntToStr(doDruku);
form1.Label6.Caption := 'Do spakowania '+ IntToStr(doSpakownia);

Form1.ADOQueryCZ.Active := False; 
abrakadaber
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 6610
1

jak zamkniesz zapytanie Form1.ADOQueryCZ.Active := False; to co ma się wyświetlać?

DY
  • Rejestracja: dni
  • Ostatnio: dni
0

Też racja, działa :) Dzięki. Dla mnie logicznym się wydawało, że jeśli coś aktywuję to na koniec powinienem to dezaktywować :)

JU
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 5046
1

Dodatkowo - rób takie rzeczy SQLem, a nie w query. Będzie lepiej i szybciej.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.