Toon posts:

[Access] Query meerdere selecteren

Pagina: 1
Acties:

Verwijderd

Topicstarter
Zit hier met een klein probleempje waar ik niet uit kom.
Ik heb een tabel met een veld plaatsen.
Hier kan je kiezen uit 6 plaatsen.
Nu heb ik een formulier gemaakt met een pulldownbox waarin de 6 plaatsnamen staan en "Alle".
Het probleem ontstaat bij Alle plaatsnamen.
De onderstaande query heb ik ingevuld bij plaatsnamen en alle 6 werken maar als je ze allemaal wil laten zien niet dus.

Hoe kan je dit oplossen?
Ik heb niet veel verstand van access en SQL, helaas....

code:
1
IIf([Forms]![Selectiescherm]![Plaatsen]="Alle","Leeuwarden" or "Drachten" or enz...,[Forms]![Selectiescherm]![Plaatsen]


Heb al van alles geprobeerd en al aardig wat gezocht maar ben er nog niet tegen aan gelopen. Is misschien erg simpel, maar daar kan je soms zo verkeerd tegen aan zitten kijken....

Verwijderd

Bij alle moet je dan als optie hebben > '' omdat je nu waarschijnlijk heb staan = 'alle' en dat veld bestaat niet :)

Verwijderd

Topicstarter
Verwijderd schreef op 13 August 2003 @ 12:17:
Bij alle moet je dan als optie hebben > '' omdat je nu waarschijnlijk heb staan = 'alle' en dat veld bestaat niet :)
Die ="Alle" komt uit het dropdownbox van het formulier. Zodra die gekozen wordt moet de query worden uitgevoerd die alle plaatsnamen laat zien.

  • Feyd-Rautha
  • Registratie: November 2001
  • Laatst online: 02-08-2025
Je moet je query dynamisch laten aanmaken.

code:
1
2
3
4
5
6
7
8
9
dim Select as String

Select = "Select * FROM table"

IF (... = 'alle') THEN
   Select = Select + " WHERE .... IN ('Leeuwarden', ... )"
ELSE
   Select = Select + " WHERE .... = [Forms]![Selectiescherm]![Plaatsen] "  
END IF


De string 'Select' moet je dan aan de Datasource van de betreffende control koppelen

Hint:
Indien uw plaatsnamen ook uit een tabel komen, wat hopelijk het geval is, kan je na die IN-operator terug een SELECT uitvoeren.

[ Voor 45% gewijzigd door Feyd-Rautha op 13-08-2003 12:42 ]

I must not fear. Fear is the mind-killer. Fear is the little-death that brings total obliteration. I will face my fear. I will permit it to pass over me and through me. Where the fear has gone there will be nothing. Only I will remain.


Verwijderd

Topicstarter
Feyd-Rautha schreef op 13 augustus 2003 @ 12:41:
Je moet je query dynamisch laten aanmaken.

code:
1
2
3
4
5
6
7
8
9
dim Select as String

Select = "Select * FROM table"

IF (... = 'alle') THEN
   Select = Select + " WHERE .... IN ('Leeuwarden', ... )"
ELSE
   Select = Select + " WHERE .... = [Forms]![Selectiescherm]![Plaatsen] "  
END IF


De string 'Select' moet je dan aan de Datasource van de betreffende control koppelen

Hint:
Indien uw plaatsnamen ook uit een tabel komen, wat hopelijk het geval is, kan je na die IN-operator terug een SELECT uitvoeren.
Ik heb niet veel verstand van access en SQL, helaas.... dit gaat mij dus alweer te ver...

Verwijderd

Worden dit er straks meer? of blijft het bij deze 6 plaatsnamen?

Komen de plaatsnamen uit een tabel (dynamisch), of zijn ze vastgelegd in je combobox als opties?

Als de opties niet dynamisch zijn (anders ook, maar is iets meer werk ;) ) kan je gebruik maken van een listbox en de optie multiple selection aanzetten. Je kan dan meerdere opties kiezen, en deze output dan gebruiken voor je query oid.

de oplossing van feyd-rautha is trouwens wel de beste, maar maak je gebruik van VBA?? :P

Verwijderd

Topicstarter
Ok dat is inderdaad het makkelijkst. Het blijven namelijk maar 6 plaatsen, zullen er niet meer worden. Ik zal eens met een listbox stoeien, dat lijkt een veel makkelijkere oplossing.

Verwijderd

Ik snap het probleem niet helemaal, maar als ik een dergelijke combobox dynamisch wil vullen, gebruik ik altijd een UNION.
Bijvoorbeeld:

