Avatar billede ulrikp Nybegynder
22. oktober 2002 - 17:18 Der er 11 kommentarer og
1 løsning

recordset.eof

Mit problem er, at while-løkken eksekveres én gang, selvom tabellen jeg selecter fra er tom!!

strSQL = "SELECT Max(ID) AS Max FROM EMBASSY"
set rs = objCon.execute(strSQL)
while not rs.eof
    id = rs("Max")+1   
    rs.movenext
wend

Både rs.eof og rs.bof er false?? Hvordan f... kan de være det?
Hvordan finder jeg ud af om recordset'et er tomt?
Avatar billede medions Nybegynder
22. oktober 2002 - 17:21 #1
strSQL = "SELECT * FROM EMBASSY"
set rs = objCon.execute(strSQL)
while not rs.eof
    id = rs("id")+1   
    rs.movenext
wend

prøv med denne
//>Rune
Avatar billede medions Nybegynder
22. oktober 2002 - 17:22 #2
ulrikp> Du henter jo kun MAX id'en, altså den største! -Det vil jo ikke gå, hvis du fx. har autonumnering på dit felt!

//>Rune
Avatar billede medions Nybegynder
22. oktober 2002 - 17:31 #3
MAX() er en funktion indbygget i SQL... Altså den henter den største record, der findes oxo en funktion der hedder MIN() den finder jo så selvfølgelig den mindste... Så er der AVR() <- ellers er det ARG() kan ik' lige helt huske den, og den tager så gennemsmittet.. ;o)

//>Rune
Avatar billede ulrikp Nybegynder
22. oktober 2002 - 17:38 #4
Det jeg gerne vil er at finde det største nummer i kolonnen ID for derefter at lægge én til, til brug for den næste record, som jeg skal have sat ind i tabellen. Det kan man også godt med den måde du beskriver ved lige at sætte ORDER BY ID til sidst, for ellers bliver mit id (til den nye record jeg skal sætte ind) jo bare den sidste records id plus 1...
Grunden til at jeg ville bruge MAX er, at jeg kun for én record tilbage (hvis der eller er nogle i records i databasen). På den anden måde vælger jeg jo samtlige records ud, hvorefter jeg skal loope hele vejen igennem recordsettet...
Jeg fatter bare stadig ikke, hvorfor den går ind i løkken, hvis tabellen er og formentlig derfor også recordsettet er tomt???
Avatar billede eagleeye Praktikant
22. oktober 2002 - 17:39 #5
Max er en function.. så der skal [] omkring navnet i SQL sætningen.


strSQL = "SELECT Max(ID) AS [Max] FROM EMBASSY"
Avatar billede ulrikp Nybegynder
22. oktober 2002 - 17:41 #6
SELECT Max(ID) AS Max FROM EMBASSY
...virker fint, hvis der er nogle records i tabellen.
Det er kun i tilfælde af, at der ikke er nogle records i tabellen, at det går galt...
Avatar billede eagleeye Praktikant
22. oktober 2002 - 17:44 #7
Hvis du har en tom tabel giver det også et tomt recordset.
Avatar billede eagleeye Praktikant
22. oktober 2002 - 17:46 #8
Så må du lave din kode sådan her;

strSQL = "SELECT Max(ID) AS Max FROM EMBASSY"
set rs = objCon.execute(strSQL)
if rs.EOF then
  id = 1   
else
  id = rs("Max")+1   
end if


Der er heller ingeen grund til en while når du har brugt Max(id)
Avatar billede ulrikp Nybegynder
22. oktober 2002 - 17:48 #9
eagleeye: Jeg kan godt følge dig, men probæemet er, at rs.eof er false, selvom recordset'et er tomt!!!
Avatar billede eagleeye Praktikant
22. oktober 2002 - 18:05 #10
hvis rs.eof er false så er recordset ikke helt tom så er Max nok lig med Null:

if isNull(rs("Max")) = true then
  id = 1   
else
  id = rs("Max")+1
end if
Avatar billede eagleeye Praktikant
22. oktober 2002 - 18:06 #11
eller sådan her:

if len("" & rs("Max")) = 0 then
  id = 1   
else
  id = rs("Max")+1
end if
Avatar billede ulrikp Nybegynder
22. oktober 2002 - 19:41 #12
Sådan Johan. Det virker med isNull(rs("Max"))!
Tak for hjælpen!
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