Dropdown menu éénmalig selecteren

Status
Niet open voor verdere reacties.

bomfunkmcs

Gebruiker
Lid geworden
6 okt 2010
Berichten
30
Goedemiddag,

Allereerst excuses dat ik geen bijlage toegevoegd heb, maar ik moet het formulier nog ontwikkelen. Alvorens wil ik weten of het überhaupt mogelijk is wat ik wil.

Het gaat erom dat er een formulier komt voor personen die verschillende apparaten hebben. Zodra ik de naam van de persoon intyp in het formulier wil ik een dropdown met een aantal serienummers van hardware hebben. Nou komt het probleem, als ik een serienummer uit dit dropdown menu selecteer, wil ik dat deze niet meer geselcteerd kan worden bij een ander persoon. Zodra de persoon met serienummer verwijderd word is het de bedoeling dat het serienummer wel weer geselecteerd kan worden. Ik hoop dat het een beetje duidelijk, zo niet hoor ik het ook graag.

Bij voorbaat dank voor de reacties!
 
zet achter de combobox een query die lijkt op dit:

select serienummer from serienummertabel1 where serienummer not in (select serienummer from selectedserienummers)

Enjoy!
 
Bedankt voor je reactie! Het is me alleen niet helemaal duidelijk hoe dat zit met selectedserienummers. Moet ik dan nog een tabel aanmaken waar de geselecteerde serienummers in weggeschreven worden? Ik heb het contact formulier voorbeeld gebruikt van Acces en een beetje aangepast. Ik zou graag even het test bestand als bijlage toe willen voegen maar ik krijg de fout: ongeldig bestand, zie ik iets over het hoofd?
 
Excuses, ik had het sticky over bijlage over het hoofd gezien:) Hier is de test database die ik nu heb. Is het trouwens ook mogelijk om Contactpersoongegevens aan te passen boven in het formulier? Sorry voor alle vragen, maar dit is het eerste wat ik doe in Access:$
 

Bijlagen

Je geeft niet helemaal helder aan wat je precies wilt. Als je een vaste 'terugloop' in je keuzelijst wilt, zul je in je onderliggende tabel met bijvoorbeeld een selectievakje aan kunnen geven of iets is uitgegeven of niet. In je keuzelijst gebruik je dan een criterium op basis van dat selectievakje.
Ik gebruik zelf vaak de volgende constructie:

Code:
Private Sub cboParam1_AfterUpdate()
Dim sTmp() As String
    strOri = Me.cboParam1.RowSource
    sTmp = Split(strOri, ";")
    For i = LBound(sTmp) To UBound(sTmp)
        If Me.cboParam1 <> sTmp(i) Then strSQL = strSQL & sTmp(i) & ";"
    Next i
    If Right(strSQL, 1) = ";" Then strSQL = Left(strSQL, Len(strSQL) - 1)
    
    Me.cboParam2.RowSource = strSQL
    Me.cboParam2.Requery
    Me.cboParam2.Enabled = True
End Sub

Deze constructie gebruik ik om bijvoorbeeld 5 keuzelijsten te vullen met in beginsel dezelfde gegevens, minus degene die in de vorige keuzelijst is geselecteerd.
 
Als je de db ook nog in 2003 format kunt posten, kan ik er ook een blik op werpen...
 
Hier is hij in 2003 formaat.

Sorry dat ik niet helemaal duidelijk was. In dit voorbeeld heb je een tabblad in het formulier met het IMEI nummer en Simcard nummer. Hier staat nu test1 t/m test5 en nou moet het zo worden dat als ik bij contactpersoon test1 bijvoorbeerd IMEI test1 selecteer, dat test1 bij contactpersoon test2 niet meer te selecteren is. Indien contactpersoon test1 met IMEI test1 verwijderd word, zou IMEI test1 wel weer geselecteerd moeten kunnen worden bij contactpersoon test2. Ik hoop dat het nu wat duidelijker is.

PS Bedankt voor de snelle reacties!
 

Bijlagen

Kijk maar in mijn sig. Zip is native in windows. dus ik installeer niets anders. ik kan je dus niet helpen.
 
Helaas Guus, ik begrijp je standpunt. Alle respect en evengoed bedankt voor je reacties. Ik krijg het in zip formaat alleen helaas niet onder de 100kb:(

Nog even gezocht naar het "comprimeren en herstellen" en het is gelukt:)
 
Laatst bewerkt:
Dit is bijna wat ik bedoel. Hier is het zo dat als bij IMEI een serienummer selecteer dat die bij Simcardnummer niet meer te selecteren is, alleen moet het zijn als volgt:

Persoon 1:

Naam: test1
IMEI: test1
Simcardnr: test1

dan moet persoon met als naam test2 dus IMEI nummer test1 en Simcardnr test1 niet kunnen selecteren.

Maar dit is een goed begin, ik zal in de tussentijd even kijken of ik het zelf voor elkaar krijg met hetgeen wat jij gedaan hebt. Hartelijk dank!
 
