Avatar billede -anders- Juniormester
20. november 2005 - 13:16 Der er 12 kommentarer og
1 løsning

Tælle antal poster der returneres på et dynamisk filter

Hej Eksperter

Jeg en mainform på denne form er der indsat en subform "frmkalenderoversigtsub" på min mainform er der diverse tekst og combobobokse der dynamisk generer et filter på subform alt efter hvad der vælges af kritrier, jeg benytter den dynamisk filterfunktion fra www.makeiteasy til dette, alt dette virker fint.

På min mainform har jeg så yderligere 4 ubunde tekstbokse "txtantal, txtledig, txtoptaget, txtreserveret".

jeg har et felt i min subform "frmkalenderoversigt" som er navngivet "kalenderstatus" dette felt kan indeholde 3 værdier Ledig, Optaget, reserveret.

Og nu til spørgsmålet:
Når jeg genere et filter på subformen benytter jeg kaldet GetFilter ved klik på en knap altså Form_frmkalenderoversigt.Filter = GetFilter

1. I txtantal vil jeg gerne have skrevet antal poster det dynamiske filter har returneret.

2. i txtledig vil jeg gerne have skrevet det antal poster der har status "Ledig"

3. I txtoptaget vil jeg gerne have skrevet det antal poster der har status "Optaget"

4. I txtreserveret vil jeg gerne have skrevet det antal poster der har status "Reserveret"

Hvis jeg feks vælger årstallet 2006 og januar returnere filtrert 31 poster dette skal så skrives i txtantal ud af de 31 poster kan der så være et x antal poster med de forskellige status som beskrevet ovenfor.

Nogen der har et forslag til hvordan dette kan gøres

Hilsen Anders
Avatar billede terry Ekspert
20. november 2005 - 13:30 #1
Hi Anders
I havent thought too much about this, but after you have set the filter you have access to the number of records through the forms recordset

Me.recordset.recordcount

I think you wil need to loop through the recordset after you have fileterd and sum up the the other fields while your looping.
Avatar billede mugs Novice
20. november 2005 - 13:30 #2
posterne kan tælles således:

MsgBox RecordsetClone.RecordCount
Avatar billede -anders- Juniormester
20. november 2005 - 13:33 #3
Hej tak for indlæggende

Ja jeg kan tælle posterne med med RecordsetClone.RecordCount, men det gælder kun for det totale antal poster filter har returneret,problemet opstår med status´kriterierne
Avatar billede -anders- Juniormester
20. november 2005 - 13:36 #4
Hvis jeg ved klik på min knap skriver:

Me!txtantal = Form_frmkalenderoversigtsub.RecordsetClone.RecordCount, returneres det rigtige antal poster som filter har generet
Avatar billede -anders- Juniormester
20. november 2005 - 13:38 #5
Men kan ikke se lyset med statuskriterierne, så vidt jeg ved kan man ikke benytte RecordsetClone.RecordCount sammen med kriterier på statusfeltet
Avatar billede terry Ekspert
20. november 2005 - 13:47 #6
I'm sure you will need to do it an a loop


Dim rs As Recordset
Dim i As Integer

Set rs = Me.RecordsetClone

Me.txtoptaget  = 0
Do Until rs.EOF
   
    If rs("status") = "Ledig" Then Clng(me.txtoptaget) = clng(me.txtoptaget) + 1   
   
    rs.MoveNext
Loop

or something like that (NOT tested)
Avatar billede terry Ekspert
20. november 2005 - 13:55 #7
and I should obviously test for "Optaget" not "Ledig" :o)
Avatar billede -anders- Juniormester
20. november 2005 - 13:55 #8
:o), jeg arbejder på det,vender tilbage hurtigst muligt
Avatar billede -anders- Juniormester
20. november 2005 - 14:02 #9
Hej terry, denne virker perfekt, nu mangler jeg bare at får det totale antal poster for filter i txtantal, kan du se hvor i koden det skal placeres og hvordan det skal skrives:

Function CountPoster()
Dim rs As Recordset
Dim i As Integer

Set rs = Form_frmkalenderoversigtsub.RecordsetClone

Form_frmkalenderoversigt.txtledig = 0
Form_frmkalenderoversigt.txtoptaget = 0
Form_frmkalenderoversigt.txtreserveret = 0
Do Until rs.EOF
   
    If rs("kalenderstatus") = "Ledig" Then Form_frmkalenderoversigt.txtledig = CLng(Form_frmkalenderoversigt.txtledig) + 1
    If rs("kalenderstatus") = "Optaget" Then Form_frmkalenderoversigt.txtoptaget = CLng(Form_frmkalenderoversigt.txtoptaget) + 1
    If rs("kalenderstatus") = "Reserveret" Then Form_frmkalenderoversigt.txtreserveret = CLng(Form_frmkalenderoversigt.txtreserveret) + 1

    rs.MoveNext
Loop

End Function
Avatar billede terry Ekspert
20. november 2005 - 14:08 #10
You should be able to put it almost anywhere


Function CountPoster()
Dim rs As Recordset
Dim i As Integer

Set rs = Form_frmkalenderoversigtsub.RecordsetClone

Form_frmkalenderoversigt.txtantal = Form_frmkalenderoversigtsub.RecordsetClone.RecordCount

Form_frmkalenderoversigt.txtledig = 0
Form_frmkalenderoversigt.txtoptaget = 0
Form_frmkalenderoversigt.txtreserveret = 0
Do Until rs.EOF
   
    If rs("kalenderstatus") = "Ledig" Then Form_frmkalenderoversigt.txtledig = CLng(Form_frmkalenderoversigt.txtledig) + 1
    If rs("kalenderstatus") = "Optaget" Then Form_frmkalenderoversigt.txtoptaget = CLng(Form_frmkalenderoversigt.txtoptaget) + 1
    If rs("kalenderstatus") = "Reserveret" Then Form_frmkalenderoversigt.txtreserveret = CLng(Form_frmkalenderoversigt.txtreserveret) + 1

    rs.MoveNext
Loop

End Function
Avatar billede -anders- Juniormester
20. november 2005 - 14:08 #11
Okay det sidste var ikke så slemt, her er den samlet kode der virker, point på vej til terry, mugs tak for indlægget :o)

Function CountPoster()
Dim rs As Recordset
Dim i As Integer

Set rs = Form_frmkalenderoversigtsub.RecordsetClone

Form_frmkalenderoversigt.txtantal = 0
Form_frmkalenderoversigt.txtledig = 0
Form_frmkalenderoversigt.txtoptaget = 0
Form_frmkalenderoversigt.txtreserveret = 0
Do Until rs.EOF

    Form_frmkalenderoversigt.txtantal = CLng(Form_frmkalenderoversigt.txtantal) + 1
    If rs("kalenderstatus") = "Ledig" Then Form_frmkalenderoversigt.txtledig = CLng(Form_frmkalenderoversigt.txtledig) + 1
    If rs("kalenderstatus") = "Optaget" Then Form_frmkalenderoversigt.txtoptaget = CLng(Form_frmkalenderoversigt.txtoptaget) + 1
    If rs("kalenderstatus") = "Reserveret" Then Form_frmkalenderoversigt.txtreserveret = CLng(Form_frmkalenderoversigt.txtreserveret) + 1

    rs.MoveNext
Loop

End Function
Avatar billede terry Ekspert
20. november 2005 - 14:10 #12
tak
Avatar billede -anders- Juniormester
20. november 2005 - 14:10 #13
Selv tak, og tak for den hurtige hjælp
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester