Avatar billede fuskeren Nybegynder
18. januar 2005 - 11:21 Der er 8 kommentarer

Filtrer data i en formular

Hej alle

I min db har jeg 4 formular der viser forskellige data fra samme tabel. En af tabellens kolonner (vi kalder den FællesData) kan data enten være Data1, Data2, Data3 eller Data4. Formular1 skal kun vise Data1, Formular2 skal kun vise Data2 osv. osv.

Hvordan kan jeg skrive en kode der kun tillader de "rigtige" data at bleve vist i hver formular ?

Jeg har prøvet med en forespørgsel, der funger fint bortset fra at formularen bliver låst så jer hverken kan oprette nye data eller editer i oprettede data.

Skriv gerne meget udfårligt da jeg er begynder i access og især VBA.
18. januar 2005 - 11:25 #1
Der burde ikke forekomme låsning, bare fordi du sætter et kriterie på din forespørgel:

Select * From Dintabel Where FællesData = "Data1"


Men hvis du ikke kan få det til at virke, kan du lægge denne kode på formularens VedIndlæsning-hændelse (Form_Load):

Me.Filter = "Fællesdata = 'Data1'"
Me.FilterOn = true
Avatar billede fuskeren Nybegynder
18. januar 2005 - 12:08 #2
Hvis jeg sætter din VBA kode ind VedIndlæsning-hændelsen popper der en dialogbox op hvor der står "Indsæt parameterværdi". Hvis jeg så indtaster filteret (data1) kommer samtlige poster i formularen selv om der ståe at de er filtreret. Hvad gør jeg forkeret ?
18. januar 2005 - 12:13 #3
hvordan ser din kode præcis ud?
Avatar billede fuskeren Nybegynder
18. januar 2005 - 12:28 #4
Det er den kode du lige har sendt bortset fra at "Fællesdata" hedder "Oprindelse1" i tabellen og "Data1" hedder "Frøformeret". Så koden jeg indsætter VedIndlæsning-hændelsen i formularen der heder "Frøformeret" ser således ud:

Me.Filter = "Oprindelse1 = 'Frøformeret'"
Me.FilterOn = true

Hvis jeg fjerner kriteriet i forespørgslen kan jeg stadig ikke editer data i formularen, så her er nok en relationsfejl. jeg har bokset med det i lang tid, så fik jeg den ide at det var mere smart at lave filtreringen direkte i formularen med en VBA kode.
18. januar 2005 - 12:38 #5
hvis du alligevel ikke kan redigere posterne i forespørgslen (og kan leve med det) så ville jeg nok bare lægge kriteriet der.

Hvis du finder ud af hvorfor dataene er låst, vil dit kriterie ikke ændre på dette.
Avatar billede fuskeren Nybegynder
18. januar 2005 - 12:52 #6
Hej igen
Jeg tror at du har misforstået mig lidt. Grunden til at jeg stillede dette spørgsmål var at undgå at bruge forespørgslen og lave sorteringen direkte i formularene. Jeg kan ikke leve med at data er låst, det gør den umulig at bruge. Den version jeg roder med nu er uden en forespørgsel, den er slettet ! Hvordan kan jeg lave dette filter med VBA ?
18. januar 2005 - 12:57 #7
Dvs, at den nu kun er baseret på en tabel?
jeg vil stadig anbefale dig at lave formularen på en forespørgsel, da filter-metoden har et par uhensigtsmæssigheder. Bla. vil brugeren altid kunne højreklikke eller gå i menuen og vælge "Fjern filter", hvorefter alle poster vises.

Har du prøvet den helt simple forespørgsel (evt skrevet direkte i Postkilden):
Select * From Dintabel Where FællesData = "Data1"

i stedet for blot Dintabel!
Avatar billede fuskeren Nybegynder
18. januar 2005 - 13:52 #8
Jeg indsætter følgende kode under Filter i formularen:
SELECT * from [TBLData] Where [TBLData].[Oprindelse1] = "Frøformeret"
Jeg har prøvet at indsætte direkte i postkilden med og uden de firkantede parenteser, men der sker ingen sortering.
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