Verschillende Volgnummers in 1 rapport

Status
Niet open voor verdere reacties.

RoyB1973

Gebruiker
Lid geworden
1 mrt 2013
Berichten
32
Hallo Forum leden,

Ben al een tijdje aan het stoeien met ACCESS maar krijg het niet voor elkaar. Wie kan mij helpen?

Voor mijn vrouw heb ik al vrij lang een Excel database gebouwd waarin zij de aannames van de kleuters bijhoud.
Vanuit deze database heb ik verschillende draaitabellen beschikbaar en maak ik af en toe een overzicht met welke en hoeveel kleuters er naar de eerste klas gaan in welk jaar.
Dit overzicht maak ik door eenvoudig knippen en plakken. zou dit ook in een macro kunnen stoppen, maar toch, heb ik dit nagebouwd in Access om eens te kijken hoever ik hiermee kom, want ik denk toch dat Access hiervoor beter geschikt is.
In de bijlage een Access database welke ik gebouwd heb.

Met het formulier kleuter kunnen kleuters worden toegevoegd.
En zolang het maximale aantal kleuter niet wordt bereikt en/of er geen voorlopige inschrijvingen staan werkt met rapport overzicht klas 1 goed.
Als je het rapport wilt draaien moet je in de voorbeeld database het jaar 2018 selecteren.

Je ziet nu een mooi overzicht, echter wil ik in de kolom volgnummer het volgende realiseren.

Het nummer voor de kleuters die zeker naar de eerste klas gaan moet het volgnummer oplopen. (gesorteerd op geboortedatum). Tot zover gaat het goed.

Echter,
Wil ik kleuters die op de wachtlijst staan onderaan hebben staan en daaronder de kleuters die voorlopig zijn ingeschreven. Een ook hierbij geld dat het volgnummer oplopend moet zijn als er meerdere kinderen op de wachtlijst staan, waarbij de datum van de wachtlijst leidend moet zijn.

De volgnummers zouden er dan als volgt uit moeten zien.

1
2
3
4
W1
W2
V1

Hoop dat het een beetje duidelijk is.
Wie kan mij in de goede richting helpen om dit te realiseren.?Bekijk bijlage Kleuter Database.zip

Alvast bedankt.
Groet Roy
 
Ik heb alleen je verhaal gelezen, en niet de db bekeken dus ik kan nog geen definitief antwoord geven, maar volgens mij ben je verkeerd bezig. (Volg)nummers kun je numeriek sorteren of alfanumeriek, maar beide varianten gaan hier niet op. Bij alfanumeriek sorteren zou je de volgorde 1, 11, 12, 2, 3 etc. krijgen bij getallen en dat wil je sowieso niet. Daarnaast staat V altijd boven W, en dat wil je ook niet. Aflopend sorteren om de W voor de V te krijgen maakt de zaak nog erger.
Kortom: vergeet je volgnummers zou ik zeggen.

Je geeft aan dat de nummers gebaseerd zijn op de geboortedatum, dus daar heb je geen volgnummers voor nodig. Een volgnummer op basis van geboortedatum kun je ook prima genereren op basis van een query. Wat je m.i. nodig hebt is een veld Status, waarin je aangeeft of een kind Geplaatst is, op de Wachtlijst staat of Voorlopig is ingeschreven. Daarvoor zou ik een tabel gebruiken zodat je daarin een nummer kan gebruiken voor de sortering (Geplaatst = 1, Wachtlijst = 2, Voorlopig = 3). En in diezelfde query gebruik je dan dit veld om de nummering voor elke variant opnieuw te beginnen. Probleem opgelost :).
 
Idd daar heb je gelijk aan. Zal eens kijken of ik deze erin kan bouwen.... Bedankt voor het meedenken.
 
Laatst bewerkt:
Kun je die volkomen overbodige quoot hierboven weghalen? Je zou moeten weten dat je om te antwoorden op een bericht veel beter de knop <reageer op bericht> kunt gebruiken (7 keer groter) of het tekstvak <Snel reageren>. De laatste is 34.000 keer groter, en je kunt zelfs gelijk gaan typen. Hoe makkelijk wil je het hebben?
 
