Avatar billede egeskov Nybegynder
13. december 2001 - 18:22 Der er 8 kommentarer og
1 løsning

Resultat af SQL: SELECT SUM

Vi har problemer med resultatet af denne SQL forespørgsel udført på en access 2000-database:

rs.Open(\"SELECT SUM(Beløb) AS OverførtTilAndre \" & _
\"FROM Overførsel \" & _
\"WHERE Accept AND Fra=\" & session(\"BrugerId\")), conn
if not rs.eof then
  OverfortTilAndre=rs(\"OverførtTilAndre\")
else
  OverfortTilAndre=0
end if

Hvad returneres hvis ingen records lever op til kravet i WHERE?
Avatar billede nute Nybegynder
13. december 2001 - 18:26 #1
du skal heller forespør på verdien som returneres:

rs.Open(\"SELECT SUM(Beløb) AS OverførtTilAndre \" & _
\"FROM Overførsel \" & _
\"WHERE Accept AND Fra=\" & session(\"BrugerId\")), conn
if rs(\"OverførtTilAndre\") <> \"0\" then
  OverfortTilAndre=rs(\"OverførtTilAndre\")
else
  OverfortTilAndre=0
end if

men du skal være litt forsiktig med å benytte spesialtegn (æ,ø og å) i kolonne navn...

den beste løsning vil være:

rs.Open(\"SELECT SUM(Beløb) AS OverførtTilAndre \" & _
\"FROM Overførsel \" & _
\"WHERE Accept AND Fra=\" & session(\"BrugerId\")), conn

OverfortTilAndre = Cint( rs(\"OverførtTilAndre\") )

så har du verdien 0 hvis din SQL ikke gir noen treff eller det korrekte antallet hvis den gir noen treff

/nute
Avatar billede egeskov Nybegynder
13. december 2001 - 18:56 #2
-> nute
... desværre, det var også vores første gæt, men så får jeg bare:

  Error Type:
  Microsoft VBScript runtime (0x800A005E)
  Invalid use of Null: \'Cint\'
  /delebil/SaldoOpdater.asp, line 41

Avatar billede nute Nybegynder
13. december 2001 - 19:01 #3
så er det noe galt med din SQL...

du kan ikke refere til en boolsk verdi i en database som du har gjort:

\"WHERE Accept AND\"

skal være

\"WHERE Accept = true AND\"

eller

\"WHERE Accept = \'true\' AND\"

/nute
Avatar billede nute Nybegynder
13. december 2001 - 19:02 #4
hvis din SQL er korrekt, så vil din COUNT *alltid* returnere 0 hvis det ikke er noen treff...
Avatar billede snuseren.dk Nybegynder
13. december 2001 - 19:16 #5
Tjek måske eventuelt om database forbindelsen virker, og du har skriverettigheder på databasen...
Avatar billede nute Nybegynder
13. december 2001 - 19:19 #6
snuseren.dk >> hvis database forbindelsen ikke fungerte, så ville feilen oppstått lenge før man fikk muligheten til å konvertere en recordsetverdi til int ( ved bruk av CInt() ).

Skriverettigheter er *ikke* nødvendig for å skulle kun lese data fra databasen
Avatar billede egeskov Nybegynder
13. december 2001 - 20:20 #7
Problemet opstår ikke ved brug af COUNT men ved brug af SUM. COUNT returnere 0 som forventet.

Vedrørende \'WHERE Accept\' fungerer det fint.
Avatar billede nute Nybegynder
13. december 2001 - 20:28 #8
hov...jeg har tydelig en feilkobling i hjernen. jeg er innvolvert i en annen SQL thread hvor det er spørsmål om COUNT, så har jeg forvekslet litt...

så skal du benytte IsNull:

rs.Open(\"SELECT SUM(Beløb) AS OverførtTilAndre \" & _
\"FROM Overførsel \" & _
\"WHERE Accept AND Fra=\" & session(\"BrugerId\")), conn

if NOT IsNull( rs(\"OverførtTilAndre\") ) then
  OverfortTilAndre=CInt( rs(\"OverførtTilAndre\") )
else
  OverfortTilAndre=0
end if


alternativt:


rs.Open(\"SELECT SUM(Beløb) AS OverførtTilAndre \" & _
\"FROM Overførsel \" & _
\"WHERE Accept AND Fra=\" & session(\"BrugerId\")), conn

if IsNumeric( rs(\"OverførtTilAndre\") ) then
  OverfortTilAndre=CInt( rs(\"OverførtTilAndre\") )
else
  OverfortTilAndre=0
end if

/nute
Avatar billede egeskov Nybegynder
13. december 2001 - 21:39 #9
takker...
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