Avatar billede Slettet bruger
11. februar 2002 - 10:16 Der er 5 kommentarer og
3 løsninger

Dette burde være let....

Jeg skal finde det højeste ID_NR i en tabel. Dette har jeg gjort med SELECT MAX(ID_NR) AS NR FROM bla. bla. Det funger fint nok. Det der så er "BUGGEN" ved det, er at hvis tabellen fx er tom skal NR sættes = 1, og hvis tabellen så ikke er tom skal NR sættes lig med NR +1.

Hvordan gøres dette? Har prøvet forskellige if sætninger men uden held
Avatar billede kennethrisum Nybegynder
11. februar 2002 - 10:32 #1
Hvis du bruger SQL server:
SELECT ISNULL(MAX(ID_NR),0) + 1 AS NR

mvh/Kenneth
Avatar billede isl19960 Nybegynder
11. februar 2002 - 10:33 #2
Test på dit recordset... hvis det er ved enden fra starten, er det tomt og NR kan sættes til 1 - ellers har du værdien og lægger en til...
Avatar billede kennethrisum Nybegynder
11. februar 2002 - 10:34 #3
Hovsa, lige lidt for tidligt.

Hvis du bruger andre database systemer kan du søge på COALESCE i stedet for ISNULL.
Avatar billede coltau Juniormester
11. februar 2002 - 10:51 #4
SQL = "select max(id_nr) osv.
RS = conn.Execute(SQL)
if not RS.EOF then
  Nr = RS(0) + 1
else
  Nr = 1
end if
Avatar billede kennethrisum Nybegynder
11. februar 2002 - 10:54 #5
>>coltau
De DB jeg kender til vil alle sammen returnerer en række med værdien NULL. Derfor vil RS.EOF blive false. Eller håndteres det anderledes i de systemer du bruger?
Avatar billede coltau Juniormester
11. februar 2002 - 11:12 #6
Ok - der var jeg for hurtig. !
Jeg har lige testet det og nedenstående virker (ulogisk nok) på Access.

if RS(0) <> 0 then
  Nr = RS(0) + 1
else
  Nr = 1
end if

Det betyder at man blot kan avnede denne linie uden kontrol:

Nr = RS(0) + 1

Fuldstændig ulogisk. !
Avatar billede kennethrisum Nybegynder
11. februar 2002 - 11:19 #7
>>coltau
Ja det er ulogisk, men access er jo ikke lige den db, der overholde standarden ;-)
Avatar billede jhc Nybegynder
11. februar 2002 - 11:35 #8
Men det gør den fordi at det er en integer og den som default er 0 i dit recordset i Access - eller ADO som det bygger på. derfor kan sige RS(0) + 1
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
Kurser inden for grundlæggende programmering

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