verschillende vragen

Status
Niet open voor verdere reacties.

gotcha123

Gebruiker
Lid geworden
12 apr 2008
Berichten
86
Beste allen,

ik ben bezig om een database op te stellen, met als doel persoonsgegevens in te voeren, selectiecriteria in te voeren, te wijzigen en toe te passen en hierop volgend beslissingen te kunnen (laten) nemen door bevoegde personen.
Ik heb alle tabellen en formulieren al gemaakt, maar nu zit ik nog met een paar problemen/vragen:
(P.S. ik heb al een aantal keer geprobeerd om mijn database mee up te loaden, maar ik krijg telkens een foutmelding. Daarom hier een link naar de dropbox waar je de database kan vinden, moest dit helpen om de vraag beter te begrijpen). https://www.dropbox.com/sh/tcmp6xr6b7gq45u/enXAir0tYY

1) elke gebruiker kan voor een bepaalde sport een aantal selectiecriteria ingeven per schooljaar, studiejaar en geslacht. Alle selectiecriteria kunnen ook worden gecategoriseerd in 3 categorieën, nl. algemene voorwaarden (AV) , profielvoorwaarden (PrV) en prestatievoorwaarden (PresV).
Alle criteria zijn al ingegeven in een tabel, alleen heb ik nu mijn twijfels over hoe ik deze het best kan indelen in de tabel.
- Moet ik in een tabel 1 rij maken per schooljaar-studiejaar - geslacht en daarbij alle criteria ingeven in verschillende velden in dezelfde rij (vb. AV1, AV2, AV3, Pr1, Pr2, PresV 1, enz)?
- OF moet ik alle selectiecriteria apart ingeven? 1 criterium per rij, waarbij alle basisgegevens (schooljaar, studiejaar, geslacht en categorie) telkens opnieuw worden ingegeven?

Welke optie is de beste om erna het makkelijkst te kunnen oproepen in een formulier en deze te kunnen filteren en toepassen op een bepaalde persoon?

2) ik heb een aantal formulieren gemaakt (met subformulieren), waar ik graag bovenaan het formulier een filter zou willen toepassen op schooljaar, en dan nog een reset-knop zou willen toevoegen, zodat alle records terug te voorschijn kunnen komen.
Ik heb onderstaande code proberen toe te passen, maar er zit blijkbaar ergens een foutje in. Kan iemand mij daarmee helpen?

Code: filter schooljaar knop:
Code:
Private Sub cbo_schooljaar_AfterUpdate()

Dim rs As Object

Set rs = Me.Recordset.Clone
rs.FindFirst "[schooljaar] = " & Str(Nz(Me![cbo_schooljaar], 0))

    If Not rs.EOF Then Me.Bookmark = rs.Bookmark
    
End Sub

Code Reset filter knop:
Code:
Private Sub cmd_resetfilter_Click()
    Me.cbo_schooljaar = Null
End Sub

3) Indien ik het schooljaar (zie bovenstaande vraag) zou kunnen selecteren en filteren, dan zou ik ook willen dat als er gegevens ingevoerd worden, dat automatisch het schooljaar ingevuld wordt voor het desbetreffende record dat aangemaakt wordt. Ik dacht dat dit automatisch ging gebeuren eens ik die filter had, maar blijkbaar is dat toch niet het geval en weet ik niet hoe ik dat moet erin krijgen...

4) in een formulier zijn er 2 bepaalde vakken, nl "weging van een criterium" (ja/neen) en wegingspercentage. Ideaal gezien zou ik pas willen dat het vakje wegingspercentage geactiveerd worden als het vakje "weging" aangevinkt wordt. Ik veronderstel dat ik dat moet programmeren in VBA dan? met een If-functie?
Alleen, hoe ga ik dan van daar verder?

5) in het formulier frm_ind_fiche_new (zie database) wil ik voor alle selectiecriteria die ingegeven zijn voor een bepaalde persoon (met link naar betreffend schooljaar - studiejaar en geslacht) kunnen quoteren. In het eerste record kan ik dat nog doen, vanaf het 2e record geeft hij de selectiecriteria niet meer weer, terwijl daar ook (eventueel dezelfde of andere) selectiecriteria zouden moeten tevoorschijn komen. Moet hier ook een code in VBA voor komen of kan ik dit oplossen met een query?

6) kan ik ook een kleur toekennen aan een vak met een keuzelijst? (vb. voldaan wordt dan een groen vakje, deliberatie een oranje vak en 'niet voldaan' een rood vak)

Alvast bedankt om even naar de vragen te willen kijken!
 
Ad 2:
Wat betreft het zoeken: je geeft nog niet aan wat er uit die keuzelijst rolt. Ik neem aan jaartallen, en ik neem dan ook maar vast aan dat Schooljaar een numeriek veld is. In dat geval kun je dit proberen:
Code:
Private Sub cbo_schooljaar_AfterUpdate()
Dim rs As Object
    Set rs = Me.Recordset.Clone
    rs.FindFirst "[schooljaar] = " & Nz(Me.[cbo_schooljaar], 0)
    If Not rs.EOF Then Me.Bookmark = rs.Bookmark
