26. april 2010 - 19:44 Der er 2 kommentarer og
1 løsning

DoCmd.OpenForm "form", , , persoonid IN

I en Access 2007 application der handler om personer har jeg en formular frmPersoon.  Applicationen og min Access version er paa hollandsk.  Derfor ser nogle navne maerkelige ud og derfor kender jeg ikke de danske betegnelser.  Jeg haaber det alligevel bliver forstaaeligt.

Formularen er lavet som 'enkelt formular' (d.v.s. med en record paa hver side til forskel fra 'gennemloebende formular' med alle records under hinanden i tabelform.) VBA kommandoen "DoCmd.OpenForm "frmPersoon", acPreview" resulterer i at jeg paa skaermen faar recorden for den person der har persoonid = 1 og jeg via navigationsknapperne kan faa fat i de andre cirka 600 records.  Hvis jeg vil begraense det til de personer med de foerste ti persoonid-er (persoonid = 1 paa skaermen og 2-10 via navigationsknapperne) faar jeg det ved DoCmd.OpenForm "frmPersoon", acPreview", , "persoonid IN (1,2,3,4,5,6,7,8,9,10)"

Men nu vil jeg gerne, ved hjaelp af en listbox, kunne vaelge de personer der skal vises i frmPersoon, eventuelt blot en enkelt person.  Listboxen, der hedder lstPersoon, indeholder alle personer med persoonid, fornavn, og efternavn.  Den er multi-select. persoonid er den afhaengige kolonne.

Maaden maa vel vaere at gemme persoonid-erne for de selected personer i en datastruktur og sige DoCmd.OpenForm "frmPersoon", acPreview, , "persoonid In (datastrukturen)".  Men jeg finder ikke den rigtige datastuktur.

Jeg har for eksempel forsoegt med denne kode:

Private Sub ctrPersoon_Click()
    Dim i As Variant
    Dim ids As String
    With Me.lstPersoon
        For Each i In .ItemsSelected
            ids = ids & ", " & .ItemData(i)
        Next
    End With
    DoCmd.OpenForm "frmPersoon", acPreview, , "persoonid In (ids)"
End Sub

Men det virker ikke (det ville foroevrigt have overrasket mig hvis det virkede, men jeg var noed til at proeve noget.)

Men hvordan goer jeg saa?
Avatar billede terry Ekspert
26. april 2010 - 22:57 #1
Your very close Christian


DoCmd.OpenForm "frmPersoon", acPreview, , "persoonid In (" & ids & ")"

And if this doesnt work then it will very likley be because you have a trailing ,

so you can use this before youopen the form

ids = Left(ids, len(ids)-1)
27. april 2010 - 05:27 #2
It was actually ids = Right(ids, len(ids)-1) because ids starts with a comma - ids = ids & ',' & .ItemData(i)

But it works.  Thanks once again.
Avatar billede terry Ekspert
27. april 2010 - 08:13 #3
Thanks.
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