Waarvoor dank :). Ik heb je voorbeeldje bewerkt op de manier zoals ik het zou doen. Dan kunnen er dus een hoop velden uit (sowieso alle berekende velden, die horen niet thuis in een tabel) en ook de (in mijn ogen) tegenstrijdige velden die nu de status vormen. Mocht je die willen zien, kan ik hem uiteraard wel posten.
 
Dat is mooi, ik zou hem graag willen zien.
Had ondertussen een extra tabel gemaakt met zoals je had aangegeven de waarden geplaatst, voorlopig en wachtlijst.
Vervolgens heb ik het rapport laten bestaan echter een groepering toegepast op basis van deze waarden.. :)..

Maar ben ook heel benieuwd wat je hebt aangepast. Kan veel voor elkaar krijgen in Excel, maar ACCESS en databases zijn toch net een andere cup of tea.. Maar al doende leert men.. :)
 
maar ACCESS en databases zijn toch net een andere cup of tea.. Maar al doende leert men.. :)
Je stapt over van een Opel Kadetje naar een Ferrari. Het is te hopen dat je je 'leercurve' niet baseert op "al doende leert men" want dat is absoluut de verkeerde weg om databases te leren, want dan teken je in op een héél lang en moeizaam traject. Databases bouwen is een wetenschap en vereist kennis van databases. Microsoft vind dat iedereen die een knop kan aanklikken met dat programma kan werken, maar dat werkt voor Word en Excel misschien prima (is ook discutabel trouwens) maar geldt dus absoluut niet voor databases bouwen. Jammer genoeg werken de bouwers van Access op dezelfde manier, want er zijn de laatste jaren opties ingebouwd die niet in een database thuishoren, zoals (jij gebruikt ze dus ook) berekende velden, en opzoeklijsten op basis van tabellen.
In de Handleidingen sectie staat een cursus Access, daar kun je in ieder geval de beginselen van een database wel uithalen. Ik zal morgen mijn versie posten, die staat nog op mijn werk.
 
In de Handleidingen sectie staat een cursus Access, daar kun je in ieder geval de beginselen van een database wel uithalen. I
Hier was ik al eens in begonnen, zal de draad weer oppakken. En ik leer graag. :) Ben benieuwd naar jouw versie.
 
Laatst bewerkt:
Hier mijn versie. Ben benieuwd wat hij afwijkt van de jouwe :).
 

Bijlagen

  • Kleuter Database.zip
    70,3 KB · Weergaven: 27
Hier mijn versie. Ben benieuwd wat hij afwijkt van de jouwe :).

Hij wijkt in veel opzichten nogal af. Dat van die modules werkt erg goed, wist ik niet. Je hebt zelfs gebouwd wat ik vroeg met de volgnummers.
Echter als ik hier zo naar kijk ga ik denk ik gebruiken wat is zelf heb gebouwd, met het groeperen, waarbij de groep de status is en binnen de status wordt op rapport niveau een volgnummer gemaakt.
Of vind je ook dat dit soort nummers niet een rapport gegenereerd moeten worden?

Zal de komende tijd in de avonden eens gaan kijken of ik de cursus eens kan oppakken om op die manier toch meer kennis te krijgen van databases. Tot zover ontzettend bedankt... erg leuk om te zien op welke manieren je kunt komen tot een mooie oplossing.
Dan zal ik eens kijken of ik tot een oplossing kan komen om het verloop in de kleuterklassen inzichtelijk te maken.. :).

Nogmaals dank.
 
Je hebt zelfs gebouwd wat ik vroeg met de volgnummers.
Daar ging de vraag toch over? :D. Volgnummers in rapporten doe ik op dezelfde manier, met een lopend volgnummer. Dat is standaard functionaliteit binnen een rapport, en dat kun je dus gewoon gebruiken. De sortering/groepering van een rapport bepaalt welke items je eerst ziet, en welk volgnummer dat dan krijgt. Die volgnummers hebben verder dus geen waarde, dat doet de functie wél. Daarmee bepaal je volgnummers die aan bepaalde criteria voldoen.
Functies werken doorgaans beter dan queries, omdat je ze generiek kunt gebruiken, en je veel minder code nodig hebt in de query. Vandaar deze oplossing.
 
Functies werken doorgaans beter dan queries, omdat je ze generiek kunt gebruiken, en je veel minder code nodig hebt in de query. Vandaar deze oplossing.
Daar heb je gelijk in maar dan moet je wel weten hoe ze werken.