End Sub
Of dit, als Schooljaar een tekstveld is:
Code:
Private Sub cbo_schooljaar_AfterUpdate()
Dim rs As Object
    Set rs = Me.Recordset.Clone
    rs.FindFirst "[schooljaar] = '" & CStr(Nz(Me.[cbo_schooljaar], 0)) & "'"
    If Not rs.EOF Then Me.Bookmark = rs.Bookmark
End Sub
Overigens is er een verschil tussen een record opzoeken (deze code) en een tabel filteren. Dat lukt hier niet mee; daarvoor moet je een Filterstring maken die je dan op het formulier loslaat.
Ad 3: Filters hebben niks te maken met standaardwaarden. Wel kun je met DefaultValue de standaardwaarde steeds opnieuw instellen als je een ander jaar filtert. Op die manier kun je toch flexibel jaren laten vullen.
Ad 4. Ja, dat zul je moeten programmeren. Bjjvoorbeeld bij de gebeurtenis <Bij Klikken> van weging.
In zijn meest eenvoudige vorm werkt dit al:
Code:
Private Sub Weging_Click()
    Me.wegingspercentage.Enabled = Me.Weging
End Sub
Hiermee schakel je het vak aan- of uit op basis van wat je klikt.
Ad 6: Wat bedoel je hiermee? Een keuzelijst is wit, maar je kunt er een andere achtergrondkleur aan geven. Maar je hebt het over een 'vak met een keuzelijst'. Wat is dat?
 
Bedankt voor de snelle reactie OctaFish!

ad 2: uit de keuzelijst komen schooljaren (vb. 2012-2013). Deze zijn tekstvelden.
Bovenstaande code lukt niet als ik ze toepas...er volgt geen actie in het subformulier...
Ik krijg nu enkel de eerste record van het vroegste schooljaar te zien, en voor de rest niks meer...
Ik vermoedde dat ik bij het toepassen van deze code het eerste record dat bij het desbetreffende schooljaar hoorde zou vinden? Ik dacht ook dat automatisch de rest daarop ging volgen.

ad 4: werkt zoals ik het wou. Dank je wel!

ad 6: ik spreek over een keuzelijst met invoervak. De keuzelijst zou initieel inderdaad wit moeten zijn. Maar als ik een waarde selecteer (vb. voldaan), dan zou ik de kleur op dat moment graag gewijzigd zien naar groen. Is dit uberhaupt mogelijk in een formulier, of lukt dit enkel met rapporten?
 
Ad 2: Dat zou best kunnen; dan moeten we eerst zien wat er in je veld staat, en wat er uit je keuzelijst komt. De zoekknop zoekt de eerste record op die aan het criterium voldoet. En dat blijft-ie doen tot jij het zat bent. Je kunt pas een volgende opzoeken als je niet zoekt naar FindFirst. Want die gaat dus naar het eerste record.
 
Ad 6: dat kan wel; bij de gebeurtenis <Bij Klikken> of <Na bijwerken> bijvoorbeeld. Probleem is alleen dat je een beetje lastig kleuren kunt instellen, omdat Access die rare getallen gebruikt. Maar de standaardkleuren vbRed, vbBlue en vbGreen kun je wel gebruiken. Of RGB(255;0;0) voor Rood bijvoorbeeld. Met RGB waarden kun je nog wat stoeien met de verschillende kleuren.
Bedenk wel dat de kleur blijft staan als je iets anders wilt selecteren. En dat maakt de keuzelijst er bepaald niet fraaier op.... Zowiezo ben je nu een kermis aan het maken; ik hoop dat je gebruikers dat op prijs stellen :)
 
Laatst bewerkt:
Ad 2: link naar database staat bovenaan in de tekst bij de oorspronkelijke vraag.
Ik heb ondertussen gevonden wat ik zocht om een correcte filter toe te passen.
Alleen stuit ik nu op volgende probleempje...elke keer als ik de filter nu toepas (vb. schooljaar 2012-2013), dan verandert Access die waarde nadien in een getal (vb. 12) om een of andere reden. Ik denk dat het een klein pietluttig iets is dat ik over het hoofd zie, maar ik vind het niet voorlopig. Iemand daar enige ervaring mee om het op te lossen?

Edit: ondertussen nog even aan het zoeken geweest en nu voegt het programma een record toe elke keer als ik de filter toepas.
Ter info: voor de toepassing heb ik een kleine macro gemaakt > filter toepassen en where voorwaarde hieronder.
Code:
="[Schooljaar_id] = " & Str(Nz([Screen].[ActiveControl];0))[CODE]
Hoe komt het dat Access elke keer nieuwe record toevoegt? Hoe krijg ik dat weg?

Alvast bedankt voor de hulp!
 
Laatst bewerkt:
Ad 6: Ik denk dat ik het dan beter enkel in het rapport ga laten kleuren, zodat er niemand iets meer kan aan veranderen.
Bedoeling is om een visueel overzicht te kunnen krijgen van iemand die wel of niet voldoet aan een aantal criteria.
 
Filteren is niets meer dan de recordset die je voor je formulier gebruikt beperken tot de waarden die aan het filter voldoen. Zonder de db kan ik echt niet zien wat je aan het doen bent. Dat het niet klopt, is wel duidelijjk...
Puntje 6: dat lijkt mij een beter plan; formulieren moet je rustig houden. Een rapport is voor afdrukken, en dan is een kleurtje nog wel verhelderend.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan