Avatar billede xzaboo Praktikant
24. april 2005 - 20:51 Der er 7 kommentarer og
1 løsning

Kombineret filtrering af felter fra Hovedformular og Underformula

Hej..

Jeg har en hovedformular, hvor der befinder sig en underformular. Jeg har i underformularen et felt der hedder [VBilID]. Jeg kunne nu godt tænke mig at lave en filtrering, som foregår ved at jeg vælger det [VBilID] fra underformularen som jeg ønsker, og samtidigt vælger et eller flere felter fra hovedformularen. Mit resultat af filtreringen skal efterfølgende KUN være de Hovedformular-poster, som matcher de kriterier der er angivet i både hoved- og underformular.

Er der nogen som har et godt bud på hvordan dette løses?

Mvh. Steffen
24. april 2005 - 21:00 #1
Det er lidt tricky. Men det gælder om, at du dynamisk opbygger filteret (en SQL streng) så det ser nogenlunde således ud:

Tabel1.Felt1 = 'X' And Tabel1.felt2 = 'Y' And tabel1.FKey in (Select ID From Tabel2 Where tabel2.Felt3 = 'Z')

FKey er fremmednøgle/relationsfelt mellem tabel1 og tabel2. ID er feltet i Tabel2 som er relatieret med FKey i tabel1.
Avatar billede xzaboo Praktikant
24. april 2005 - 21:17 #2
Når jeg indsætter de ting jeg har, kommer min SQL til at se således ud:

tblVBil.Felt1 = 'X' And Læs.felt2 = 'Y' And tblVBil.VRmTrNo in (Select RmTrNo From Læs Where Læs.Felt3 = 'Z')

Men hvad med Felt1, Felt2 og Felt3 (og vel også X, Y og Z)?. Da det kan være meget forskelligt hvilke felter fra hovedformularen der bliver filtreret efter, så kan jeg jo ikke rigtigt sætte nogle specifikke navne på dem.


Jeg er ikke helt vildt dygtig til det her med at opbygge SQL og den slags, så skal nok have skåret det lidt ud i pap :)
24. april 2005 - 21:28 #3
Der er en lille fejl med felt2. Den skal også komme fra tblVBil:

tblVBil.Felt1 = 'X' And tblVBil.felt2 = 'Y' And tblVBil.VRmTrNo in (Select RmTrNo From Læs Where Læs.Felt3 = 'Z')

Således kommer det fra underformularen inde i parentesen.

Mht at styre det dynamisk, så er det et spørgsmål om at gå hvert kriterie-felt gennem og opbygge SQL'en del for del:

If not isnull(søgFelt1) then  'tekstfelt
    SQLStr = SQLStr & "Felt1 = '" & ME!søgFelt1 & "' And "
endif

If not isnull(søgFelt2) then  'talfelt
    SQLStr = SQLStr & "Felt2 = " & ME!søgFelt2 & " And "
endif

If not isnull(søgFelt3) then  'talfelt i subformen
    SQLStr = SQLStr & "VRmTrNo in (Select VRmTrNo From Læs Where Felt3 = " & ME!søgFelt3 & ") And "
endif

'...



SQLStr = Left(SQLStr, Len(SQLStr)-5)  'Fjern det ekstra " And " i slutningen af strengen

Me.filter = SQLStr
Me.Filteron = True
Avatar billede xzaboo Praktikant
24. april 2005 - 21:42 #4
Okay, jeg er nogen lunde med på hvor du vil hen. Jeg skal altså lave et stykke kode, som indeholder alle de nødvendige felter, angivet ud fra ovenstående, og hvor søgFelt1, søgFelt2 eller søgFelt3 er navnene på de felter som skal medtages.
Når jeg udløser dette her stykke kode, hvad vil der så ske? fordi jeg er ikke helt klar over om det skal lægge på en kommandoknap eller om det skal være på en bestemt hændelse. Jeg er nemlig ikke helt med på, hvornår jeg fortæller den hvad de forskellige søgFelt1 skal være 12, hvis det nu var det jeg ønskede?
24. april 2005 - 21:46 #5
Hmm, jeg har et eksempel liggende her: http://www.makeiteasy.dk/eksempler/Downloads.htm

Det hedder filter- og søgefunktion.

Det kan måske give dig en ide om hvordan man kan strikke det sammen...
Avatar billede xzaboo Praktikant
24. april 2005 - 21:47 #6
okay, jeg prøver lige at tage et lille kig på det :)
Avatar billede xzaboo Praktikant
28. april 2005 - 20:04 #7
Jeg har simpelthen opgivet denne mulighed, da jeg kan se at den er alt alt for avanceret for mig, og den kommer til at tage mig for mange timer at få sat op.

Mange tak for den forsøgte hjælp, troede bare der var en nemmere løsning.

Mvh.
Steffen
Avatar billede xzaboo Praktikant
28. april 2005 - 20:04 #8
.
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