Ben nu al een tijdje bezig en heb het rapport hier en daar al aangepast. En hij is bijna zoals ik hebben wil. Loop echter nog tegen 1 ding aan.
Het rapport wordt nu gegenereerd op basis van Advies_Klas en hij moet eigenlijk gegenereerd worden op basis van Advies_Leraar.
Voor zover ik het begrijp wordt de criteria in de query qr_Kleuters advies_klas gevuld vanuit de module.

& "WHERE Advies_Klas([Geboorte Datum])= " & Me.cboKlasjaar & " " _

En hier moet ik juist hebben dat advies_leraar wordt gevuld. Heb al verschillende dingen geprobeerd, maar het lukt mij niet.
Denk dat het te maken heeft omdat advies_leraar verschillende mogelijkheden heeft afhankelijk van het advies.
Ik hoop dat het je lukt me hier nog even een keer mee te helpen.

Gr Roy
 
En hier moet ik juist hebben dat advies_leraar wordt gevuld. Heb al verschillende dingen geprobeerd, maar het lukt mij niet.
[Advies Leraar] is in beginsel leeg, tenzij je iets invult bij [Afwijkend advies], dan wordt er een nieuw jaar berekend en getoond in het veld. Als er niks in staat, kun je er ook niet op filteren, vandaar dat er wordt gefilterd op [Advies klas]. Je kunt de twee velden uiteraard wel combineren in één veld, wat je dan wellicht [Advies] kan noemen.
 
[Advies Leraar] is in beginsel leeg, tenzij je iets invult bij [Afwijkend advies],
Deze had ik al aangepast, dat als [Afwijkend advies] is Null;[Advies Klas].
Dus in de query wordt het veld advies leraar al altijd gevuld.

Alleen bij de modFuncties --> Form_Kleuter_Formulier -->

Private Sub cboKlasjaar_Click()
Dim qTemp As QueryDef
Dim strSQL As String

strSQL = "SELECT KlasID, Voornaam, Tussenvoegsel, Achternaam, Geslacht, Status_ID, [Geboorte Datum], ID_Juf, Naam AS Naam_Juf, " _
& "[Datum Aanmelding], [Datum Wachtlijst], [Afwijkend Advies], Opmerkingen, DateAdd(""yyyy"",4,[Geboorte Datum])+2 AS Instroomdatum, " _
& "Advies_Klas([Geboorte Datum]) AS [Advies Klas], Volgnummertje([Geboorte Datum],[Status_ID]) AS Volgnummer, " _
& "IIf([Afwijkend Advies] Is Null,Advies_Klas([Geboorte Datum]),Advies_Leraar([Geboorte Datum],[Afwijkend Advies])) AS [Advies Leraar] " _
& "FROM tStatus INNER JOIN (Tabel_Kleuterjuffen " _
& "INNER JOIN Tabel_Kleuters ON Tabel_Kleuterjuffen.JufID = Tabel_Kleuters.[ID_Juf]) ON tStatus.StatusID = Tabel_Kleuters.[Status_ID] " _
& "WHERE Advies_Klas([Geboorte Datum])= " & Me.cboKlasjaar & " " _

Set qTemp = CurrentDb.QueryDefs("qr_Kleuters")
Dim tmp
'' tmp = InputBox("", "", strSQL)
qTemp.SQL = strSQL

Me.Visible = False
DoCmd.OpenReport "Overzicht Klas 1", acViewPreview
End Sub

Wordt volgens mij het rapport overzicht klas 1 gebaseerd op & "WHERE Advies_Klas([Geboorte Datum])= " & Me.cboKlasjaar & " " _ (als ik het goed is bepaal je hier dat het filter voor het rapport wordt gezet op dat advies klas 1 gelijk moet zijn aan de selectie vanuit het formulier)
Als ik hier nu Advies_Klas vervang voor Advies_Leraar dan krijg ik een fout melding en wordt het rapport niet gemaakt.
 
Kijk eens of deze query je probleem oplost.
PHP:
    strSQL = "SELECT KlasID, Voornaam, Tussenvoegsel, Achternaam, Geslacht, Status_ID, [Geboorte Datum], ID_Juf, Naam AS Naam_Juf, " _
        & "[Datum Aanmelding], [Datum Wachtlijst], [Afwijkend Advies], Opmerkingen, DateAdd(""yyyy"",4,[Geboorte Datum])+2 AS Instroomdatum, " _
        & "Advies_Klas([Geboorte Datum]) AS [Advies Klas], Volgnummertje([Geboorte Datum],[Status_ID]) AS Volgnummer, " _
        & "IIf([Afwijkend Advies] Is Null,"""",Advies_Leraar([Geboorte Datum],[Afwijkend Advies])) AS [Advies Leraar], " _
        & "IIf([Afwijkend Advies] Is Null,Advies_Klas([Geboorte Datum]),Advies_Leraar([Geboorte Datum],[Afwijkend Advies])) AS Advies " _
        & "FROM tStatus INNER JOIN (Tabel_Kleuterjuffen INNER JOIN Tabel_Kleuters " _
        & "ON Tabel_Kleuterjuffen.JufID = Tabel_Kleuters.[ID_Juf]) " _
        & "ON tStatus.StatusID = Tabel_Kleuters.[Status_ID] " _
        & "WHERE (IIf([Afwijkend Advies] Is Null, Advies_Klas([Geboorte Datum]), Advies_Leraar([Geboorte Datum], [Afwijkend Advies])) = 2018) " _
        & "ORDER BY Tabel_Kleuters.Status_ID, Tabel_Kleuters.[Geboorte Datum]; "
 
En probeer je code op te maken met ofwel de CODE knop, ofwel de PHP knop. Dan is hij een stuk leesbaarder.
 
& "WHERE (IIf([Afwijkend Advies] Is Null, Advies_Klas([Geboorte Datum]), Advies_Leraar([Geboorte Datum], [Afwijkend Advies])) = 2018) " _[/PHP]

Top hij werkt goed, heb alleen de harde waarde 2018 nog even gewijzigd in " & Me.cboKlasjaar & " Opdat ik vanuit het formulier alles kan opvragen. Hij werkt nu naar behoren.. Dank je wel.
Kan mijn vrouw verder en zal ik eens de cursus gaan volgen. Want ik wordt hier wel enthousiast van.

Groet Roy
 
Die laatste aanpassing had ik uiteraard ook gedaan, alleen bij het testen vervangt hij de keuzelijst weer door het jaartal. Bij mij ziet de code er dus zo uit:
PHP:
    strSQL = "SELECT KlasID, Voornaam, Tussenvoegsel, Achternaam, Geslacht, Status_ID, [Geboorte Datum], ID_Juf, Naam AS Naam_Juf, " _
        & "[Datum Aanmelding], [Datum Wachtlijst], [Afwijkend Advies], Opmerkingen, DateAdd(""yyyy"",4,[Geboorte Datum])+2 AS Instroomdatum, " _
        & "Advies_Klas([Geboorte Datum]) AS [Advies Klas], Volgnummertje([Geboorte Datum],[Status_ID]) AS Volgnummer, " _
        & "IIf([Afwijkend Advies] Is Null,"""",Advies_Leraar([Geboorte Datum],[Afwijkend Advies])) AS [Advies Leraar], " _
        & "IIf([Afwijkend Advies] Is Null,Advies_Klas([Geboorte Datum]),Advies_Leraar([Geboorte Datum],[Afwijkend Advies])) AS Advies " _
        & "FROM tStatus INNER JOIN (Tabel_Kleuterjuffen INNER JOIN Tabel_Kleuters " _
        & "ON Tabel_Kleuterjuffen.JufID = Tabel_Kleuters.[ID_Juf]) " _
        & "ON tStatus.StatusID = Tabel_Kleuters.[Status_ID] " _
        & "WHERE (IIf([Afwijkend Advies] Is Null,Advies_Klas([Geboorte Datum]),Advies_Leraar([Geboorte Datum],[Afwijkend Advies]))=" & Me.cboKlasjaar & ")" _
        & "ORDER BY Tabel_Kleuters.Status_ID, Tabel_Kleuters.[Geboorte Datum];"
 
Bij mij ziet hij er exact hetzelfde uit. Namens mij en ook mijn vrouw bedankt.
Zit ik ieder geval niet iedere keer meer in Excel.. :)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan