29. august 2005 - 09:47Der er
18 kommentarer og 1 løsning
Filter i formular baseret på undertabel
Hjælp til oprettelse af dynamisk filter i formular.
Bruger Access 2003
Jeg har 3 tabeller.
En Hovedtabel (Tabel 1) med flere felter, heraf et kaldet "Nummer", som er nøglen. Tabel 2 består af to felter, et kaldet "Nummer" relateret til Tabel 1, og et andet kaldet Id (tal). Tabel 3 består af to felter, et kaldet Id relateret til Tabel 2 og et kaldet Type.
Jeg kan altså via Tabel 2 tildele flere typer til mine Numre i Tabel 1.
Jeg har så en formular der viser posterne i Tabel 1 på listeform. Denne vil jeg gerne via en kommando sortere udfra Type i Tabel 3.
Jeg har tilføjet et andet filter baseret på et felt i Tabel 1, der kan aktiveres via afkrydsnigsfelt. Så kunne godt tænke mig, at jeg via rullepanel hvor der vælges en Type (Tabel 3) kan sortere min formular baseret på de relationer som nævnt ovenfor.
Postkilden til omtalte formular er Tabel 1, skal denne måske ændres til noget Select .. From... ??
Eller kan jeg gøre det via noget Me.Filter = ...?? Men jeg skal vel have Tabellernes relationer ind et eller andet sted..
Teknologi, AI og forretning er i centrum på Computerworlds Cloud og AI Festival i København d. 18. og 19. september. Se hele programmet for den store konference om strategisk brug af Cloud og AI på: www.cloud-festival.dk
Slettet bruger
29. august 2005 - 09:57#1
En metode er:
Lav en formular med et rullepanel med typer, indsæt din nuværende formular som underformular.
I din nuværende formular går du ind og tager tabel 2 og 3 med i din kildeforespørgsel, så at du får type med.
Herefter sætter du hovedformular og underformular links til at være type.
Din Type komboboks (rullepanel) har en hændelse som hedder EfterOpdatering (AfterUpdate), hvori du kan skrive følgende kode:
Me.RecordSource = "Select * From [Tabel 1] Where Nummer In(Select Nummer From [Tabel 2] Inner join [Tabel 3] On [Tabel 2].Id = [Tabel 3].Id Where Type = '" & Type & "'" Me.Requery
Fejlen skyldes muligvis feltnavnet Id, som i visse sammenhænge er et reserveret ord. Prøv at ændre sætningen til "...On [Tabel 2].[Id] = [Tabel 3].[Id]..." Dermed burde Access ikke misforstå det som en property. Ellers kan du prøve at ændre feltnavnene i Tabel 2 og Tabel 3 - "Id" som feltnavne er under alle omstændigheder skidt navngivning ;0)
molleren - jeg burde måske lige sige at det var din parantes som er lige i skabet. Den rigtige kode burde se sådan ud:
Me.RecordSource = "Select * From [Tabel 1] Where Nummer In(Select Nummer From [Tabel 2] Inner join [Tabel 3] On [Tabel 2].Id = [Tabel 3].Id Where Type = '" & Type & "')" Me.Requery
Her forudsættes i øvrigt at din Type-komboboks returnerer en teksstreng?
De ti bud er en kendt og sjov hjemmeside, som giver gode råd der (altid) bør efterleves - men beskriver dybest set kun hvad der står på de første 50 sider i enhver Access-lærebog. De ti bud er vel også kendt for de ting den ikke siger (alle primærnøgler bør være baseret på autonummerering, Lookup-fields/kombobokse er ikke sagen i tabeller men er geniale i forms m.v.). Så siden bør nok kombineres med anden information ;0)
Thou shalt not copy and paste other people's code without at least attempting to understand what it does. ?
Men til Claes, følgende ser ud til at virke nu - jeg indrømmer lige samtidig, at mine tabeller, og feltnavne ikke bruger samme betegnelser som dem jeg har angivet her af pædagogiske årsager - så jeg havde lavet en stavefejl i mit Nummer felt.. Så følgende virker nu:
Me.RecordSource = "Select * From [Tabel 1] Where Nummer In(Select Nummer From [Tabel 2] Inner join [Tabel 3] On [Tabel 2].Id = [Tabel 3].Id Where Type = '" & Type & "')" Me.Requery
dog skulle jeg i min komboboks under egenskaber, Data, Bundet Kolonne vælge 2, da det er denne der indeholder tekststrengen horudfra der laves en requery.
Så mange tak for hjælpen Claes, det var lige i øjet.
Claes > Jeg siger ikke siden er perfekt, men hvor mange læser lærebøger? Når jeg lagde linket her er det fordi, vi meget ofte ser feltnavne i f.eks. flere ord og som du er inde på feltnavne der sammenfalder med reserverede ord.
Man bør altid søge information fra flere kilder, og ikke basere sin viden fra een bestemt kilde, og dermed begrænse sig til et menneske's (eller gruppe) holdning.
/ Morten (rimer lige lovlig lidt på Molleren, mennøh...)
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.