Sida 1 av 1
Skapa stigande numrering med ny numrering för varje grupp
#1
Skrivet 21 okt 2011, 07:25
Hej !
Ny här på forumet och jag har sök 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 - Kund - Num:
X --- A --- 1
X --- B --- 2
X --- C --- 3
Y --- D --- 1
Y --- E --- 2
Z --- F --- 1
Z --- G --- 2
Z --- H --- 3
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
Skrivet 21 okt 2011, 07:25
Hej !
Ny här på forumet och jag har sök 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 - Kund - Num:
X --- A --- 1
X --- B --- 2
X --- C --- 3
Y --- D --- 1
Y --- E --- 2
Z --- F --- 1
Z --- G --- 2
Z --- H --- 3
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
Ny här på forumet och jag har sök 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 - Kund - Num:
X --- A --- 1
X --- B --- 2
X --- C --- 3
Y --- D --- 1
Y --- E --- 2
Z --- F --- 1
Z --- G --- 2
Z --- H --- 3
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
Skrivet 21 okt 2011, 10:45
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 gruppFunction 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
Vill man behålla numret som en kund har fått måste denna användas istället.
Gäller tex om en kund tas bort:
Om tex Kund A tas bort i exemplet ovan och en ny kund I tillkommer i Kundgrupp X. Då kommer kund I få nummer 4.
Function KundNumUpdateBevara()
Dim rs As Recordset, sql$, max&, gammalKundgrupp$
sql = "SELECT Kundnum.Kundgrupp, Kundnum.Kund, Kundnum.Num FROM Kundnum"
sql = sql & " ORDER BY Kundnum.Kundgrupp, Kundnum.Num > 0, Kundnum.Kund, Kundnum.Num;"
Set rs = CurrentDb.OpenRecordset(sql)
Do Until rs.EOF
If rs!Kundgrupp <> gammalKundgrupp Then
max = 0
gammalKundgrupp = rs!Kundgrupp
End If
If (rs!num > 0) Then
max = rs!num
Else
max = max + 1
rs.Edit
rs!num = max
rs.Update
End If
rs.MoveNext
Loop
rs.Close
End Function
X --- A --- 1
X --- B --- 2
X --- C --- 3
X --- I --- 4
Y --- D --- 1
Y --- E --- 2
Z --- F --- 1
Z --- G --- 2
Z --- H --- 3
Accesskonsult
Micke Falk
Inlägget är redigerat av Cluster: 21 okt 2011, 11:37.
Anledning till redigering: Inlägg sammanslagna av moderator
Skrivet 21 okt 2011, 10:45
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
Vill man behålla numret som en kund har fått måste denna användas istället.
Gäller tex om en kund tas bort:
Om tex Kund A tas bort i exemplet ovan och en ny kund I tillkommer i Kundgrupp X. Då kommer kund I få nummer 4.
X --- A --- 1
X --- B --- 2
X --- C --- 3
X --- I --- 4
Y --- D --- 1
Y --- E --- 2
Z --- F --- 1
Z --- G --- 2
Z --- H --- 3
' 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
Vill man behålla numret som en kund har fått måste denna användas istället.
Gäller tex om en kund tas bort:
Om tex Kund A tas bort i exemplet ovan och en ny kund I tillkommer i Kundgrupp X. Då kommer kund I få nummer 4.
Function KundNumUpdateBevara()
Dim rs As Recordset, sql$, max&, gammalKundgrupp$
sql = "SELECT Kundnum.Kundgrupp, Kundnum.Kund, Kundnum.Num FROM Kundnum"
sql = sql & " ORDER BY Kundnum.Kundgrupp, Kundnum.Num > 0, Kundnum.Kund, Kundnum.Num;"
Set rs = CurrentDb.OpenRecordset(sql)
Do Until rs.EOF
If rs!Kundgrupp <> gammalKundgrupp Then
max = 0
gammalKundgrupp = rs!Kundgrupp
End If
If (rs!num > 0) Then
max = rs!num
Else
max = max + 1
rs.Edit
rs!num = max
rs.Update
End If
rs.MoveNext
Loop
rs.Close
End Function
X --- B --- 2
X --- C --- 3
X --- I --- 4
Y --- D --- 1
Y --- E --- 2
Z --- F --- 1
Z --- G --- 2
Z --- H --- 3
Accesskonsult
Micke Falk
Micke Falk
Inlägget är redigerat av Cluster: 21 okt 2011, 11:37.
Anledning till redigering: Inlägg sammanslagna av moderator
#3
Skrivet 21 okt 2011, 13:24
Tack för ditt svar MickeF !
Jag får dock upp ett felmeddelande när jag lagt till ett fält i frågan med denna
rs.Edit är markerat och följande meddelande visas
Kompileringsfel:
Det går inte att hitta metoden eller datamedlemmen
Vet du vad det kan bero på?
Kan tillägga att det är Access 200 jag använder.
Skrivet 21 okt 2011, 13:24
Tack för ditt svar MickeF !
Jag får dock upp ett felmeddelande när jag lagt till ett fält i frågan med denna
rs.Edit är markerat och följande meddelande visas
Kompileringsfel:
Det går inte att hitta metoden eller datamedlemmen
Vet du vad det kan bero på?
Kan tillägga att det är Access 200 jag använder.
Jag får dock upp ett felmeddelande när jag lagt till ett fält i frågan med denna
rs.Edit är markerat och följande meddelande visas
Kompileringsfel:
Det går inte att hitta metoden eller datamedlemmen
Vet du vad det kan bero på?
Kan tillägga att det är Access 200 jag använder.
#4
Skrivet 21 okt 2011, 13:30
Skrivet 21 okt 2011, 13:30
#5
Skrivet 21 okt 2011, 13:36
Skrivet 21 okt 2011, 13:36
#6
Skrivet 21 okt 2011, 13:48
Sorry, missade sista siffran
Det är 2002
Skrivet 21 okt 2011, 13:48
Sorry, missade sista siffran
Det är 2002
Det är 2002
#7
Skrivet 21 okt 2011, 19:04
Hansol 33, den 21 okt 2011, 13:48, sa:
Sorry, missade sista siffran
Det är 2002
Då är det nog en referens till "Microsoft DAO 3.x Object library" som saknas.
Gör så här:
1) Öppna kodfönstret
2) från verktygsmenyn väljer du "Referenser".
3) Leta upp "Microsoft DAO 3.x Object library" (vet ej exakt versionsnummer men 3.6 är det för Access 2003
4) Kryssa för den
5) stäng Referenser
Prova ingen!
Accesskonsult
Micke Falk
Skrivet 21 okt 2011, 19:04
Hansol 33, den 21 okt 2011, 13:48, sa:
Sorry, missade sista siffran
Det är 2002
Det är 2002
Då är det nog en referens till "Microsoft DAO 3.x Object library" som saknas.
Gör så här:
1) Öppna kodfönstret
2) från verktygsmenyn väljer du "Referenser".
3) Leta upp "Microsoft DAO 3.x Object library" (vet ej exakt versionsnummer men 3.6 är det för Access 2003
4) Kryssa för den
5) stäng Referenser
Prova ingen!
Accesskonsult
Micke Falk
Micke Falk
#8
Skrivet 21 okt 2011, 19:47
Ah, sen måste
"Microsoft DAO 3.x Object library"
troligen ligga före
"Microsoft ActiveX Data Objects 2.1 Library"
i referenslistan.
Accesskonsult
Micke Falk
Skrivet 21 okt 2011, 19:47
Ah, sen måste
"Microsoft DAO 3.x Object library"
troligen ligga före
"Microsoft ActiveX Data Objects 2.1 Library"
i referenslistan.
"Microsoft DAO 3.x Object library"
troligen ligga före
"Microsoft ActiveX Data Objects 2.1 Library"
i referenslistan.
Accesskonsult
Micke Falk
Micke Falk
#9
Skrivet 24 okt 2011, 09:44
Tusen tack MickeF !
Det fungerade inte att köra koden i frågan för den var "ReadOnly".
Så jag körde istället direkt i tabellen och då fungerar det klockrent !
Mvh // Håkan
Skrivet 24 okt 2011, 09:44
Tusen tack MickeF !
Det fungerade inte att köra koden i frågan för den var "ReadOnly".
Så jag körde istället direkt i tabellen och då fungerar det klockrent !
Mvh // Håkan
Det fungerade inte att köra koden i frågan för den var "ReadOnly".
Så jag körde istället direkt i tabellen och då fungerar det klockrent !
Mvh // Håkan
Sida 1 av 1
1 besökare läser just nu den här tråden, varav 0 medlem(mar) och 1 gäst(er)
Sök i Eforum
Senast obesvarade trådar
-
Varning till er som använder Windows XP och IE 8
Forum: Webbläsare -
Skärmen startar inte när ja öppnar locket
Forum: Bärbara datorer -
Kan inte installera smartkort
Forum: Windows 7 -
Bärbar Mac tillräckligt bra för redigering
Forum: Köpa/Bygga dator -
Process Lasso Pro FREE license
Forum: Program - övriga -
Dell panka
Forum: Öppet forum! Ordet är fritt ... -
Mask On
Forum: Öppet forum! Ordet är fritt ... -
Hur får man game.cfg att fungera i CS: Global Offensive?
Forum: Datorspel -
10 gratisverktyg för säkert nät
Forum: Säkerhet - övrigt -
Varning för ”Nummerupplysningen.se”
Forum: Öppet forum! Ordet är fritt ...

Logga in
Bli medlem

Citera flera inlägg