Avatar billede meelby Nybegynder
09. august 2003 - 09:27 Der er 17 kommentarer og
1 løsning

Autonummer til liste

Jeg har i en form oprettet en liste med følgende sql:
SELECT PersonID, Navn, CPR FROM Person WHERE HoldID=[Forms]![UnderFormTilHovedForm]![TempHoldID];

Listen virker fint, ved at vise:
Peter  12-12-01
Bjarne 23-05-00
Jette  15-02-00

men problemet er at jeg i listen skal have fortløbende nummer på Eks.:

1 Peter  12-12-01
2 Bjarne 23-05-00
3 Jette  15-02-00
Avatar billede googolplex Novice
09. august 2003 - 10:13 #1
Du skal bare sætte feltet til autonummerering.
Avatar billede henrik13 Nybegynder
09. august 2003 - 13:07 #2
>> googolplex
Hvor kan man sætte autonummerering til i en SQL forespørgsel.
Vh Henrik13
Avatar billede googolplex Novice
09. august 2003 - 14:08 #3
Hvis du bruger Access går jeg ud fra at du opretter Tabellerne der ? Hvis det er tilfældet, så kan du sætte Autonummerering samtidig ?
Avatar billede fynbohans Nybegynder
09. august 2003 - 16:13 #4
Du får svært ved at lave numrene i en Formular.
Faktisk skal der laves et nyt sæt numre efter hver opdatering af tabellen.
Hvis det ikke er brugeren, der skal opdatere, men dig selv, er det let at lave.
Avatar billede fynbohans Nybegynder
09. august 2003 - 16:19 #5
Men det afhænger helt af hvor mange poster der er din tabel.
Avatar billede meelby Nybegynder
09. august 2003 - 18:00 #6
Jeg har ca. 1000 personer i DB, og jeg ved at det skal gøres via VBA, men jeg kan ikke få funkionen til at virke. Jeg har prøvet med en Function der sætter 1 til recorden med Nr=Nr+1, men det virker ikke efter hensigten, derfor er det jeg spørger i eksperten.

Jeg skal lige oplyse at jeg har 2 lister på samme form, hvilket betyder at Nr skal nulstilles for hver liste. Altså er det formindeligt ikke noget med en global Nr ???
Avatar billede terry Ekspert
09. august 2003 - 18:13 #7
meelby>I can see that there is NO sort order even though it is actually sorted after descending date. If you can accept soring by date then I think I have a solution!
Avatar billede fynbohans Nybegynder
09. august 2003 - 18:16 #8
Du kan opdatere dine kolonner med Nr i en skjult formular.
Sender eksempel senere.
Avatar billede terry Ekspert
09. august 2003 - 18:23 #9
I havent tested this
SELECT PersonID, Navn, CPR, (Select Count (*) from Person Where [CPR] > [P].[CPR])+1 AS SortOrder
FROM Person AS P WHERE HoldID=[Forms]![UnderFormTilHovedForm]![TempHoldID] ORDER BY CPR DESC;
Avatar billede fynbohans Nybegynder
09. august 2003 - 18:32 #10
Private Sub Form_Open(Cancel As Integer)
            Dim SidsteNr As Long
            Dim IndexNr As Long
           
            DoCmd.GoToRecord , , acLast
            SidsteNr = [ID]
            DoCmd.GoToRecord , , acFirst
            IndexNr = 0
           
            Do
                IndexNr = IndexNr + 1
                [NR] = IndexNr
                If [ID] = SidsteNr Then Exit Do
                DoCmd.GoToRecord , , acNext
            Loop
           
            DoCmd.Close
End Sub

Denne kode anbringes i en formular, som åbnes skjult - ellers kan det ses på skærmen. Den lukker sig selv
Avatar billede fynbohans Nybegynder
09. august 2003 - 18:33 #11
og formularen skal åbnes lige før du gemmer en ny post.
Avatar billede fynbohans Nybegynder
09. august 2003 - 18:36 #12
og den i forespørgslen for den skjulte formular skal navn eller hvad
du nu ønsker være sorteret som i KomboBoxen
Avatar billede meelby Nybegynder
10. august 2003 - 10:58 #13
Terry>> Det er næsten ok, men den viser altså ikke helt korrekt. Den starter med 2, springer 5 over, resten kommer fint:

2 Morten Anthon 290987
3 Patrick     280686
6 Ahmet Satan    270886
7 Glenn Bütow    261186
8 Mads Hornbæk    240786

Jeg vil gerne have den til at starte med 1 og skal sorterer efter Navn!

fynbohans>> Hvis jeg forstår din idé, vil du oprette en Nr-felt i tabellen, som bliver opdateret ved oprettelse eller ændringer med den skjulte form. Hvis det er tilfældet vil listen kun blive vist korrekt hvis jeg viser alle poster på én gang, hvilket jeg ikke gør!
Avatar billede fynbohans Nybegynder
10. august 2003 - 12:06 #14
Hvis du bruger de samme betingelser i forespørgslen, der ligger til
grund for den skjulte formular, som for listen, får du hvad du ønsker. Eller du kan bruge en IF/ENDIF i VBA-koden.
Avatar billede terry Ekspert
10. august 2003 - 13:41 #15
can you send me your dB so I can play around with it? eksperten@santhell.dk
Avatar billede Jørgen Kirkegaard Professor
11. august 2003 - 22:11 #16
Brug Terrys finte "Where [CPR] > [P].[CPR])+1", men brug den på et autonummereret felt, som du tilføjer tabellen, så er du sikker på, at feltet er unikt...Modificér, så den starter med 1.
Avatar billede terry Ekspert
14. august 2003 - 17:08 #17
SELECT P.PersonID, P.Navn, P.CPR, P.Billed, (Select Count (*) from Person P1 Where [P1].[Navn] < [P].[Navn] AND P1.HoldID = [Forms]![UnderFormTilHovedForm]![TempHoldID])+1 AS SortOrder
FROM Person AS P
WHERE (((P.HoldID)=[Forms]![UnderFormTilHovedForm]![TempHoldID]))
ORDER BY P.Navn;
Avatar billede terry Ekspert
14. august 2003 - 17:09 #18
It cant be used on an autonumber field because we are sorting on Navn, therefore Count(*) has to be on Navn!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester