Selectie op basis van keuzelijst

Status
Niet open voor verdere reacties.
Kijk, je zegt het zelf al:

Nee liever de resultaten van een query weergegeven in een formulier met tabelvorm (zo heb ik het nu opgebouwd tenminste).

De resultaten komen dus in een formulier! Hoe je ze weergeeft op dat formulier is niet van belang, het is een formulier en niet een tabel!

Op een formulier kun je zoveel knoppen zetten als je wilt. Middels de code onder de knoppen kun je alles doen wat je hartje begeert (moet je wel even programmeren natuurlijk ;) )

Wat wil je nu nog toevoegen aan je formulier?
 
kijk aan, stapje voor stapje komen we er wel..

okay ik was even in de war met de benaming voor de opmaak van het formulier (tabelvorm) en een daadwerkelijke tabel.. ehehe

goed.. op het formulier staan gewoon de resultaten van de query in tabelvorm met achter elke rij een knop 'openen' waarmee het pdfje wordt geopend... dat is allemaal geen probleem, dat heb ik al en werkt perfect.

nee het is die tussenstap, de query om het formulier mee te vullen.. die query moet een selectie uitvoeren op de tabel 'projectbladen' waarbij je uit een keuzemenu met invoerlijst een vakgebied kan kiezen.

Stel je deze gewenste situatie voor:
Ik wil alle projectbladen met het vakgebied 'procesmanagement'. Via het schakelbord klik ik op 'Zoek op vakgebied'. Dan verschijnt er een popup met een keuzelijst waarin ik 'procesmanagement' kan selecteren. Vervolgens druk ik op ok, dan verschijnt het formulier 'SELECTIE VAKGEBIEDEN' dat zich vult met alle projectbladen in het vakgebied 'procesmanagement'. Uit dat getoonde overzicht kies ik één projectblad en ik klik op de knop openen om het pfdje te openen..

helder?
 
@fdingen. Geen vervuiling plaatsen in de posts van anderen, dat is erg verstorend!

@efthem
Je hebt dan helemaal geen query nodig.
Je kunt op het onclick event van je combobox waarin je het vakgebied selecteert meteen het formulier openen.

De code daarvoor is niet zo moeilijk, dit is een voorbeeldje:

Dim stDocName As String
Dim stLinkCriteria As String

stDocName = "frmCategorieDetails"
stLinkCriteria = "[ID]=" & CStr(lstCategorie.ItemData(Me.lstCategorie.ItemsSelected.Item(0)))
DoCmd.OpenForm stDocName, acNormal, , stLinkCriteria, acFormEdit

De grote truuk zit hem in het vullen van stLinkCriteria, dat is hetzelfde als de WHERE clausule van een query.
Bij jou zal dat er ongeveer zo uitzien:

stLinkCriteria = "[vakgebied]=" & CStr([Forms]![Vakgebieden]![Keuzelijst met invoervak6])

Je formulier zal dan alleen de records van het betreffende vakgebied tonen.
Als het niet lukt: effies de mdb posten.
 
Kijk dat ziet er interessant uit..

Ik heb het geprobeerd, maar het werkt niet helemaal.. ik krijg geen resultaten op mijn formulier. Volgens mij klopt dat ook wel, want er staat nergens aangegeven uit welke tabel hij de gegevens moet halen. Enkel welk formulier hij moet openen en met welke criteria..

Ik heb nu de volgende code gebruikt:

Code:
Private Sub Keuzelijst_Click()
Dim stDocName As String
Dim stLinkCriteria As String

stDocName = "frmSelectieVakgebieden"
stLinkCriteria = "[Vakgebied]=" & CStr([Forms]![Vakgebieden]![Keuzelijst])
DoCmd.OpenForm stDocName, acNormal, , stLinkCriteria, acFormEdit, acWindowNormal


End Sub
 
Je formulier is natuurlijk gebaseerd op een query of op een tabel. In die query hoef je dan niet te selecteren op vakgebied, dat doe je pas bij de aanroep van je formulier. Het veld vakgebied moet wel voorkomen in je query bij je formulier.

Als je het formulier dan opent door er op te dubbelklikken zie je alle vakgebieden, open je het formulier via de code dan zie je alleen het geselecteerde vakgebied.
 
tjonge jonge dit is echt stappen werk.. maar het werkt.. steeds dichterbij!

Als ik het formulier direct open krijg ik nu inderdaad alle resultaten te zien (ik heb er een query aangekoppeld zoals je zei)..

open ik het formulier echter via de keuzelijst dan krijg ik na selecteren deze melding:

Parameterwaarde opgeven (in de titel)
Vakgebied

en dan een invoervak met ok en annuleren eronder..

wat te doen? Ik kan de mdb niet meer plaatsen want hij is te groot geworden..

EDIT:

Ik heb 2 records in de tabel staan in het vakgebied 'Marktanalyse'. Wanneer ik als parameter '2' opgeef krijg ik de records inbeeld, geef ik 1 op dan krijg ik niets ...

deze code gebruik ik voor het formulier met de keuzelijst:

Code:
Private Sub Keuzelijst_Click()
Dim stDocName As String
Dim stLinkCriteria As String

stDocName = "frmSelectieVakGebied"
stLinkCriteria = "[Vakgebied]=" & CStr([Forms]![frmSelectVakGebied]![Keuzelijst])
DoCmd.OpenForm stDocName, acNormal, , stLinkCriteria, acFormEdit, acWindowNormal


End Sub
 
Laatst bewerkt:
hmm het heeft zeker weten te maken met de aanhalingstekens..

ik lees op internet terug dat wanneer de in te voeren waarde een tekststring is, dat er dan enkele aanhalingstekens omheen moeten. Ik heb echter van alles geprobeerd, maar werkt nog steeds niet :(
 
Inderdaad, het heeft te maken met aanhalingstekens.

stLinkCriteria = "[Vakgebied]=" & CStr([Forms]![frmSelectVakGebied]![Keuzelijst])

Het veld [Vakgebied] bevat een string. Als je een string in een query zet (stLinkCriteria bevat de WHERE clausule van een query) dan moet je daar enkele quotes omheen zetten.

stLinkCriteria = "[Vakgebied] = '" & CStr([Forms]![frmSelectVakGebied]![Keuzelijst]) & "'"
 
goedemorgen!

we gaan vrolijk verder :thumb:

helaas, met die code komt nog steeds dezelfde popup in beeld..

Als ik dan in die popup 'marktanalyse' invoer, krijg ik wel de resultaten terug..
 
In je tabel tblProjectBladen zit het veld ProjectVakgebied. Deze tabel is gekoppeld aan je formulier frmSelectieVakGebied.
Je probeert nu te selecteren op het veld Vakgebied, dat zit dus niet in je formulier.
Je WHERE clausule klopt dus niet, daarom komt de popup.

stLinkCriteria = "[ProjectVakgebied] = '" & CStr([Forms]![frmSelectVakGebied]![Keuzelijst]) & "'"

Is de goede regel.
 
fantastisch!

het werkt... eindelijk!

Geweldig joh, super bedankt voor de hulp... nu kan ik het systeem afmaken en gebruiken.

:thumb: :thumb: :thumb:
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan