Zoeken met een Form doormiddel van Checkboxes.

Status
Niet open voor verdere reacties.

VJJK

Gebruiker
Lid geworden
14 okt 2010
Berichten
47
Ik heb een lijst met kenmerken welke via checkboxes gekoppeld zijn aan NAW gegevens.
Nu moet via een form uit deze kenmerken gekozen kunnen worden en moet het resultaat in een subform weergegeven worden.

Eerder heb ik dit geprobeerd via list/combo boxen maar denk toch dat het voor de eindgebruiker makkelijker is om via checkboxes te werken.

De gevonden NAW gegeven zou ik willen kunnen selecteren / of meenemen naar een ander formulier alwaar ik er een opdracht mee kan maken.

Hoe kan ik de query voor het subfiorm zo maken dat de selectie wordt gemaakt op basis van de geselecteerde checkboxes?

Alvast bedankt voor de hulp.
 
Wat wil je precies doen met die checkboxen? Filteren op tekstvelden, Ja/Nee velden, numerieke velden, Datumvelden of een combinatie?
 
Dag Octafish,

Het zou hier gaan om een aantal ja/nee keuzes.

Op basis van deze keuzes zouden dan de overeenkomende NAW gegevens getoond moeten worden.

Het mooiste zou zijn als uit de gevonden NAW gegevens 1 van de gevonden personen geselecteerd zou kunnen worden en deze mee te nemen naar een rapport.

Ik zal eens proberen een voorbeeld in elkaar te zetten. Zou je hier naar willen kijken?
 
Dag Octafish,

ik ben begonnen met het formulier op te stellen maar kom er niet verder in. Blijkbaar is mijn Query te complex. Eerst heb ik geprobeerd min query op te bouwen in SQL maar dit werd niet geaccepteerd. Nu is de query bevolkt door verwijzingen naar het te gebruiken fromulier. Echter is deze te complex.

De hulp wordt zeer gewaardeerd.

Bekijk bijlage Keuzemet checkbox.zip
 
Ik heb je voorbeeldje aangepast, al is hij nog niet helemaal perfect vind ik.... Maar je kunt nu in ieder geval wat selecteren. De truc bestaat er uit dat je zoekformulier niet-afhankelijk is van een tabel; je wilt niet dat je zoekcriteria waarden in je tabel veranderen tenslotte. Daarom heb ik de checkboxen losgekoppeld, en ze via de TAG optie verbonden aan een veldnaam. Vervolgens wordt een nieuwe query gemaakt, die aan een tiijdelijke query wordt toegewezen, die vervolgens wordt geopend.
Kijk maar eens of je er iets van snapt ;)
 
Dag OctaFish,

Ik ben al een aantal dagen bezig met het voorbeeld wat jij mij gestuurd heb en het is heel raar, na een aantal keer de query doorlopen te hebben verwijderd Access de qTemp (temperary query) en maakt deze niet meer opnieuw aan. Heb jij enig idee waar dit aan zou kunnen liggen?

Verder kom ik met een zelf gebouwde Query in het subform niet verder dan de AND versie terwijl toch ook zeker de AND versie erin zou moeten zitten.

Kan jij mij hiermee verder helpen?

Bekijk bijlage Keuzemet checkbox_2.zip
 
Je had in de GeenTemp subroutine een regel ingebouwd die de query qTemp zou moeten verwijderen.... Daar loopt de procedure uiteraard op stuk, omdat de GeenTemp de query juist zou moeten aanmaken als hij niet bestaat. Verder open je de query niet, maar Query1. En dat is een andere query.
 
Dag OctaFish,

Ik ben er weer mee aan de slag gegaan maar loop nu tegen het volgende op. Bij de door mij gebruikte toepassing, met veel meer checkboxen, krijg ik de volgende melding

3251, Operation is not supported for this type of object.

Ik heb een gedeelte van mijn database doorgestuurd.. Ik kom er maar niet achter waar het nou aan scheelt. Hoop dat je me de goede richting in kan sturen.

Bekijk bijlage Keuzemet checkbox_V2.zip
 
