24. oktober 2000 - 14:58Der 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
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
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
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 ?!
\'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;
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 !?!?!?!!?!
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;
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).
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;
- 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\" ??
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 !!
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\'
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
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 :(
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
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 :)
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 ??
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
Synes godt om
Ny brugerNybegynder
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.