Skapa stigande numrering med ny numrering för varje grupp

Hej !

Söker med ljus och lykta efter en lösning på mitt bekymmer men inte hittat något.

Jag behöver skapa en numrering av posterna i en fråga (skulle även kunna vara en tabell). Det vore inga problem om det bara skulle vara en enkel stigande numrering, det löses med en räknare.

Mitt önskemål är att numreringen ska börja om för varje nytt värde i ett av fälten.

T ex:
Kundgrupp – KundNum:
X — A — 1
X — B — 2
X — C — 3
Y — D1
Y — E2
ZF1
ZG2
ZH3

Så i fältet ”Num” vill jag få in en funktion som skapar en ny numrering för varje förändring i ”Kundgrupp”

Finns det någon SQL kod som kan skapa en sådan alternativt någon annan funktion?

Mvh // Håkan

2 kommentarer

  • Jag tror det är enklast att göra detta med lite kod.

    ’ Denna funktion tvingar fram en nummerordning som börjar på 1 för varje grupp

    Function KundNumUpdateTvinga()
    Dim rs As Recordset, sql$, max&, gammalKundgrupp$
    sql = "SELECT Kundnum.Kundgrupp, Kundnum.Kund, Kundnum.Num FROM Kundnum"
    sql = sql & " ORDER BY Kundnum.Kundgrupp, Kundnum.Kund;"
    Set rs = CurrentDb.OpenRecordset(sql)
    Do Until rs.EOF
    If rs!Kundgrupp <> gammalKundgrupp Then
    max = 0
    gammalKundgrupp = rs!Kundgrupp
    End If
    max = max + 1
    rs.Edit
    rs!num = max
    rs.Update
    rs.MoveNext
    Loop
    rs.Close
    End Function

  • Hej! Koden ovan är ett bra förslag. Men om du bara behöver ha numreringen i en rapport (inte i tabellen) så är det enklare att lägga in ett fält i frågan som innehåller värdet ”1” för varje post, och sedan i rapporten göra en löpande summering (running sum) över gruppen (over group). Mer om löpande summering kan man läsa här: http://office.microsoft.com/sv-se/access-help/summera-i-rapporter-HA010120854.aspx