SELECT 0 as Id, "<alles>" as Plaats
FROM tblPlaats
UNION SELECT tblPlaats.pltId AS Id, tblPlaats.pltNaam AS Plaats
FROM tblPlaats;

Deze query als rijbron gebruiken en klaar! geen omkijken meer naar. Als de combo gelijk is aan 0, dan moet alles geslecteerd worden, en anders alleen de geslecteerde plaats.

[ Voor 4% gewijzigd door Verwijderd op 13-08-2003 16:00 ]


  • whoami
  • Registratie: December 2000
  • Laatst online: 21-08 22:54
Verwijderd schreef op 13 August 2003 @ 12:51:
[...]


Ik heb niet veel verstand van access en SQL, helaas.... dit gaat mij dus alweer te ver...
Leuke instelling is dat. Ben je dan niet bereid om dingen bij te leren?

Jouw opmerking is hetzelfde als:
Ik kan alleen maar met de fiets rijden, autorijden gaat me te ver, dus ik doe en leer het maar niet.
Verwijderd schreef op 13 August 2003 @ 12:54:

de oplossing van feyd-rautha is trouwens wel de beste, maar maak je gebruik van VBA?? :P
Het principe wel, maar de uitwerking niet. :P
Als je 'alle' geselecteerd hebt, dan hoef je dat niet in je WHERE te gaan zetten. Je moet er nl. niets uit filteren.

[ Voor 45% gewijzigd door whoami op 13-08-2003 16:27 ]

https://fgheysels.github.io/


  • NetForce1
  • Registratie: November 2001
  • Laatst online: 13:00

NetForce1

(inspiratie == 0) -> true

Het kan zijn dat ik nu verschrikkelijk blaat, dan moet je het maar zeggen :P, maar als elk record een van die zes plaatsnamen heeft, kun je als 'alle' gekozen wordt, toch doen:
SQL:
1
 SELECT * FROM Tabel 

[ Voor 12% gewijzigd door NetForce1 op 13-08-2003 17:26 ]

De wereld ligt aan je voeten. Je moet alleen diep genoeg willen bukken...
"Wie geen fouten maakt maakt meestal niets!"


Verwijderd

Topicstarter
whoami schreef op 13 augustus 2003 @ 16:25:
[...]


Leuke instelling is dat. Ben je dan niet bereid om dingen bij te leren?

Jouw opmerking is hetzelfde als:
Ik kan alleen maar met de fiets rijden, autorijden gaat me te ver, dus ik doe en leer het maar niet.
[...]
Nee ik wil niet bijleren, alleen hetgeen ik nodig heb. Ik ga geen dingen opslaan die ik later toch niet meer nodig heb. Ik wil alleen weten hoe dit werkt zodat ik de database voor mn werk kan afmaken en voor de rest wil ik hier niet zoveel mee te maken hebben. Kan toch? Dit is mijn vakgebied niet en hoeft voor mij ook niet zo nodig. Ik help hier alleen wat mensen uit de brand.

Er zijn best simpele oplossingen mogelijk, kan niet anders, alleen ik kan er niet opkomen. Nu probeer ik dat eerst met die listbox want ik denk dat dat wel eens kan gaan werken.

[ Voor 3% gewijzigd door Verwijderd op 13-08-2003 19:12 ]


  • Feyd-Rautha
  • Registratie: November 2001
  • Laatst online: 02-08-2025
Het principe wel, maar de uitwerking niet. :P
Als je 'alle' geselecteerd hebt, dan hoef je dat niet in je WHERE te gaan zetten. Je moet er nl. niets uit filteren.
|:( inderdaad ...

* Feyd-Rautha gebruikt soms nog wel eens een omweg :)

I must not fear. Fear is the mind-killer. Fear is the little-death that brings total obliteration. I will face my fear. I will permit it to pass over me and through me. Where the fear has gone there will be nothing. Only I will remain.


  • Boss
  • Registratie: September 1999
  • Laatst online: 10:17

Boss

+1 Overgewaardeerd

Misschien snap ik het niet, maar kan je bij alle niet gewoon het filter weglaten?
Je kan kiezen uit A,B,C,D of E. Daar kan je op filteren. Als je opgeeft ALLE en je gebruikt dan geen filter, dan heb je ze toch ook allemaal?

Volgens mij wordt hier een oplossing gezocht voor een niet bestaand probleem :)

The process of preparing programs for a digital computer is especially attractive, not only because it can be economically and scientifically rewarding, but also because it is an aesthetic experience much like composing poetry or music.

Pagina: 1