Count funkcija - sabiranje celija iste vrednosti

  • 9 odgovora
  • 4.748 pregleda
Count funkcija - sabiranje celija iste vrednosti 27.01.2007. u 22:08 · pre 240 meseci #1
Na formi imam DataGrid. Potrebno je da iz jedne kolone saberem celije koje imaju istu brojcanu vrednost, i to prikazem u labeli.
npr. u koloni su upisani brojevi 1,2,3,1,5,1,6,7,8,1 i treba da saberem celije u koje je upisan broj 1.
Re: Count funkcija - sabiranje celija iste vrednosti 27.01.2007. u 22:31 · pre 240 meseci #2
Pa vidi, posto je DataGrid "vezan" za rekordset kao izvor podataka, ne mozes izracunati na taj nacin sumu, vec iskljucivo moras "proci u petlji" kroz rekordset koji je izvor podataka:
Code:

Private Sub Sumiraj()
   Dim dblSuma As Double
   Dim dblKriterijum As Double
   
   'Primer podrazumeva da imas neki rekordset rstTmp
   'koji je izvor podataka za tvoj grid
   
   dblSuma = 0
   dblKriterijum = 1 'ovo je tvoj primer, samo sabira one koji su 1
   
   If rstTmp.RecordCount > 0 Then rstTmp.MoveFirst 'ides na pocetak
   
   Do While Not rstTmp.EOF
      
      If rstTmp("Polje") = dblKriterijum Then 'za neko polje pod nazivom "Polje"
         dblSuma = dblSuma + dblKriterijum
      End If
      
      rstTmp.MoveNext
      
   Loop
   
   Label1.Caption = "Suma je: " & Format(dblSuma, "###,##0.00")

End Sub

Naravno, ovde su mnoge stvari pretpostavljene, a mnoge nisu uzete u obzir, ali ....

PS

Ako ti treba klasican COUNT, umesto "dblSuma = dblSuma + dblKriterijum" pisi "dblSuma = dblSuma + 1"
Re: Count funkcija - sabiranje celija iste vrednosti 27.01.2007. u 23:17 · pre 240 meseci #3
U ovom redu
If rstTmp("Polje") = dblKriterijum Then
daje gresku 3021:Either BOF or EOF is True, or the current record has been deleted.Requested operation requires a current record.
Da li pod "Polje" podrazumevas naziv kolone?
Re: Count funkcija - sabiranje celija iste vrednosti 28.01.2007. u 00:14 · pre 240 meseci #4
Citat:
zormar:
Da li pod "Polje" podrazumevas naziv kolone?

Naravno, pisao sam ti i komentare ;)
Citat:
zormar: U ovom redu
If rstTmp("Polje") = dblKriterijum Then
daje gresku 3021:Either BOF or EOF is True, or the current record has been deleted.Requested operation requires a current record.

Ne znam sto ti to javlja, prethodno je postavljena provera da li ima rekorda, kao i pozicioniranje na prvi rekord pre ulaska u petlju. Da li si preuzeo kod u integralnom obliku?
Re: Count funkcija - sabiranje celija iste vrednosti 28.01.2007. u 10:07 · pre 240 meseci #5
Kod u mom primeru izgleda ovako, mozda sam negde pogresio

Private Sub Command2_Click()

Dim dblSuma As Double
Dim dblKriterijum As Double

'Primer podrazumeva da imas neki rekordset rstTmp
'koji je izvor podataka za tvoj grid

dblSuma = 0
dblKriterijum = 1 'ovo je tvoj primer, samo sabira one koji su 1

If Adodc1.Recordset.RecordCount > 0 Then Adodc1.Recordset.MoveFirst 'ides na pocetak

Do While Not Adodc1.EOFAction


If Adodc1.Recordset("Kolona") = dblKriterijum Then 'za neko polje pod nazivom "Polje"
dblSuma = dblSuma + 1
End If

Adodc1.Recordset.MoveNext

Loop

Label3.Caption = "Suma je: " & Format(dblSuma, "###,##0.00")

End Sub
Re: Count funkcija - sabiranje celija iste vrednosti 28.01.2007. u 10:46 · pre 240 meseci #6
Vidi se iz aviona, umesto:
Code:

Do While Not Adodc1.EOFAction

treba onako kako sam ti i rekao, a ti pogresno prepisao:
Code:

Do While Not Adodc1.Recordset.EOF

Dakle, treba rekordset, a ne ado kontrola i njeno svojstvo EOFAction koje je po defaultu 0, tj. kad se konvertuje u logicku vrednost onda je False, pa ti se uslov za izlazak iz petlje nikad ne ispuni i program "pukne" na EOF od rekordseta.
Re: Count funkcija - sabiranje celija iste vrednosti 28.01.2007. u 17:36 · pre 240 meseci #8
Imam jos pitanja o ovoj temi, ako mozes da mi pomognes bilo bi dobro.
Na koji nacin je moguce iz 2 kolone dobiti zbir celija koje imaju istu vrednost i to prikazati u jednoj labeli?
Ako u 2 kolone imam 2 broja koji se ponavljaju na vise mesta u tim kolonama, kako dobiti zbirove tih celija, i prikazati ih u 2 labele posebno za svaki zbir?
Re: Count funkcija - sabiranje celija iste vrednosti 28.01.2007. u 20:20 · pre 240 meseci #9
Izvini, ali mislim da je resenje tvog novog problema samo sitna varijacija prethodnog resenja, hajde i ti malo nesto da uradis, nije tesko, ako ocekujes da ti ovde ljudi stalno resavaju kompletan problem OK - mozda ti neko i resi, ali time ti cini medvedju uslugu. Sve ti je dato u prethodnom odgovoru.
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme