keuzelijst1 OF keuzelijst2 voor criterium query

Status
Niet open voor verdere reacties.

anlag1

Gebruiker
Lid geworden
31 okt 2010
Berichten
144
Hallo allemaal,

Heb een eenvoudige query met daarin een tabel, nu is het zo dat de inhoud van een
keuzevak in een formulier het criterium is voor de query.
Nu wil ik deze zelfde query een ook hetzelfde veld van een criterium voorzien uit een keuzevak in een ander formulier.
Hoe is dit te realiseren?
bvd
Groet,
Andre
 
Ik zou zelf nooit voor zo'n oplossing kiezen, maar ieder zijn meug.... Je zou het ongeveer zo kunnen oplossen. In je query maak je een veld met de formule:
Code:
IIF([Formulier1]!Forms![Keuzelijst1] Is Null;IIF([Formulier2]!Forms![Keuzelijst2] Is Null;True;[Veld]=[Formulier2]!Forms![Keuzelijst2]);[Veld]=[Formulier1]!Forms![Keuzelijst1])

Bij deze formule zet je dan het criterium <> True

Het resultaat hiervan is dat als het eerste formulier gebruikt wordt, de waarde van deze keuzelijst gebruikt wordt. Is hij leeg, dan kijkt de formule naar de waarde van de tweede keuzelijst, anders zie je de velden van de eerste keuzelijst. Is de tweede ook leeg, dan zie je alle records.
 
Octafish,
Dank voor je reactie, je zou nooit voor zo'n oplossing kiezen, heb je een betere suggestie?
Gr,
Andre
 
Ik hou mijn queries doorgaans 'schoon', dus zonder criteria. Als ik een filter nodig heb, dan doe ik dat door het formulier dat 'op de query ligt' te filteren.
 
Ben beginnend accesser,
snap het niet helemaal,wat bedoel je met het formulier dat 'op de query ligt' te filteren?
 
Je begon zelf over keuzevakken op twee verschillende formulieren die je als criterium gebruikt. Dan heb je dus twee formulieren in gebruik, waarvan ik denk dat je ze op de query baseert. Dus in het formulier zie je de records uit de query. Je kunt dan inderdaad wel filteren zoals je dat nu doet, maar het is veel flexibeler om het criterium via VBA te maken, en dat op het formulier te zetten. Dat ziet er dan ongeveer zo uit:

Code:
sFilter=[Artikel]='" & Me.Tekstvak & "'"
Me.Filter=sFilter
Me.FilterOn=True
Deze code zet je dan op de gebeurtenis <Na bijwerken> van het tekstvak, zodat bij elke andere waarde die je typt het filter opnieuw wordt uitgevoerd. Zoals ik al zei: je hebt dan verder niks meer in je query staan, dus die blijft altijd werken. En op je formulier ben je zo flexibel als je maar kunt en wilt zijn. Let wel: het voorbeeldje is fictief; objectnamen zijn bij jou vast anders...
 
Octafish,
Dank voor je uitleg, heb het idee dat ik niet duidelijk genoeg ben geweest. De beschikbare waarden in de keuzevakken van beide formulieren komen uit query's die
niets van doen hebben met de query waarvan ik de criteria wil instellen. De waarde nodig voor de criteria van de qry wordt uit qry_x en qry_y betrokken middels de
keuzevakken in beide formulieren x en y. De waarden kunnen hetzelfde zijn maar hoeft niet. De criteria van de qry die moet worden ingesteld krijgt naast de waarde
uit een keuzevak ook het gegeven mee vanuit welke formulier de aanvraag komt, is dit x of y? Op basis hiervan wordt rapport x dan wel rapport y gegenereerd.
hopelijk is mijn bedoeling hiermee wat duidelijker.
Gr.
Andre
 
Alas, nee....
Op basis hiervan wordt rapport x dan wel rapport y gegenereerd.
Dat lees ik als: ik wil met één query twee verschillende rapporten aansturen, en dan nog onafhankelijk van elkaar ook. Maak anders een voorbeeldje, want ik snap het nu niet meer. Heb je nu twee formulieren tegelijk open? En moeten ze alletwee tegelijk gebruikt worden om de query te filteren? Of heb je altijd maar één formulier open (A of B) en moet het filter daarop worden gebaseerd? Snap ik nog steeds de twee verschillende rapporten niet.
 
Sorry, is idd wat lastig te snappen zo....
zal d.m.v. een tekeningtje probreren uit te leggen wat de bedoeling is,
je hoort nog.
Groet Andre
 
Dag Octafish,
Denk idd dat het anders moet, met wat je zei over qry's schoon houden.
Naar aanleiding hiervan heb het volgende:
Heb een formulier met een kader met daarin 4 keuzerondjes, op onderstaande wijze wordt gecontroleerd welk rondje "AAN" is.
afhankelijk welk rondje "AAN" is krijgt variable stDoctype een waarde.
daarna wordt frm_location geopend, hoe kan ik de variable stDoctype meenemen naar deze form?
Gr.
Andre


Private Sub Ok_Click()
On Error GoTo Err_Ok_Click
Dim stDoctype As String
Select Case Kader0
Case 1
stDoctype = "CMP"
Case 2
stDoctype = "CON"
Case 3
stDoctype = "STC"
Case 4
stDoctype = "PRJ"
End Select
Dim stDocName As String
Dim stLinkCriteria As String
stDocName = "frm_location"
DoCmd.OpenForm stDocName, , , stLinkCriteria
Exit_Ok_Click:
Exit Sub
Err_Ok_Click:
MsgBox Err.DESCRIPTION
Resume Exit_Ok_Click
End Sub
 
Door de variabele mee te geven als OpenArgs variabele:

Code:
    DoCmd.OpenForm stDocName, , , stLinkCriteria, , , stDoctype

Op het geopende formulier kun je de variabele weer opvragen met Me.OpenArgs.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan