Avatar billede learnie Nybegynder
30. marts 2004 - 08:51 Der er 10 kommentarer og
1 løsning

Søgning vha. listboks

Jeg har brug for hjælp. Jeg har oprettet en access-db med følgende tabeller:

ansat
- id
- navn
- osv.

certifikat
- id
- navn

og en mange til mange relation
ansat_certifikat
- ansat_id (del af sammensat nøgle)
- certifikat_id (del af sammensat nøgle)
- bemærkning

Jeg har fået oprettet en over-/underformular vha. guiden og det fungere fint. Men nu har jeg brug for via en listboks at kunne vælge en til flere certifikater og finde alle de ansatte der matcher søgningen. Resultatet vil jeg gerne have i samme formular, men det er vist for viderekomne. Den hjælp jeg søger skal være skåret ud i pap, min erfaring med formularer er begrænset.
30. marts 2004 - 09:12 #1
Jeg er ikke helt med på hvad der er Hoved- og underformular. Men hvis Ansat er Hovedformular, og du ønsker at finde alle de ansatte, som har et eller flere givne certifikater, så kan du lave en liste (kaldet f.eks. lstCertifikat), hvor Ansat_ID er den bundet kolonne og lave en knap, som filtrere således:

Dim SQLStr as String
Dim Itm as Variant
SQLStr = SQLStr & "Ansat.ID IN ("
For Each itm In Me!lstCertifikat.ItemsSelected
  SQLStr = SQLStr & Me!lstCertifikat.ItemData(itm) & ", "
Next itm
SQLStr = Left(SQLStr, Len(SQLStr) - 2) & "))"
If Len(SQLStr) = 0 then
  Me.Filteron = False
Else
  Me.filter = SQLStr
  me.Filteron = True
endif

(Jeg beklager, hvis beskrivelsen er lidt mangelfuld....der er en del detaljer, som kan være svære at beskrive)

/Thomas
Avatar billede learnie Nybegynder
30. marts 2004 - 09:30 #2
I den første formular jeg har oprettet er ansat i hovedformularen. Men jeg forestiller mig at der i den nye hovedformular er en listboks med alle certifikater og en knap der starter søgningen. I underformularen kommer alle ansatte frem der matcher søgningen. Kan jeg i første omgang lave formularen vha. guiden og tilrette hovedformularen med en listboks, eller er det helt forkert? Den kodestump du har skrevet, skal den på knappens onclick-hændelse?
30. marts 2004 - 09:38 #3
Koden skal på OnClick-hændelsen, ja.

Du kan godt bruge koden i den ny formular, som du har bekrevet. En mindre rettelse dog:
Dim SQLStr as String
Dim Itm as Variant
SQLStr = SQLStr & "Ansat.ID IN ("
For Each itm In Me!lstCertifikat.ItemsSelected
  SQLStr = SQLStr & Me!lstCertifikat.ItemData(itm) & ", "
Next itm
SQLStr = Left(SQLStr, Len(SQLStr) - 2) & "))"
If Len(SQLStr) = 0 then
  Me!Ansat.Form.Filteron = False
Else
  Me!Ansat.Form.filter = SQLStr
  me!Ansat.Form.Filteron = True
endif

...hvor "Ansat" er navnet på dit subform-objekt.

Listboksens "rækkekilde" skal se nogenlunde således ud:
Select Ansat_ID, Navn From Ansat_Certifikat Inner join Certifikat on Ansat_Certifikat.certifikat_ID = Certifikat.ID
Listboksens "Antal kolonner" = 2
Listboksens "Bundet kolonne" = 1
Listboksens "Kolonnebredde" = 0

Du kan godt bruge guiden til at starte op på.
Avatar billede jensen363 Forsker
30. marts 2004 - 11:00 #4
Avatar billede learnie Nybegynder
30. marts 2004 - 11:25 #5
jensen363 jeg har læst spørgsmålet, jeg har faktisk læst mange uden at blive klogere.

thomasjepsen, jeg fatter intet. Da jeg læste det du har skrevet tænkte jeg, ok bare det, men når jeg piller ved formularen, så er jeg på herrens mark. Kan jeg lokke dig til at lave et eksempel eller må jeg sende min lille base til dig?
Avatar billede jensen363 Forsker
30. marts 2004 - 11:27 #6
Løsningen som der henvises til på 465484 er en multi-select funktion, som danner en forespørgsel direkte på baggrund af brugerens valg i listboksen.
30. marts 2004 - 11:28 #7
tj@makeiteasy.dk (send den zippet)
Avatar billede learnie Nybegynder
30. marts 2004 - 11:42 #8
thomasjepsen, filen er sendt.

jensen363, mit problem er at jeg åbentbart ikke fatter en pind. Eneste erfaring jeg har med formularer er via guiden og meget små og simple tilretninger.
Avatar billede jensen363 Forsker
30. marts 2004 - 11:49 #9
learnie > al begyndelse er svær ;), men jeg er sikker på, at Thomas har en løsning der passer dit behov ... ellers må du/I sige til ...
Avatar billede learnie Nybegynder
30. marts 2004 - 14:16 #10
Mange tak til thomasjepsen.
30. marts 2004 - 14:27 #11
selv tak...jeg har lige sendt dig en ny med en mindre ændring.
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