Je hebt drie problemen:
1 - De sluithaak in [6d, 6f, 6g, 6h, 6k, 6p, 7, 8, 9 ontbreekt
2. De WHERE wordt niet opgebouwd, omdat de variabele sVeldnaam niet is gevuld
3. Omdat de query niet deugt, springt de cursor naar de foutroutine, die eigenlijk alleen bedoeld is voor het ontbreken van de query. De query bestaat echter al, dus kan niet opnieuw worden aangemaakt.

Code:
SELECT [inspector name], initials, [year of birth], city, country, agency, 1, [1c], [1g], [1m], [1t], [2a], [2b], [3c], [3g], [3p], [3t], [4a], [4b], [5], [6], [6a], [6b], [6c], [6d, 6f, 6g, 6h, 6k, 6p, 7, 8, 9] FROM [Inspectorlist_AllAgencies]
 WHERE =-1 AND  =-1 AND  =-1 AND  =-1

Ik zal kijken of ik een quickfix kan maken...
 
Een quickfix wordt een beetje lastig, omdat je formulier niet helemaal af is... Maar ik heb wel al een extra foutroutine voor je.

Code:
    On Error GoTo GeenTemp
    Set db = CurrentDb()
    Set qTemp = db.QueryDefs("qTemp")
    On Error GoTo 0

Draaien:
    On Error GoTo FoutQuery
    qTemp.SQL = strSQL
    DoCmd.OpenQuery "qTemp"

Exit Sub

GeenTemp:
    On Error Resume Next
    db.QueryDefs ("qTemp")
    tmp = db.CreateQueryDef("qTemp", strSQL)
    Set qTemp = CurrentDb.QueryDefs("qTemp")
    GoTo Draaien

FoutQuery:
    MsgBox "Er zit een foutje in de query.... " & vbLf & "Check de syntax, en probeer opnieuw!", vbCritical

Wat je op het formulier moet doen is het volgende:
In de loop
[/code]For Each ctl In Controls
sVeldNaam(i) = .Tag
sGroep(i) = .ControlTipText
If InStr(1, sVeldNaam(i), " ") > 0 And InStr(1, sVeldNaam(i), "[") = 0 Then sVeldNaam(i) = "[" & sVeldNaam(i) & "]"
Next ctl[/code]
zie je dat de variabele sVeldNaam gevuld wordt met de eigenschap Tag van het betreffende control, het selectievakje dus. Op het formulier heet die eigenschap <Extra Info>. Die eigenschap moet gevuld zijn met de naam van het veld dat je wilt filteren. Omdat je voor mij onherkenbare veldnamen hebt gebruikt (getallen als 1, 2,3 en combinaties als 1C, 1D etc) weet ik niet welk veld hoort bij welk selectievakje. Dat mag je dus zelf gaan invullen! Overigens is het gebruiken van cijfers als veldnaam sterk af te raden; gebruik op zijn minst een cijfer + een letter. Ooit kom je hier een keer mee in de problemen....
 
Ik begrijp wat je bedoeld, ik ga er mee aan de slag.. Bedankt alvast.
 
Mocht je er niet uitkomen: post de db dan met de juiste selectievakjes ingevuld; dan kijken we weer verder!
 
Bijna goed.... Twee dingen nog: je hebt ook nog veldnamen met een - (koppelteken) er in; dat vindt VBA ook erg vervelend, want dat veld wordt dus gesplitst... Pas daarom deze regel aan:

Code:
     If InStr(1, sVeldNaam(i), " ") > 0 And InStr(1, sVeldNaam(i), "[") = 0 Then sVeldNaam(i) = "[" & sVeldNaam(i) & "]"

naar

Code:
     If InStr(1, sVeldNaam(i), " ") > 0 [B][COLOR="blue"]Or InStr(1, sVeldNaam(i), "-") > 0 [/COLOR][/B]And InStr(1, sVeldNaam(i), "[") = 0 Then sVeldNaam(i) = "[" & sVeldNaam(i) & "]"

En het tweede:
Matrix Variabelen tellen vanaf 0 of 1. Standaard telt Access vanaf 0. Maar (je raadt het al...) ik tel hier vanaf 1. Je moet daarop boven aan de module een regel toevoegen:

Code:
Option Compare Database

wordt:

Code:
Option Compare Database
Option Base 1
 
Super bedankt weer..

Het is nog niet helemaal stabiel maar begint erop te lijken. Ik ga nu aan de slag om de resultaten in een subform te laten zien.

OctaFish!! You saved my day...
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan