Toon posts:

[Access] Meerdere keuzes in form

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

Verwijderd

Topicstarter
Ik wil een selectieform maken waarbij het mogelijk is om en/of selecties te maken.

Dus uit één kolom (vestiging) een en/of keuze maken uit twee soorten (profit en non-profit). Uit de kolom status moeten uit vijf verschillende soorten en/of keuzes gemaakt worden (lopend, afgerond, informatie, etc.).
Ben al een hele tijd aan het zoeken, de enige oplossing die ik zelf kan verzinnen is voor alle keuzes een apparte querie te maken. Worden dus erg veel queries en forms dus geen echte oplossing.
Iemand enig idee hoe dit op te lossen?

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 02-09 13:02

gorgi_19

Kruimeltjes zijn weer op :9

5x een kolom aanmaken met de velden in je tabel, met als veldtype yes/no.
In je form kan je deze dan aangeven door middel van checkboxen?

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
Heb effe de tekst gewijzigd. Haalde tabel en kolom door elkaar.

Vijf nieuwe kolommen maken lost volgens mij niks op. Ik hou dan één kolom (status) over met vijf verschillende waardes (lopend, afgerond, etc.) Deze kan ik volgens mij niet koppelen aan de vijf ja/nee kolommen. Ik kan dan in ieder geval niet zorgen dat hieruit een overzicht komt.

  • nescafe
  • Registratie: Januari 2001
  • Laatst online: 21:20
Je kunt de keuzes uit een tabel halen of zelf invoeren, en in een Keuzelijst weergeven. In een keuzelijst kan een persoon één of meerdere items selecteren (met CTRL ingedrukt kun je er meerdere kiezen)

Vervolgens kun je de geselecteerde items in een query ombouwen. Ik heb dat al eens gedaan. Hier, enkel als voorbeeld, een voorbeeld, dat achter een actieknop hangt. Het gaat om een keuzelijst met een aantal klassen waarvan er één of meerdere gekozen kunnen worden
code:
1
2
3
4
5
6
7
8
9
10
11
12
    sqlLL = "SELECT Gegevens.Naam, Gegevens.Klas, Gegevens.AB FROM Gegevens"

    For Each varelement In Me.Lijst_klassen.ItemsSelected
      sqlWhere = sqlWhere & "(Gegevens.Klas=""" & Me.Lijst_klassen.ItemData(varelement) & """) Or "
      selCount = selCount + 1
    Next varelement

    If (selCount > 0) Then
      sqlLL = sqlLL & " WHERE (" & Left(sqlWhere, Len(sqlWhere) - 4) & ")"
    Else
      sqlLL = sqlLL & " WHERE (1=0)"     ' er is niets geselecteerd, dus laat gewoon niks zien
    End If

Let niet op de code, het werkt in ieder geval:)

Je krijgt nu een query met een variabel aantal "(Gegevens.Klas=[keuze]) Or ", en "Len(sqlWhere) - 4)" zorgt ervoor dat de laatste Or verdwijnt.

Een uiteindelijke query ziet er bv zo uit:
code:
1
SELECT Gegevens.Naam, Gegevens.Klas, Gegevens.AB FROM Gegevens WHERE ((Gegevens.Klas="2e4") Or Gegevens.Klas="1e4"))

[edit]
of, indien er niets geselecteerd is:
code:
1
SELECT Gegevens.Naam, Gegevens.Klas, Gegevens.AB FROM Gegevens WHERE (1=0)

* Barca zweert ook bij fixedsys... althans bij mIRC de rest is comic sans


Verwijderd

Topicstarter
Gaat mij net iets te snel. Heb dit alles aan een knop gehangen. Kolommen gewijzigd en nu doet ie niks meer. Ik weet dat ik hem nu ergens aan moet koppelen, maar geen idee. Heb nog niet zoveel ervaring met visual programmeren. Iemand een voorbeeld bestand?

  • nescafe
  • Registratie: Januari 2001
  • Laatst online: 21:20
Het was ook niet de bedoeling dat je het klakkeloos zou overnemen. Je zult je er wel in moeten verdiepen. Zo zal je de variabelen moeten initialiseren:
code:
1
2
3
4
    Dim sqlLL As String
    Dim sqlWhere As String
    Dim selCount As Integer
    Dim varelement As Variant

Je zult de List box (keuzelijst) een bron mee moeten geven:

Me.Lijst_leerlingen.RowSourceType = "Table/query"
Me.Lijst_leerlingen.RowSource = tblSource

overigens kun je het laatste ook in het eigenschappen-venster van de keuzelijst meegeven. Ik doe het in de code omdat mijn keuzelijst wordt gegenereerd aan de hand van een eerdere keuze

* Barca zweert ook bij fixedsys... althans bij mIRC de rest is comic sans


Verwijderd

Topicstarter
Die list had ik ook al aangemaakt. Dat kan ik nog wel volgen. Alleen de rest dus niet. Zit nu niet thuis dus kan ook niet uren gaan proberen. :)

  • nescafe
  • Registratie: Januari 2001
  • Laatst online: 21:20
Je snapt toch wel dat de geselecteerde items op één of andere manier in een query moeten worden getransformeerd?

Overigens lijkt het me beter om een query als dit te maken:

SELECT Gegevens.Naam, Gegevens.Klas, Gegevens.AB FROM Gegevens WHERE (Gegevens.Klas IN ("2e4","1e4"))
Dat is wat korter..

Ik kan geen oplossing bedenken zonder gebruik van VBA

* Barca zweert ook bij fixedsys... althans bij mIRC de rest is comic sans


Verwijderd

De enige oplossing die geen VBA gebruikt is om de hele status kolom te verwijderen en daar dan 5 velden van te maken (zoals gorgi_19 al eerder aangaf).
je maakt dan een veld "lopend", "afgerond" etc aan van het type "yes/no" daar kan je dan later op selecteren in je query voor een overzicht.

Het kan ook wel anders maar dat vergt een hoop programmeerwerk in VBA.

Verwijderd

Topicstarter
Ga ik toch maar weer het boek VB te voorschijn halen....
Pagina: 1