Avatar billede ds-zim Nybegynder
24. oktober 2000 - 14:58 Der er 40 kommentarer og
1 løsning

Flere filtre på samme formular ?!?

Både og .. Jeg har en formular, der er opbygget vha. faneblade. Første fane er udformet
som en alm. formular og de to andre har indsatte dataark som underformularer.
På \"hovedformularen\", dvs den som fanerne sidder på, har jeg angivet et filter i Form.Filter
property\'n, også på de 2 underformularer. Nu vil jeg så gerne med knaptryk kunne bestemme
Form.FilterOn = False/True. Det har jeg prøvet med flg. kode, men får fejlen \'Object doesnt
support this property or medthod\'. Har jeg andre muligheder for at aktivere filteret ?
Jeg kender godt til Parent/Child-idéen, men kan ikke bruge den i den gældende opgave..

Private Sub BLEH_Click()

  If BLEH = 0 Then
    [Opgavestyring]![RykkerStyring(Data)].Form.FilterOn = False
  End If
 
  If BLEH = -1 Then
    [Opgavestyring]![RykkerStyring(Data)].Form.FilterOn = True
  End If
 
End Sub

Cheers, Zim
Avatar billede moses Praktikant
24. oktober 2000 - 15:04 #1
Syntaksen er:

EnEllerAndenForm!EnEllerAndenUnderform.Form.FilterOn = True
Avatar billede moses Praktikant
24. oktober 2000 - 15:06 #2
Men det skulle kunne lkade sig gøre at benytte Form, som den aktive form:

Form.FilterOn

For selve hovedformen og:

Form!EnEllerAndenUnderform.Form.FilterOn = True

for underformen.
Avatar billede moses Praktikant
24. oktober 2000 - 15:08 #3
I dit oprindelige forslag skulle det være nok at tilføje FORMS! forrest.
Avatar billede ds-zim Nybegynder
24. oktober 2000 - 15:20 #4
Hvis jeg bare skriver Forms!Underformularnavn!Form.FilterOn = True, får jeg fejlen \'Access kan
ikke finde formularen \'Underformularnavn\', der refereres til i et makro- eller VBudtryk

piv
Avatar billede moses Praktikant
24. oktober 2000 - 15:28 #5
Ja - det skal den også - du skal have \"overformularen\" med:

Forms![Opgavestyring]![RykkerStyring(Data)].Form.FilterOn = False
 

Avatar billede moses Praktikant
24. oktober 2000 - 15:29 #6
Jeg regner med at hovedformularen hedder:

\"Opgavestyring\"
og underformularen hedder
\"RykkerStyring(Data)\".
Avatar billede ds-zim Nybegynder
24. oktober 2000 - 15:46 #7
Det har du helt ret i! Nu lader det til at filteret bliver slået til, men ..

Private Sub BLEH_Click()

  If BLEH = 0 Then
    Forms!Opgavestyring![Rykker].Form.FilterOn = False
    Forms!Opgavestyring![Rykker].Requery
  End If
 
  If BLEH = -1 Then
    Forms!Opgavestyring![Rykker].Form.FilterOn = True
    Forms!Opgavestyring![Rykker].Requery
  End If
 
End Sub

der sker ingen filtrering ! ... Jeg havde regnet med, at det ville være nok, at angive filteret i
Form.Filter property\'n .. Ka\' det være D ?
Avatar billede moses Praktikant
24. oktober 2000 - 15:48 #8
Jeg har selv været ude for det samme. Du SKAL angive begge dele i Visul Basic - ellers virker det ikke:

    Forms!Opgavestyring![Rykker].Form.Filter = \"[Olsen] > 4711\" \' eller, hvad der nu skal stå
    Forms!Opgavestyring![Rykker].Form.FilterOn = False
Avatar billede moses Praktikant
24. oktober 2000 - 15:49 #9
Og så skal det jo nok være ...FilterOn = True

Ellers virker det jo slet ikke !!!
Avatar billede ds-zim Nybegynder
24. oktober 2000 - 16:14 #10
Jeg har før prøvet at implementere et filter i VB og gået for hårdt ned i flammer :(:(:(

Nu sidder jeg med dette filter
Forms!Opgavestyring![Rykker].Form.Filter =
(((RykkerStyring.Udført) = [Forms]!Opgavestyring]![Testy]))

Hvad skal der stå på ventre side ? Umiddelbart er dette forespørgslen, underformularen er baseret på!
Højre side er det kontrolelement der bestemmer værdien der skal filtreres efter
Avatar billede moses Praktikant
25. oktober 2000 - 08:14 #11
Filter er en String, så du skal skrive:

Forms!Opgavestyring![Rykker].Form.Filter =
\"(RykkerStyring.Udført) = \" & [Forms]!Opgavestyring]![Testy]

hvilket betyder, at underformularen [Rykker] under hovedformularen [Opgavestyring] får et filter, så Property\'en(egenskaben) Udført på Control\'en [Rykkerstyring] er lig med indholdet i Control\'en [Testy] på hovedformularen [Opgavestyring].
Det lyder ikke umiddelbart korrekt ?!
Avatar billede moses Praktikant
25. oktober 2000 - 08:14 #12
Hvis Testy er en string, skal du desuden skrive:

Forms!Opgavestyring![Rykker].Form.Filter =
\"(RykkerStyring.Udført) = \'\" & [Forms]!Opgavestyring]![Testy] & \"\'\"



Avatar billede ds-zim Nybegynder
25. oktober 2000 - 10:14 #13
\'Rykkerstyring\' er en forespørgsel, nemli\' den jeg har baseret min underformular(Rykker~dataark) på!
Jeg troede, at det var sådan det fungerede. Kan du syntax\'n 4 et filter ? Jeg prøvede at rode med
filtergenerator\'n under Access 9.0, og kom frem til flg;

(((OpgaveOmfang.Udført)=[Forms]![OpgaveStyring]![Testy]))

,hvor \'OpgaveOmfang\' er navnet på underformularen (jeg har på OpgaveStyring kaldt den rykker).

BTW. så er Testy umiddelbart \"kun\" et tal i en tekstbox, da RykkerStyring.Udført angives ved medarbID
(Bruges til opslag i AnsatTab)
Avatar billede ds-zim Nybegynder
25. oktober 2000 - 10:16 #14
Filteret burde C sådan ud ?
\"(OpgaveOmfang.Udført) = \"\' &[Forms]![OpgaveStyring]![Testy] & \"\'\"
Avatar billede ds-zim Nybegynder
25. oktober 2000 - 10:27 #15
Dang it :(
\"(OpgaveOmfang.Udført) = \"\' & [Forms]![OpgaveStyring]![Testy] & \"\'\"

Oversat :

\"(Underformnavn.Felt) = \"\' & Forms!Hovedformnavn!Textbox & \"\'\"
Avatar billede moses Praktikant
25. oktober 2000 - 11:32 #16
Helt uden kode, så kan du udelukkende sætte et filter til at give kriterier for, hvordan en eller flere felter fra Data Sourcen skal være, for at en record tages med.

Hvis altså data sourcen for din underformular har :

data1, data2, data3

så kan du f.eks. vælge et filter, der hedder:

\"[Data1] > 47\"

Du kan ikke sætte kriterier op for data udenfor data sourcen.
Det kan f.eks ikke lade sig gøre at tage alle records med, som filteret kommer forbi på ulige sekunder  !?!?!?!!?!

Avatar billede ds-zim Nybegynder
25. oktober 2000 - 13:01 #17
Ok, jeg har været slemt (specielt med mine testting) dårlig til det med navngivning,
så jeg prøver lige her at få styr på de gældende forhold såvel som syntax\'n;

Forms!HovedForm!Underform.Form.Filter =
\"(Forespørgsel
  • .Felt[**]) = \'\" & [Forms]!HovedForm]![Control] & \"\'\"

  • = Kan vi blive enige om, at der her skal stå en ref. til den forespørgsel, filteret skal påvirke ?
  • [**] = Feltet som der skal sammenlignes med ( = Control)

    Er jeg på rette spor eller helt ude i hampen ?
    Avatar billede ds-zim Nybegynder
    25. oktober 2000 - 13:02 #18
    Control er stadig en textbox, men jeg forventer at ende med at bruge en ComboBox!
    In case it matters ..
    Avatar billede moses Praktikant
    25. oktober 2000 - 13:09 #19
    Du skal ikke have forespørgslen med, da der udelukkende kan være tale om den tabel/forespørgsel, som danner datagrundlag for formen (Det der er indsat i feltet DataSource for den formular, som filteret skal gælde for).

    Resten er OK
    Avatar billede ds-zim Nybegynder
    25. oktober 2000 - 13:12 #20
    Så syntax\'n går som flg. ? ;
    \"(HovedForm!Underform!Felt) = \'\" & Forms!HovedForm!Control & \"\'\" ?!?
    Avatar billede ds-zim Nybegynder
    25. oktober 2000 - 13:16 #21
    Ehh, Sådanne ..

    \"(Forms!HovedForm!Underform!Felt) = \'\" & Forms!HovedForm!Control & \"\'\"

    Righto ?
    Avatar billede moses Praktikant
    25. oktober 2000 - 13:19 #22
    NEJ

    Til venstre for lighedstegnet kan der kun stå en eneste ting:

    Et eneste navn på et eneste felt. Feltet skal være med i DataSource\'en.
    Avatar billede moses Praktikant
    25. oktober 2000 - 13:20 #23
    Hvis datasource = Tabel4711

    Og

    Tabel4711 indeholder:
    Felt1, Felt2, Felt3

    SÅ

    Kan filteret se ud, som:

    \"[Felt2] > \" & Forms!Hovedform!Control31
    Avatar billede ds-zim Nybegynder
    25. oktober 2000 - 13:24 #24
    Hmm, det vil ikke rigtig virke :( Her er en beskrivelse af hva\' som sker;

    1. Jeg trykker på knappen efter at have indtastet en værdi i Testy(textbox).
    2. Jeg blive spurgt om værdien på [Forms]![OpgaveStyring]![Rykker].[Udført] 2(!) gange vha.
      en popupbox
    3. Efter at have indtastet den ønskede værdi (2 gange !), bliver formularen filtreret (påstår den)
      men der forsvinder ingen poster .. Det selvom jeg kører en requery på underformen


    Synes du ikke også det R skummelt ? Well .. her R filteret;

    \"([Forms]![OpgaveStyring]![Rykker].[Udført]) = \'\" & [Forms]![Opgavestyring]![Testy] & \"\'\"

    & her R koden;

    Private Sub BLEH_Click()

      If BLEH = 0 Then
        Forms!Opgavestyring![Rykker].Form.FilterOn = False
        Forms!Opgavestyring![Rykker].Requery
      End If
     
      If BLEH = -1 Then

        Forms!Opgavestyring![Rykker].Form.Filter = \"([Forms]![OpgaveStyring]![Rykker].[Udført]) = \'\" & [Forms]![Opgavestyring]![Testy] & \"\'\"
        Forms!Opgavestyring![Rykker].Form.FilterOn = True
        Forms!Opgavestyring![Rykker].Requery
      End If
     
    End Sub
    Avatar billede ds-zim Nybegynder
    25. oktober 2000 - 13:26 #25
    Jamen, der står jo kun et felt ! Det R bare en alenlang reference !
    Og ja, jeg har feltet med i forespørgslen/underformularen
    Avatar billede moses Praktikant
    25. oktober 2000 - 13:31 #26
    Forfra:

    - Gå til design view for Formularen, som du har indsat filteret på.
    - Klik i den lille firkant i øverste venstre hjørne, så der kommer en lille sort firkant indeni.
    - Hvis ikke properties er vist, så klik højre mussetaste på denne lille firkant og vælg properties/egenskaber.
    - Vælg fanebladet \"Data\"
    - Hvad står der i feltet \"DataSource\" ??
    Avatar billede ds-zim Nybegynder
    25. oktober 2000 - 13:35 #27
    HovedForm = \"OpgaveStyring\" (Den forespørgsel, HovedForm\'n R bygget på)

    UnderForm = \"RykkerStyring\" (Den forespørgsel, UnderForm\'n R bygget på)
    Avatar billede moses Praktikant
    25. oktober 2000 - 13:38 #28
    For hovedformens filter gælder:

    Til venstre for lighedstegnet i dit filter kan der så kun stå en af de felter, som er med i forespørgslen: \"Opgavestyring\".

    ....Filter = \"[Felt3] = \" & ..........

    For underformens filter gælder:

    Til venstre for lighedstegnet i dit filter kan der så kun stå en af de felter, som er med i forespørgslen: \"Rykkerstyring\".

    ....Filter = \"[Felt47] = \" & ..........
    Avatar billede moses Praktikant
    25. oktober 2000 - 13:40 #29
    Grunden til at du bliver spurgt 2 gange om at indtaste den der ...udført er netop, at den ikke findes i datasourcen og derfor skal indtastes manuelt. Det gælder både for hovedform og for underform, så derfor 2 gange !!
    Avatar billede ds-zim Nybegynder
    25. oktober 2000 - 13:48 #30
    Æhh,

    Private Sub BLEH_Click()

      If BLEH = 0 Then
        Forms!Opgavestyring![Rykker].Form.FilterOn = False
        Forms!Opgavestyring![Rykker].Requery
      End If
     
      If BLEH = -1 Then
        Forms!Opgavestyring![Rykker].Form.Filter = \"([Udført]) = \'\" & [Forms]![Opgavestyring]![Testy] & \"\'\"
        Forms!Opgavestyring![Rykker].Form.FilterOn = True
        Forms!Opgavestyring![Rykker].Requery
      End If
     
    End Sub

    giver fejlen Runtime error 2001 \'Du har annulleret den forrige handling\'

    Piv, hva\' R nu D ?
    Avatar billede moses Praktikant
    25. oktober 2000 - 14:00 #31
    ??
    Du har måske trykket ESC eller break erller sådan noget ??

    Du skal ikke have parentes omkring [Udført].

    Hvad er Testy for en type ??
    Den er vel samme type, som Udført ??
    [Udført] er et felt i forespørgslen \"Rykkerstyring\" ??
    Avatar billede ds-zim Nybegynder
    25. oktober 2000 - 14:09 #32
    K, here goes ..

    Jeg trykker ikke ESC/Break, men har til gengæld fjernet [] fra \"Udført\" !!
    \"Testy\" R 1 TextBox, defineret til at være tal
    \"Udført\" R 1 felt i \"RykkerStyring\", i tabellen defineret som Heltal
    Avatar billede ds-zim Nybegynder
    25. oktober 2000 - 14:10 #33
    Hvordan kan D være at filtrene bliver slået til på begge formularer med

    Forms!Opgavestyring![Rykker].Form.FilterOn = True ?!?
    Avatar billede moses Praktikant
    25. oktober 2000 - 14:28 #34
    Det ved jeg ikke.

    Hvis du har dataforbindelse fra underformen til et sted i datasourcekæden til hovedformen, så kan det vel godt lade sig gøre !!

    Start med at få din underform til at virke for sig selv, så kan du lægge den ind på hovedformen sidenhen.
    Avatar billede ds-zim Nybegynder
    25. oktober 2000 - 14:34 #35
    Tjae, D R ikke 1 problem at få formularen til at virke alene .. Al balladen starter når jeg vil
    filtrere underformularer .. Starter nu alligevel forfra, måske kan jeg finde grunden til den
    Runtime error 2001 :(

    Tak for tålmodigheden ellers, Zim
    Avatar billede ds-zim Nybegynder
    25. oktober 2000 - 15:12 #36
    MesterSkummelt ! Nu har jeg fået koden til at virke på ny/test formular, godt nok med
    Testy som et tekstfelt ... Bliver nødt til at stoppe 4 idag, fortæller lige hvis jeg finder ud af noget
    Avatar billede ds-zim Nybegynder
    26. oktober 2000 - 16:20 #37
    k, jeg har kort testet en formular med tilhørende underformularer ..
    De 2 underformularer\'s forespørgsler har på ingen måde noget med hinanden at gøre,
    alligevel bliver filteret slået fra på begge 2, hvis jeg kører en .requery på dem.
    Det lader til at være det, der \"messede det up\". Nu virker min testformular ihvertfald ..
    Tilbage til det egentlige arbejde :)

    Zim
    Avatar billede ds-zim Nybegynder
    27. oktober 2000 - 13:39 #38
    Status R som flg.;

    Jeg havde redigeret min original en hel del (cut\'n\'pasted kontroller fra & på en fane),
    og det havde åbenbart \'fucked\' mine controls.. Nu har jeg så opbygget den forfra og er
    begyndt at implementere filtre. Godt nok blev underform\'n filtreret, men ikke som ønsket
    (Ingen poster blev vist) .. Sådan så koden ud før jeg ændrede den;

    Private Sub OpgaveFilter_AfterUpdate()

      If OpgaveFilter = 1 Then
        [Forms]![Opgavestyring]![OpgaveOmfang].Form.Filter = [Udført] = [Forms]![Opgavestyring]![KundeFilter]
        Forms!Opgavestyring!OpgaveOmfang.Form.FilterOn = True
      End If

      If OpgaveFilter = 2 Then
        [Forms]![Opgavestyring]![OpgaveOmfang].Form.Filter = [Udført] = [Forms]![Opgavestyring]![MedArbFilter]
        Forms!Opgavestyring!OpgaveOmfang.Form.FilterOn = True
      End If
     
      If OpgaveFilter = 3 Then
        Forms!Opgavestyring!OpgaveOmfang.Form.FilterOn = False
      End If

    End Sub

    D her er hva\' jeg ændrede den til;

    Private Sub OpgaveFilter_AfterUpdate()

      If OpgaveFilter = 1 Then
        [Forms]![Opgavestyring]![OpgaveOmfang].Form.Filter = \"[Udført] = \'\" & [Forms]![Opgavestyring]![KundeFilter] & \"\'\"
        Forms!Opgavestyring!OpgaveOmfang.Form.FilterOn = True
      End If

      If OpgaveFilter = 2 Then
        [Forms]![Opgavestyring]![OpgaveOmfang].Form.Filter = \"[Udført] = \'\" & [Forms]![Opgavestyring]![MedArbFilter] & \"\'\"
        Forms!Opgavestyring!OpgaveOmfang.Form.FilterOn = True
      End If
     
      If OpgaveFilter = 3 Then
        Forms!Opgavestyring!OpgaveOmfang.Form.FilterOn = False
      End If

    End Sub

    Da jeg havde gjort D, begyndte den igen at fable om ovenstående fejlmed. (\"Du har anul forrig handling ..\") !!!!
    Kan det være syntax\'n på filtreret, der kan være skyld i D ? Jeg tvivler stærkt, da min tro på din kunnen er
    uomtvistelig !! Men jeg mente, at det var relevant at nævne D..

    For at det ikke skal være løgn, så har jeg ændret control\'n (Kunde-/MedArbfilter) der styrer filteret, fra en
    textbox, til en combobox. Selv om jeg har bedt den om at gemme værdien (Kunde#), så R D da ikke D den gør ?
    R D ? Jeg mener at kunne huske at den opretter et \"index\", for hver post i den forespørgsel som combobox\'n
    R bygget på .. Kan D være D der R skyld i at det første forslag ikke spiller ??

    Sincerly, Zim
    Avatar billede moses Praktikant
    27. oktober 2000 - 14:07 #39
    Det kan jeg med min bedste vilje ikke gennemskue !!

    Virker dit sidste forslag så efter hensigten ?
    Avatar billede ds-zim Nybegynder
    27. oktober 2000 - 14:24 #40
    Niks! Jeg kommer ikke længere end til fejlmed. \"Du har anull. forrige handling\" !!
    Den bliver genereret af den lnie hvor filteret defineres
    Avatar billede ds-zim Nybegynder
    27. oktober 2000 - 14:35 #41
    BTW, har jeg så ret mht. min teori ang. brug af combobox\'e ?
    Jeg har bedt den gemme den valgte værdi, men ...

    DOH! Det burde jeg da kunne teste med \'Immediate\'-vinduet .. n/m
    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