kollom toevoegen die andere kollom telt

Status
Niet open voor verdere reacties.

remcotje123

Gebruiker
Lid geworden
3 apr 2008
Berichten
15
Hoi,
ik heb een probleem waar ik niet uitkom, ik vraag me überhaupt af of het wel mogelijk is in access, maar goed hier mijn probleem:

Ik heb een tabel met 3 kollomen,
in de eerste kollom staan de ID's van verschillende individuen meerdere keren,
de tweede kollom bevat verschillende datums,
nu wil ik een derde kollom toevoegen die automatisch een opeenvolgend nummer toevoegd aan de hand van de ID's in kollom 1 en de datums in kollom 2.

Als individu 'BC13' bijvoorbeeld 3 keer voorkomt in kollom A, met 3 verschillende datums in kollom B bv. 1-1-2011; 16-1-2011 en 9-1-2011,
dan moet in kollom C een 1 voor 1-1-2011 komen, een 3 voor 16-1-2011 komen en een 2 voor 9-1-2011 komen...enzovoorts.
Daarbij is het ook nog belangrijk dat de vroegste datum met een 1 genummerd wordt en de rest daar dan op volgt natuurlijk)

Is dit überhaupt mogelijk in access? En zo ja, hoe doe ik dat?
Ik heb een voorbeeld tabel toegevoegd.
(helpmij voorbeeld.jpg

Alvast bedankt!
Remco
 
Nog even afgezien van het feit dat KOLOM met één l is, en niet met twee, is het een probleem dat niet met één query is op te lossen. Dat komt hoofdzakelijk doordat je de nummering genummerd wilt hebben op basis van een sortering die niet natuurlijk in je tabel zit, zoals bijvoorbeeld een volgorde op basis van een Autonummerveld. Daardoor moet je met een hulptabel werken, die eerst geleegd moet worden, en daarna gevuld met de gesorteerde gegevens. Deze handelingen moeten elke keer dat je de nummers wilt genereren, opnieuw worden uitgevoerd.
Om e.e.a. wat makkelijker te maken, heb ik het proces dus in een macro gezet, die drie dingen doet:
1. de hulptabel leegmaken
2. de hulptabel vullen met de gesorteerde gegevens
3. de volgnummers genereren in een query op basis van een autonummerveld.

Ik zou zeggen: bekijk het maar eens....
 

Bijlagen

Je kan gebruik maken van de volgende functie. Zet die in een module.
Code:
Public Function Sequence(strID As String) As Integer

    Static sintTeller As Integer 'Default 0
    Static sstrPrevID As String  'Default ""
    
    If sstrPrevID = strID Then
        sintTeller = sintTeller + 1
    Else
        sstrPrevID = strID
        sintTeller = 1
    End If

    Sequence = sintTeller

End Function
Door de static variabelen zorg je ervoor dat de vorige waarde niet kwijt bent op het moment dat je de functie verlaat. M.a.w. static variabelen zijn net als globale variabelen. Ze onthouden de waarde die ze hebben gedurende de looptijd van het programma. Het verschil is de scoop. De scoop van globale variabelen is heel het programma. De scoop van static variabelen beperkt zich tot de functie of de module waarin ze zijn aangemaakt.

In een query:
Code:
select ID, Datum, Sequence(ID) as Nummer from Table1 order by 1, 2
Je moet wel je query sorteren op ID en Datum anders klopt je nummering niet.
Iedere keer dat ID veranderd wordt het nummer gereset op 1.

Enjoy!
 
Laatst bewerkt:
Probleempje is wel, dat als je in de query door de Nummervelden loopt, hij door blijft tellen... Maar op zich een nette functie! Is denk ik op een formulier beter op zijn plaats omdat je dan het tekstveld dicht kan zetten.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan