Avatar billede -anders- Juniormester
07. oktober 2002 - 14:42 Der er 9 kommentarer og
1 løsning

Udvælge poster på basis af markeret værdi på en eller flere liste

Hej Eksperter, jeg har gennemtænkt nedenstående senarie, og vil nu spørge om det kan lade sig gøre, for overskulighedens skyld har jeg inddelt spørgsmålet i 3 dele, hvor del 1 og 2 er
lavet og virker som det skal. Del 3 er så selve spørgsmålet. Det skal siges at første gang (ca 10 min siden) lagde jeg spørgsmålet ud men der er på en eller anden måde forsvundet i den blå luft?)så jeg prøver igen.


Del 1.
Jeg har en form, denne form har ingen postkilde, på formen indsætter jeg et faneblads-
kontrolelement med fem sider.På hver side indsætter jeg en liste, listerne hedder La,Lb,Lc,Le
Og Lf. Så har jeg en forespørgsel som hedder fs_oversigt. I denne forespørgsel er der fem felter, "Komponist", "Orkester", "Dirigent", Genre", "Medie". Hver liste på de fem faneblade
for data fra de ovenstående fem felter, Listen La, for data fra komponist, o.s.v. Jeg har på forespørgslen sat egenskaben til Unikke værdier til Ja. Alt dette virker perfekt.

Del 2.
Jeg har så en form i tabelformat (frm_oversigt), denne form har fs_oversigt som postkilde, brugeren kan i denne form se alle poster i databasen. Alt det med relationer opslag e.t.c køre ligedes som det skal
Efterhånden som der bliver lagt poster ind indeholder de omtalte lister flere og flere elementer, dette køre også som det skal.

Del 3.
Forstil jer flg.
Formen frm_oversigt er IKKE åbn. Brugeren åbner istedet formen med faneblade. På fanebladet
komponist markere brugeren feks. Mozart på listen, på fanebladet dirigent, markere brugeren feks. Børge Wagner på listen. Nederst på selve formen er det en knap, når brugeren klikker
på denne knap skal form frm_oversigt åbne, men kun vise de poster der svare til den værdi
brugeren har markeret på de to ovenstående lister. Det samme skal virke uanset om man
markere en værdi på en liste, eller man markere en værdi på flere lister.
hele projektet bygger altså på en forespørgsel, en tabelformular, og en formular uden postkilde, med fem faneblade, og fem lister, hvor listerne hver for sig for data fra forskelige felter i den samme forespørgsel. Håber at senariet er nogenlunde forståligt.
Er der nogen der kan hjælpe??
/Anders.
Avatar billede terry Ekspert
07. oktober 2002 - 14:56 #1
I have to ask, why do you want to use a tab control as your filter to another form? You could use a combo in frm_oversigt for each of the five tab controls
Avatar billede -anders- Juniormester
07. oktober 2002 - 14:59 #2
Hej Terry
Ja det er rigtigt, dette kunne være en løsning, men det var nu fint hvis det andet kunne fungere. Der kommer hurtigt mage forkelige controls på en tabelform, dette ville jeg gerne undgå hvis det er muligt, men elles er jeg da intresereti din løsning
/Anders
Avatar billede terry Ekspert
07. oktober 2002 - 15:03 #3
Can you send what you have to me so that I dont have to start from scratch?
eksperten@santhell.dk
Avatar billede terry Ekspert
07. oktober 2002 - 15:04 #4
I will see what I can do with your idea (lists).
Avatar billede -anders- Juniormester
07. oktober 2002 - 15:07 #5
okay terry, jeg sender hvad jeg har om lidt
Avatar billede terry Ekspert
07. oktober 2002 - 18:25 #6
I hav esent the dB back, and this is what is important.
I am assuming that the list IS a single select, otherwise it will be necessary to loop through each list building the WHERE clause up ión the fly.

Private Sub cmdOpen_Click()
On Error GoTo Err_cmdOpen_Click

    Dim stDocName As String
    Dim stLinkCriteria As String

    stDocName = "frm_oversigt"
   
    stLinkCriteria = BuildFilter
   
    DoCmd.OpenForm stDocName, , , stLinkCriteria

Exit_cmdOpen_Click:
    Exit Sub

Err_cmdOpen_Click:
    MsgBox Err.Description
    Resume Exit_cmdOpen_Click
   
End Sub

Function BuildFilter() As String
Dim sSQL As String

    'Default
    sSQL = "1 "
   
    If Len(Me.lstKomponist) > 0 Then
        sSQL = sSQL & " AND KomponistID = " & Me.lstKomponist
    End If
    If Len(Me.lstGenre) > 0 Then
        sSQL = sSQL & " AND GenreID = " & Me.lstGenre
    End If
    If Len(Me.lstOrkester) > 0 Then
        sSQL = sSQL & " AND OrkesterID = " & Me.lstOrkester
    End If
    If Len(Me.lstDiregent) > 0 Then
        sSQL = sSQL & " AND DirigentID = " & Me.lstDiregent
    End If
    If Len(Me.lstMedie) > 0 Then
        sSQL = sSQL & " AND MedieID = " & Me.lstMedie
    End If
   
    BuildFilter = sSQL
   
End Function

Private Sub cmdClear_Click()
'button to clear selection
    Me.lstDiregent = Null
    Me.lstGenre = Null
    Me.lstKomponist = Null
    Me.lstMedie = Null
    Me.lstOrkester = Null
   
End Sub
Avatar billede -anders- Juniormester
07. oktober 2002 - 18:32 #7
Hej Terry
Det ser meget fint ud, jeg vil nu prøve koden, hvor skal selve funktionen ligge???
Avatar billede -anders- Juniormester
07. oktober 2002 - 18:41 #8
Okay nu har jeg modtaget db,en retur, jeg har allerede chekket det ud, og det var lige hvad jeg skulle bruge, ja der var ikke mange data i basen, men jeg vil tjekke det op den db der er i produktion (ca 5000)record, du skal igen have mange tak for hjælpen, og her er dine point.
En stor ros til eksperten og dens eksperter som hurtigt og proff. afhjælper
problemer. *SSSSS*

mvh Anders.
Avatar billede terry Ekspert
07. oktober 2002 - 19:20 #9
Hi Anders, and thanks for the points. Great to hear its what you wanted.
5000 records is a lot more than what your test dB had but even so I dont think it will give any problems in performance.

mvh
Terry
Avatar billede gp Nybegynder
03. december 2002 - 08:54 #10
aandersen:

Det ser interssant ud vil det være muligt at få tilsendt den db som Terry til dig, jeg vil gerne se om det kan hjælpe mit problem. glenn@mentzler.dk

På forhånd tak.

Glenn P.
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