Avatar billede bongii Nybegynder
03. september 2008 - 09:05 Der er 9 kommentarer og
1 løsning

Spørgsmål til sum

Hej.

Jeg har denne forespørgsel:
"select sum(totalprice) as total from orders where STATDeclined = 0 and orderDate between '"&date&"' and '"&now&"'"

Jeg ved ikke hvordan jeg requester på hvis der ikke findes et resultat.

F.eks virker dette ikke:
if orders("total") = "" then
total = 1
else
total = orders("total")
end if

Jeg bliver nødt til at laev total om til et tal, da jeg senere bruger formatnumber og siden fejler hvis total ikke indenholder en værdi. Er der en der har en løsning. Har prøvet en masse forskellige if.
Avatar billede softspot Forsker
03. september 2008 - 09:08 #1
du kan lave et check på orders.eof inden du gør noget andet:

if not orders.eof then
  total = orders("total")
else
  total = 1
end id
Avatar billede bongii Nybegynder
03. september 2008 - 09:54 #2
Den fanger den ikke. Der må være et eller andet specielt ved sum..?
Avatar billede w13 Novice
03. september 2008 - 09:59 #3
Ja, eller i din SQL. :) Måske hvis din Where ikke fanger de korrekte. Datoerne skal måske have # omkring i stedet for '

Prøv evt. at udskrive din SQL-sætning, så vi kan se, hvordan den bliver sat sammen.
Avatar billede softspot Forsker
03. september 2008 - 10:08 #4
Du kan, i dette tilfælde, undgå at "bokse" med datoformater, hvis du bruger databasens egne datorutiner (dette er Access-format):

"select sum(totalprice) as total from orders where STATDeclined = 0 and orderDate between date() and now()"

Kan du i øvrigt ikke lige vise hele koden fra du udfører din SQL-sætning til du har tjekket på orders...? Så er det lidt lettere at se om der går noget galt på vejen...
Avatar billede bongii Nybegynder
03. september 2008 - 11:29 #5
Selve sqlén virker fint, men problemet opstår hvis der ikke er et resultat.

call opentblIntranet("select sum(totalprice) as total from orders where STATDeclined = 0 and orderDate between '"&date&"' and '"&date&"'", orders)
    if not orders.eof then
        OmsDag1 = orders("total")
    else
        OmsDag1 = 1
    end if
    response.write OmsDag1
    call closetblIntranet(orders)

Den fanger ikke "else" hvor OmsDag1 = 1. Dvs.
Avatar billede softspot Forsker
03. september 2008 - 11:59 #6
Hvad kommer der rent faktisk ud af din SQL? Er der en række som indeholder NULL, eller er det 0 eller noget helt tredie?

Du kunne evt. teste på det resultat som kommer, når du laver en forspørgsel som ikke returnerer noget...

Det er grundlæggende svært at forholde sig til, hvad dit intranet-bibliotek gør og hvilke regler der er lagt i det ifht. f.eks. tomme resultater osv., så du er nød til at være mere konkret mht. hvad der kommer tilbage i de forskellige tilfælde (specielt tomme resultater).

Returneres der f.eks. 0 kunne du tjekke på det i stedet for orders.EOF:

    if not orders.eof then
        if orders("total") > 0 then
            OmsDag1 = orders("total")
        else
            OmsDag1 = 1
        end if
    else
        OmsDag1 = 1
    end if
    response.write OmsDag1
Avatar billede bongii Nybegynder
03. september 2008 - 12:58 #7
Perfekt soft - fik dette til at virke:
if orders("total") > 0 then OmsDag1 = orders("total") else OmsDag1 = 0
Avatar billede softspot Forsker
03. september 2008 - 13:05 #8
OK, jamen, så velbekomme da =)
Avatar billede softspot Forsker
03. september 2008 - 13:31 #9
Tak for point :)
Avatar billede bongii Nybegynder
03. september 2008 - 14:29 #10
Det er mig der 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