Toon posts:

[Access] Parameterquery met dropdownmenu

Pagina: 1
Acties:
  • 1.187 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Wij willen graag een parameterquery maken, waarin gekozen kan worden uit bepaalde inputwaarden. Bijvoorbeeld zoals bij Smulweb, waar je kan kiezen of je een hoofdgerecht, lunch etc. wil maken. Nu moeten we in de parameterquery steeds zelf de waarde invoeren ipv kiezen uit een dropdown menu.
Ook willen we verschillende waarden in 1 query dialoogvenster weergeven (weer met als voorbeeld smulweb waar je op 1 pagina kunt kiezen voor het soort gerecht en bijvoorbeeld de bereidingstijd)

Weet iemand hoe dit moet?
De database is gemaakt in Access 2003

  • Millennyum
  • Registratie: Januari 2001
  • Laatst online: 04-05-2023
Je maakt een formulier aan, gooit er een dropdown box op met de wizard aan en geeft aan welke velden erin moeten komen te staan :?

En dan een scriptje achter een button --> bij On_Click event haal je de geselecteerde waarden uit de velden en die gooi je in je query. Zoiets als SELECT * FROM Tabel WHERE Veld = [Dropdownbox].Value?

[ Voor 44% gewijzigd door Millennyum op 24-05-2005 17:00 ]


  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

Of, ter aanvulling, iets simpeler: in je queryontwerp laat je de parameters direct verwijzen naar het formuliertje. Bv: forms!frmMijnDialoogje.hetDropDowngeval

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland


Verwijderd

Topicstarter
we hebben dit geprobeerd, maar nu nog een vraag: hoe voer je de query uit en hoe laat je de resultaten zien: in een report? Wat is hiervoor de VBA code?

[ Voor 12% gewijzigd door Verwijderd op 01-06-2005 17:32 ]


  • Boss
  • Registratie: September 1999
  • Laatst online: 06-08 22:22

Boss

+1 Overgewaardeerd

Met DoCmd.RunSQL kan je een (update) query uitvoeren, en een update query heeft geen resultaat en dat kan je dus ook niet laten zien in een rapport.

Als de opmaak van het rapport steeds hetzelfde is (dezelfde kolommen) dan kan je het rapport openen met DoCmd.OpenReport en dan het juiste filter meegeven (zie de help bij DoCmd.OpenReport). Een andere manier is om via CurrentDB>QuerieDefs("qryTemp").SQL = "HIER DE SQL" de sql van een bepaalde query aan te passen en dan het op die querie gebaseerde rapport openen.

Dus... keuze genoeg!

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.


Verwijderd

kan je niet gewoon zeggen recordsource= sqlq
waarbij sqlq de sql zin is.

  • Boss
  • Registratie: September 1999
  • Laatst online: 06-08 22:22

Boss

+1 Overgewaardeerd

Het lastige bij een rapport is dan dat dat niet vanuit een ander object (formulier) kan. Dan moet je dus eerst het rapport openen, en dan met code vanuit het rapport zijn eigen recordsource aanpassen. Op zich wel mogelijk, maar ik vind dat zelf nooit zo duidelijk.

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.


Verwijderd

Topicstarter
Op zich hebben we nu een query die waarden uit de combobox haalt, maar hij haalt steeds de waarde nul eruit. In de combobox kun je kiezen uit tekstuele waarden en het zou handig zijn als die ook in de query ingevoerd moeten worden. Iemand een idee hoe?

  • zwippie
  • Registratie: Mei 2003
  • Niet online

zwippie

Electrons at work

De combo-bron kan een query of tabel zijn waarbij je aan kan geven welke kolom(men) je wilt laten zien (vaak een tekst/naampje) en wat de afhankelijke kolom is (dit is vaak de kolom met een numeriek id). Met kolombreedte van de combo kun je aangeven wat er moet laten worden zien (breedte nul is niet laten zien, dat kun je voor de id doen).

Om aan de hand van de gekozen waarden iets te laten zien gebruik je de value van de combobox in een andere query, het resultaat kun je laten zien als report, formulier, whatever.

How much can you compute with the "ultimate laptop" with 1 kg of mass and 1 liter of volume? Answer: not more than 10^51 operations per second on not more than 10^32 bits.


Verwijderd

Topicstarter
Bedankt voor de hulp zover. Tot nu toe heb ik een form met comboboxen waar je selectiecriteria kan opgeven en een knop om de query uit te voeren. Voor zover is mijn probleem dus opgelost. Enige minpuntje is dat het resultaat van de query bestaat uit alle velden van de tabel waarin hij zoekt. In de design view van de query kan ik wel aangeven welke velden hij moete laten zien (via properties>Show all fields = no), maar als ik de query dan opniew run, reset hij de waarden die ik heb veranderd en zet hij de Show alle field dus weer op 'yes', waardoor ik weer alle velden van de tabel zie. Weet iemand hoe ik dit resetten van de properties kan voorkomen?

  • zwippie
  • Registratie: Mei 2003
  • Niet online

zwippie

Electrons at work

Moeilijk te zien zo zonder code of formulieren, maar wat je kan proberen:

- In je query het gedeelte SELECT * FROM veranderen in SELECT id, naam, adres FROM (oid), in de query ontwerper kan je ook per veld aangeven of het veld getoond moet worden.
- Een nieuw formulier maken voor het resultaat van de query, hier kun je helemaal zelf bepalen welke velden je wilt laten zien.

Het ligt er een beetje aan hoe je het tot nu toe hebt opgelost, maar in Access kan bijna alles wel op meerdere manieren :)

How much can you compute with the "ultimate laptop" with 1 kg of mass and 1 liter of volume? Answer: not more than 10^51 operations per second on not more than 10^32 bits.


Verwijderd

Topicstarter
bedankt weer. Weet je ook een oplossing voor het feit dat je soms alle waarden van een bepaald veld wil hebben. Even een voorbeeld voor de duidelijkheid: formulier met 2 comboboxen hoeveelheid en prijs. (gekoppeld aan een tabel met producten bijvoorbeeld) Je wil wel een bepaalde hoeveelheid, maar de prijs maakt je niet uit. Je wil dan dus bij hoeveelheid een item uit de lijst kiezen, maar bij prijs niet. Idee hoe dit te doen?

  • zwippie
  • Registratie: Mei 2003
  • Niet online

zwippie

Electrons at work

Ik begrijp je laatste vraag niet helemaal (sorry, ik vind je voorbeeld nog niet erg duidelijk ;) ), maar misschien ben je op zoek naar:

- Een berekend veld: maak een nieuw tekstveld met als besturingselementbron een waarde als:
=[prijs]*[cmbHoeveelheid]
waarbij cmbHoeveelheid een combobox (type: lijst met waarden) is met als rijbron 0;1;2;3;4;5 en prijs natuurlijk de prijs van het artikel die je uit je tabel haalt.

Geef anders nog maar een voorbeeld, ik ben in een hele behulpzame bui! :)

How much can you compute with the "ultimate laptop" with 1 kg of mass and 1 liter of volume? Answer: not more than 10^51 operations per second on not more than 10^32 bits.


Verwijderd

Topicstarter
Ik maak graag gebruik van jouw behulpzame bui en daarom probeer ik het voorbeeld te verduidelijken. Ik ga weer uit van de hoeveelheid en prijs. Stel ik handel in camera's en ik wil bij de groothandel (van wie deze database dan dus is) camera's bestellen. Maar ik wil wel zeker weten dat ze er bijvoorbeeld 10 hebben. Het interesseert me niks hoe duur ze zijn. Dan is de query weer een form met twee comboboxen, 1 voor prijs en 1 voor hoeveelheid. Ik voer dan dus bij hoeveelheid 10 in, maar prijs laat ik leeg. Ik wil dan dus alle camera's krijgen waar er 10 van zijn met alle prijzen. 1 combobox geeft dus geen waarde door aan de query, in onderstaande code (met 1 combobox) krijg ik dan een foutmelding omdat hij dus geen waarde op kan halen

Dim waarde2 As String

waarde2 = Val(prijs) (hier gaat het dan dus fout)

Set qdefTest = CurrentDb.QueryDefs("test")


qdefTest.SQL = "SELECT Products FROM Camera's WHERE [prijs] = '" & waarde2 & "'"

DoCmd.OpenQuery "test", acNormal, acEdit

  • zwippie
  • Registratie: Mei 2003
  • Niet online

zwippie

Electrons at work

Welk type heeft het veld prijs in de database? Dit is waarschijnlijk van een type valuta of numeriek, maar in je query wil je prijs vergelijken met een string-waarde. Je moet de query dus ietsje aanpassen en de enkele quotes om waarde2 weglaten:
code:
1
qdefTest.SQL = "SELECT Products FROM Camera's WHERE [prijs] = " & waarde2

How much can you compute with the "ultimate laptop" with 1 kg of mass and 1 liter of volume? Answer: not more than 10^51 operations per second on not more than 10^32 bits.

Pagina: 1