Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[ACC2000/2010] COUNT() gebruiken voor checkbox formulier

Pagina: 1
Acties:

  • Dinnesch
  • Registratie: September 2009
  • Laatst online: 22-08 11:01
Deze vraag gaat over Access 2000, maar een uitleg voor 2010 voldoet ook omdat het functioneel grotendeels hetzelfde kan.

Ik heb een database met 3 tabellen:
  • Leden: ID, voorletters, achternaam, ....
  • Activiteiten: ID, datum, ....
  • Aanwezigheid: AanwezigID, LedenID(afhankelijk van leden tabel), ActiviteitID(afhankelijk van activiteiten tabel)
Nu probeer ik een forumulier(tabelweergave, naam: frmAanwezigheid) te maken voor een aanwezigheidslijst, waar naast de namen van leden een checkbox(naam: IsAanwezig) staat die bepaalt of iemand aanwezig was bij de activiteit:
  • Was een lid aanwezig, dan staat er een vinkje op het formulier en een entry in Aanwezigheid met het desbetreffende LedenID en ActiviteitID
  • Zo niet, geen vinkje, geen entry
Het probleem zit hem in het toekennen van de juiste waarde( 0 of 1 ) aan de checkbox. Ik heb het al op twee manieren geprobeerd.

De eerste is met behulp van SQL, waar ik aan de query het vetgedrukte deel toevoeg:
SELECT
leden.ID,
leden.voorletters+" "+leden.achternaam AS Expr1,
COUNT(Presentie.PresentieID) AS AANWEZIG
FROM leden, Presentie
WHERE Presentie.ActiviteitID = *waarde van activiteitID in frmAanwezigheid* ;
Echter heb ik na uitgebreid Googlen geen manier gevonden om de waarde van ActiviteitID uit het formulier, frmAanwezigheid te halen voor de WHERE clause. Ik heb niets aan de COUNT functie als ik de waarde voor alle activiteiten bij elkaar krijg. Hier kwam ik dus vast te zitten.

De andere methode die ik heb geprobeerd(wat 'dirtier') is om bij het Enter event van de checkbox in frmAanwezigheid de volgende code uit te voeren.
code:
1
2
3
4
5
6
7
Private Sub IsAanwezig_Enter()
     If DCount("[LedenID]", "Presentie", "[ledenID] = ID") = 1 Then 'Controleert nog niet op activiteit, maar dat is niet relevant bij voorbeeld
          Me.IsAanwezig = 1
     Else
          Me.IsAanwezig = 0
     End If
End Sub

Echter vereist dit dat de gebruiker eerst klikt op de checkbox voordat de code wordt uitgevoerd. Een ander probleem: Alle keuzevakjes in het formulier krijgen dezelfde waarde. Google helpt hier ook niet.

Kan iemand me vertellen hoe ik verder kom met één van deze aanpakken, of wat een geschiktere methode is? Ik kan natuurlijk zelf het werk doen, maar na lang zoeken weet ik nog steeds niet *wat* er moet gebeuren :)

Alvast bedankt.

  • Witte
  • Registratie: Februari 2000
  • Laatst online: 15-10 13:46
zoiets:
code:
1
me.isaanwezig = (dcount("ledenID","tblActiviteiten","activiteitID = " & me.activiteitID & " AND ledenID = " & me.ledenID") <> 0)

Hiermee tel ik in de tabel tblActivietiten het aantal records waarvoor ledenID en ActiviteitID gewenst is. Dit moet groter dan 0 zijn (liefst 1 :))

[ Voor 53% gewijzigd door Witte op 06-06-2012 11:26 ]

Houdoe


  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

Als het alleen om weergeven gaat volstaat ziets al:

SQL:
1
2
3
SELECT persoon.persId, persoon.persNaam, Not IsNull([aanwezig.persId]) AS Aanwezig
FROM persoon as p  LEFT JOIN (select persId from aanwezig where aktid=[aktiviteitid]) AS a 
ON p.persID = a.persid;


Als het checkboxje invulbaar moet zijn ontkom je niet aan VBA code. :)

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