Daarvoor zul je de waarden op moeten slaan in een tabel, of zoals ik al aangaf met een checkbox opties aan- en uitzetten. M.b.v. een criterium in de bron van je keuzelijst zie je dan de geselecteerde opties niet meer. De oplossing die ik heb gemaakt werkt alleen voor keuzelijsten die binnen één formulierpagina (record dus eigenlijk) werken.
 
Oke, dan ga ik dat meteen even doen. Kan ik het beste voor elke soort serie nummer (verschillende apparaten) een aparte tabel maken neem ik aan?
 
IMEi nummers en Simkaart nummers zijn verschillende entiteiten, dus die zou ik in verschillende tabellen opslaan.
 
Oke, ik heb nu de tabellen aangemaakt met IMEI en Simcardnr met een aantal nummers erin. Nou kan ik dus de gegevens uit die tabellen oproepen. Kan ik dan vervolgens het gedeelte gebruiken wat Guus voorstelde, of iets vergelijkbaars wat u gebruikte in het voorbeeld?
 
Dat hangt er nog vanaf hoe je de velden uit die tabellen opslaat. Als je in de tabel tPersoon de velden [IMEI] en [Simkaart] hebt gemaakt, kun je die gebruiken in de Rijbron query voor je keuzelijst. Je krijgt dan iets als:

Code:
SELECT [IMEI_ID], [IMEI] FROM tIMEI WHERE IMEI_ID NOT IN (SELECT IMEI FROM tPersoon WHERE IMEI Is Not Null)
waarbij je het sleutelveld [IMEI_ID] dus opslaat in de tabel tPersoon.
 
Bekijk bijlage Monteurs-test2003-2.rar

Ik heb het ingevoerd maar krijg het niet voor elkaar. Heb al met de tabel namen gespeeld zoals mij logisch lijkt dat het zou moeten zijn maar blijkbaar is mijn logisch inzicht niet zo best:p Ik krijg steeds de melding Expected: Case.

Kan iemand er misschien even naar kijken en me in de goede richting sturen?

Bij voorbaat dank.

12-10-2010

Ik heb nog even geprobeerd maar krijg het niet voor elkaar. In je voorbeeld komt tIMEI en tPersoon voor. Nou snap ik dat dat voor tabel staat, maar is het gebruikelijk dat je daarmee alleen aangeeft dat het om een tabel gaat voor jezelf of dient dit ondanks dat de tabel alleen de naam IMEI draagt toch ervoor gezet te worden?
 
Laatst bewerkt:
Ik ben inmiddels weer een stukje verder, ik had het helemaal verkeerd gezien en i.p.v. bij de Rijbron Query alles in het programma code gezet. Nu loop ik alleen nog tegen een klein probleempje aan.

Ik heb bij de IMEI combobox de volgende query opgegeven:

Code:
SELECT Telefoon.ID, Telefoon.IMEI FROM Telefoon ORDER BY Telefoon.ID;

En bij de Combobox telefoon nummer:

Code:
SELECT Telefoon.ID, Telefoon.Telnr, Telefoon.ID FROM Telefoon WHERE (((Telefoon.ID)=Forms![Combo Form]!Telefoon)) ORDER BY Telefoon.ID;

Nu is het zo dat als ik een IMEI nummer selecteer, en een schermpje verschijnt met de tekst "Forms!Combo Form!Telefoon" waarin ik een ID in kan voeren. Als ik bijvoorbeeld ID nummer "5" invul komt het Telefoon nummer wat bij IMEI nummer 5 hoort netjes als enige in het dropdown box te staan, maar hoe kan ik dit automatiseren? Hij moet dus in de combobox (telefoon) hetzelfde ID gebruiken als in de IMEI combobox.

Als ik het niet helemaal duidelijk uitleg hoor ik het ook graag.
 
Er klopt iets niet in de code; op het moment dat je een keuzelijst als criterium gebruikt om een waarde te selecteren moet de waarde uit die keuzelijst genomen worden. Als de inputbox verschijnt, betekent dat simpel gezegd dat de naam van de keuzelijst niet herkend wordt. Access maakt van de naam dan een parametervraag. Een beetje vergelijkbaar met het plaatsen van een criterium [Typ de startdatum:] in een datumveld. Dat levert bij uitvoeren van de query het vraagveld: [Typ de startdatum] op als je de query uitvoert.
Mijn vraag is dus: klopt de naam van de keuzelijst wel? Je gebruikt namelijk zo te zien de keuzelijst Telefoon in het criterium <WHERE (Telefoon.ID=Forms![Combo Form]!Telefoon)> . Ik zou hier dit verwachten: <WHERE (Telefoon.ID=Forms![Combo Form]!cboIMEI)> .
 
Laatst bewerkt:
Toch niet netjes om te dubbelposten, en dat niet te melden...

Goed bezig(Y)

1. je stuurt me door naar een site van een concurrent.
2. het onderwerp daar lijkt op niks uit te lopen.
3. ik steel geen topics.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan