[Access] Combobox filter gebaseerd op vorige selectie

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Yagermeister
  • Registratie: December 2001
  • Laatst online: 18-09 17:03

Yagermeister

Bedrijfsprutser on call

Topicstarter
Voor een vriend van me ben ik een kleine database aan het maken. Echter loop ik tegen het volgend probleem aan.

Voor 1 van de subformulieren gebruik ik een combobox die met onderstaande code gevuld wordt. De protocolcode wordt opgeslagen in de onderliggende cel. Dit is een doorlopend formulier

code:
1
SELECT [tbl_Protocollen].[Protocolcode], [tbl_Protocollen].[Protocolnaam] FROM [tbl_Protocollen] ORDER BY [Protocolcode];


Dit werkt allemaal prima echter wil ik deze filteren. Ik zou graag willen dat als ik een protocol heb geselecteerd, dat deze niet meer in die lijst voorkomt.

Als ik dus bijv de volgende codes in de lijst heb: C1, C2, C3, C4. Als ik nou C3 als selectie pak moet bij het volgende record alleen C1, C2 en C4 komen te staan.

Ik heb het ooit eens gevonden echter weet ik niet meer waar en hoe. Ik heb al alle mogelijkheden gebruikt die me invielen om dit op te zoeken echter kom ik niet bij het goede uit.

Voor deze database gebruik ik op dit moment access2010.

[Edit]
Ik zie dat ik vanalles vergeten ben.

De protocollen staan in de tabel [tbl_Protocollen]. Het subform waar deze combobox in staat zit aan de tabel [tbl_Toetslijst] vast. in deze tabel staan de volgende kolomen: [id], [Protocolcode], [persooneelsid] en [Toetsing]. Toetsing en id zijn te verwaarlozen aangezien die hier niet van belang zijn. Op het hoofdform wordt via een query het persooneelsid gefilterd op de protocollen zodat ieder zijn eigen kaart krijgt. De kolom persooneelsid moet dus ook meegenomen worden in de filtering van betreffende combobox want anders lijkt het me dat persoon a wel alles ziet en persoon b mist ineens alles.

Ik geloof dat dit nu alle informatie is die nodig is.

[ Voor 26% gewijzigd door Yagermeister op 06-03-2011 10:51 . Reden: Toevoegingen ]

-Te huur


Acties:
  • 0 Henk 'm!

  • Marko_J
  • Registratie: Maart 2010
  • Laatst online: 15-03-2024
Je zegt dat je de combobox opbouwt met code. Ik ga er vanuit dat je daar VBA code mee bedoelt. In deze code kan je dan ook de 'WHERE' toevoegen.

Dit haalt namelijk alle records op:
SELECT Protocolcode, Protocolnaam FROM tbl_Protocollen ORDER BY Protocolcode;

En moet dus iets worden als:
SELECT Protocolcode, Protocolnaam FROM tbl_Protocollen WHERE protocolcode <> #gekozen protocolcode# ORDER BY Protocolcode;

Dat laatste kan je doen met VBA. Of je kan rechtstreeks naar een veld/control op een formulier verwijzen (probeer in query-overzicht maar eens de opbouw-functie bij criteria).
De kolom persooneelsid moet dus ook meegenomen worden in de filtering van betreffende combobox want anders lijkt het me dat persoon a wel alles ziet en persoon b mist ineens alles.
Nee dat is niet het geval.

Acties:
  • 0 Henk 'm!

  • Yagermeister
  • Registratie: December 2001
  • Laatst online: 18-09 17:03

Yagermeister

Bedrijfsprutser on call

Topicstarter
Ik heb zojuist dit bovenstaande geprobeerd echter denk ik dat ik alsnog een fout maak. De volgende 2 regels heb ik geprobeerd. Ik gebruik trouwens gewoon de rijbron om de combobox te vullen aangezien ik niet super bekend ben met vba.

code:
1
2
3
SELECT [tbl_Protocollen].[Protocolcode], [tbl_Protocollen].[Protocolnaam] FROM [tbl_Protocollen] WHERE [me]![Protocol] <> [tbl_Protocollen].[Protocolcode] ORDER BY [Protocolcode];

SELECT tbl_Protocollen.Protocolcode, tbl_Protocollen.Protocolnaam FROM tbl_Protocollen WHERE (((tbl_Protocollen.Protocolcode)<>[tbl_Protocollen].[Protocolcode])) ORDER BY tbl_Protocollen.[Protocolcode];


De 2de regel is gemaakt via de query maker. Ik krijg echter bij beide een popup waar die vraagt naar een input en als ik daar C4 bijv ingeef dan filtert hij die ook weg.


[EDIT]
Ik heb zojuist nog een gezocht en heb onderstaande gevonden (aangepast naar mijn situatie al)
code:
1
SELECT [tbl_Protocollen].[Protocolcode], [tbl_Protocollen].[Protocolnaam] FROM [tbl_Protocollen] WHERE [Protocolcode] Not IN (SELECT [Protocolcode] FROM [tbl_toetslijst] WHERE [tbl_toetslijst].[Protocolcode]=[tbl_Protocollen].[Protocolcode]);

Dit werkt echter als ik een andere persoon pak dan filtert hij alsnog alles. Dit is natuurlijk omdat hij naar die tbl_toetslijst kijkt waar alle info in is opgeslagen.

[ Voor 24% gewijzigd door Yagermeister op 07-03-2011 18:45 ]

-Te huur