Avatar billede mormie Nybegynder
23. juni 2008 - 16:40 Der er 24 kommentarer og
1 løsning

Vælge flere data på en gangfra rulleliste

Hej
Jeg er næsten novise så jeg har brug for noget hjælp, jeg har ikke så meget styr på programmeringskoder, så skriv venligst udførligt.

Jeg har en database bestående af flere tabeller fx opgaver (skal udfyldes vha formular), medarbejdere, type opgave.

Bl.a. vil jeg gerne vælge flere medarbejdere i et felt i opgaver, jeg har forsøgt mig med rullepanel med multivalg, men medarbejderne kommer ikke over i opgave tabellen.

Jeg forstiller mig at man markerer 1-flere medarbejdere, som skal i kolonnen øvrige medarbejdere i opgave tabellen.

Jeg har også tænkt på om man kan lave en underformular med medarbejdere, også markere eller "flue af" de medarbejdere man skal bruge. Men jeg har ikke prøvet at arbejde med underformular før.

Håber at en eller anden kan hjælpe mig videre.
Avatar billede mugs Novice
23. juni 2008 - 18:41 #1
Når du ikke har prøvet at arbejde med underformularer før, vil jeg ikke anbefale det.

Hvad mener du med "rullepanel med multivalg"?
Vil du have en felt i opgavetabellen med flere medarbejdere der er tilknyttet den samme opgave?
Avatar billede mormie Nybegynder
23. juni 2008 - 18:53 #2
"Rullepanel med multivalg" = kombinationsboks med mulighed for at vælge mere end 1 person. 
Jeg har en tabel med medarbejdere, i opgave formularen har jeg et felt hvor jeg vælger 1 medarbejder som er ansvarlig for opgaven, samt et andet felt hvor jeg vilo kunne vælge flere medarbejdere som skal være med til at løse opgaven, det kan fx være 3 medarbejdere.
Avatar billede mugs Novice
23. juni 2008 - 19:25 #3
Hvis du bruger Access 2007 bakker jeg ud - Det kender jeg intet til.
I andre versioenr mener jeg ikke, at du kan vælge mere end een post i en kombinationsboks. Så skal du bruge en liste.

Jeg vil anbefale, at du oprettet een post for hver medarbejder der er tilknyttet opgaven, og derefter markerer hvem der er ansvarlig og hvilke der er med på opgaven.
Avatar billede mormie Nybegynder
23. juni 2008 - 22:41 #4
Jeg bruger Access 2003.
Kan du hjælpe mig hvis jeg laver den med en liste?
Avatar billede mugs Novice
23. juni 2008 - 22:50 #5
Jeg gætter på, at du vil oprette en post i din opgavetabel med flere navne. Det vil jeg fraråde.

Lav tabeller:
- Alle medarbejdere med en PK 
- Opgave med beskrivelse med en PK
- En tabel, hvor du plukker medarbejdere og opgave i hvert sit felt
- Denne sidste tsbel skal indeholde et felt der markerer, om medarbejderen er ansvarlig for opgaven. Det kan gøres med en gruppeboks.

På denne måde kan du altid se, hvilken opgave der varetsges af en ansvarlig medarbejder. Ligeledes hvilke opgaver en medarbejder er involveret i.
Avatar billede Slettet bruger
23. juni 2008 - 23:43 #6
Det ser lovende ud når man bruger multiselect (eller hvad det nu hedder!~)

og man kan godt fange det valgte i en kombiboks, f.eks:

Dim Itm as Variant
For Each Itm In Me!NavnPåDinKombiboks.ItemsSelected
Msgbox Me.NavnPåDinKombiBoks.ItemData(Itm)
Next Itm

...men problemet er at du ikke kan gemme en multiselection, så vidt jeg ved!~)

Du er nød til at gemme det i en tabel, du ville så kunne fylde dine valg på en kombiboks ved hjælp af noget kode, men det ville være lidt fjollet at gå igang med!~)

Hvis du skal bruge flere valg linket sammen med en post, så skal du bruge en underformular....

Hvis du eksempelvis havde en tabel med felterne IdOpgave og Ansvarlig, så kunne du lave en formular i enkelt visning, dvs. at man bruge navigations knapperne til at klikke sig igennem sine poster. Hvis man så havde en anden tabel, som indeholdt IdOpgave og Medarbejder, så kan man ud af denne lave en formular, som har løbende visning.

Så går man ind på den første formular og indsætter underformular, hvis man fulgte guiden i dette tilfælde ville den selv sætte IdOpgave som linket mellem de to formularer.

Nu vil du have en formular hvor du indtaster Ansvarlig og så vil du have et vindue hvor du kan fylde medarbejdere i, som hører til denne ansvarlige. Du behøver ikke vise IdOpgave felterne og man kan også få de to formularer til mere eller mindre "smelte" sammen, sådan rent visuelt.... Så det ser lidt smart ud!~)
Avatar billede jensen363 Forsker
24. juni 2008 - 08:32 #7
Du kan godt benytte en multiselect som kriteren i f.eks. en forespørgsel, så mon ikke det også kan lade sig gøre at gemme disse oplysninger ?
Avatar billede mormie Nybegynder
24. juni 2008 - 09:18 #8
Til mugs

