Sumowanie wartości z dbgrid

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ć?

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; 
1

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

0

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

1

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

1 użytkowników online, w tym zalogowanych: 0, gości: 1