Jeg kan godt følge dig noget hen ad vejen, men jeg ved helt ærligt ikke hvad du mener med at lave en tabel med "PK".
Avatar billede Slettet bruger
24. juni 2008 - 09:24 #9
jensen363>jeg kan ikke forestille mig andre steder at gemme det, end i en tabel, hvis data skal være der, når man åbner db'en næste gang... om man kan gemme en multiselection i ét felt, det ville være interessant, men jeg har ikke set det!~)
Avatar billede Slettet bruger
24. juni 2008 - 09:27 #10
PK ~ Primær Knøgle?~)
Avatar billede Slettet bruger
24. juni 2008 - 09:28 #11
Nej, spøg til side... Jeg ved ikke hvad PK står for, men det ser bekendt ud!~)
Avatar billede jensen363 Forsker
24. juni 2008 - 09:48 #12
spg > reelt kan du godt gemme variablerne i en forespørgsel, idet kriterie In(), gemmer multiselect kriterierne indtil næste gang multiselect aktiveres
Avatar billede Slettet bruger
24. juni 2008 - 09:53 #13
også selvom db'en lukkes?
Avatar billede jensen363 Forsker
24. juni 2008 - 10:19 #14
Ja, for forespørgslen åbnes og In() kriteriet oprettes fra gang tin gang
Avatar billede mormie Nybegynder
24. juni 2008 - 10:26 #15
Jeg kunne godt tænke mig at få forklaret havd man skriver i In() og hvor. Det lyder interessant og som jeg jeg ikke skal til at lave megte om af det jeg allerede er kommet frem til.
Avatar billede jensen363 Forsker
24. juni 2008 - 10:34 #16
Det er ikke lige let, hvis man ikke lige er inde i kode, men her er en stump kode jeg benytter i en applikation :


Private Sub MultiSelect_AfterUpdate()
Dim Q_1 As QueryDef, DB As Database
Dim Criteria_1 As String
Dim ctl_1 As Control
Dim Itm_1 As Variant
Dim sWhere_1 As String

Set ctl_1 = Me![ListFirma]

For Each Itm_1 In ctl_1.ItemsSelected
    If Len(Criteria_1) = 0 Then
        Criteria_1 = Chr(34) & ctl_1.ItemData(Itm_1) & Chr(34)
    Else
        Criteria_1 = Criteria_1 & "," & Chr(34) & ctl_1.ItemData(Itm_1) _
        & Chr(34)
    End If
   
Next Itm_1

    ListCriteria_1.Value = Criteria_1

sWhere_1 = ""

    If Len(Criteria_1) > 0 Then
        sWhere_1 = " Where [AAAXCD] In (" & Criteria_1 & ")"
    End If

Set DB = CurrentDb()
    Set Q_1 = DB.QueryDefs("Multiselect_1")
        Q_1.SQL = "Select * from Multiselect_all_1 " & sWhere_1

Me.Refresh
    Me.Requery

End Sub
Avatar billede jensen363 Forsker
24. juni 2008 - 10:38 #17
Me![ListFirma] er et skjult tekstfelt jeg har i min form, som "opsamler" min adfærd i forbindelse med Multiselect i listen

Denne adførd indsættes :

sWhere_1 = " Where [AAAXCD] In (" & Criteria_1 & ")"

i en qry kaldet Multicelect_1, som danner grundlag for min qry Multiselect_all_1, som også er en multiselect funktion
Avatar billede Slettet bruger
24. juni 2008 - 10:50 #18
ok.. så du bruger et felt til rent kodemæssigt at samle dine selections for så at putte dem ind i listen igen når man åbner en post... man skal lige vide hvad man laver, men det må være fedt for brugeren.

Det kunne være man skulle give det et forsøg en dag ved lejlighed!~)
Avatar billede jensen363 Forsker
24. juni 2008 - 10:55 #19
Jeg sagde ikke det er nemt, men det virker :-)
Avatar billede mugs Novice
24. juni 2008 - 10:56 #20
PK = Tabellens Primære Nøgle (Primary Key), som ale tabeller bør have
Avatar billede jensen363 Forsker
24. juni 2008 - 11:12 #21
Eksempel på qry Multiselect_1

SELECT *
FROM Multiselect_all_1
WHERE (((Multiselect_all_1.AAAXCD) In ("002","004","030")));
Avatar billede Slettet bruger
24. juni 2008 - 11:27 #22
Primary Key.... (..skoven for bare træer!~) jo det ku' godt være jeg havde set det før!~)
Avatar billede jensen363 Forsker
25. juni 2008 - 08:46 #23
Øh... hvordan blev udfaldet ?
Avatar billede mormie Nybegynder
26. juni 2008 - 15:54 #24
Jeg er i første omgang endt med at lave enkelte opslag uden, med max 3 "øverige deltagere". Alt det kodesprog kunne jg ikke helt fatte. Engang når jeg bliver bedre forsøger jeg nok igen.

Tak for de  mange forsøg på at hjælpe mig
Avatar billede jensen363 Forsker
26. juni 2008 - 15:59 #25
Hvis du ikke kunne bruge een af vores løsninger, er det helt legalt at tage point retur igen :-)
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