Avatar billede kapoou Nybegynder
18. februar 2003 - 22:58 Der er 14 kommentarer og
1 løsning

If sætning

Hejsa alle samen. Jeg har et lille problem som er ved at blive lidt stort!

Denne her sætning volder mig store problemer!

if objValgt("niveau") >= "2" and  ObjUnder2("overid") = id then

Selvom begge udsagn er korrekte, læses scriptet ikke videre! Den virker på en anden server så det kan jeg heller ikke lige forstå. Hvis man fjerner det sidste udsagn kører scriptet videre og virker altså.

if objValgt("niveau") >= "2" then.

Og hvis man sætter det tal ind som id skal være i den pågældende situation kørere scriptete også videre! altså:

if objValgt("niveau") >= "2" and  ObjUnder2("overid") = "45" then.

Er der nogle som kan give mig en forklaring og løsning på dette her for jeg er godt nok blank, hehe.

På den server hvor scriptet virker køres der med mySQL hvorimod jeg kørere med SQL-server nu.
Avatar billede medions Nybegynder
18. februar 2003 - 23:00 #1
if CInt(objValgt("niveau")) >= 2 and CInt(ObjUnder2("overid")) = id then

Prøv sådan!

//>Rune
Avatar billede Jman Praktikant
18. februar 2003 - 23:01 #2
if objValgt("niveau") >= "2" and  ObjUnder2("overid") ='"& id &"' then
Avatar billede kapoou Nybegynder
18. februar 2003 - 23:06 #3
Medions
Der skete ikke det store.

Superior
Jeg har selv prøvet det der, men det virker ikke. Det er vel også mere i en SQL sætning at man bruger '"&  &"', ik?
Avatar billede medions Nybegynder
18. februar 2003 - 23:08 #4
Hmm prøv at beskriv hvad den skal gøre præcist!

//>Rune
Avatar billede Jman Praktikant
18. februar 2003 - 23:10 #5
jo - det er mest sql - det tyder dog på at du ikke får hevet din ID med over.. (?)
Avatar billede Jman Praktikant
18. februar 2003 - 23:11 #6
prøv evt. en response.write id og se om den er med
Avatar billede kapoou Nybegynder
18. februar 2003 - 23:15 #7
Den skal ikke gøre det store, men...

hvis vi nu siger at
objValgt("niveau")= 4
ObjUnder2("overid") = 45
id = 45

og sætninger set ud som følger:

if objValgt("niveau") >= "2" and  ObjUnder2("overid") = id then
response.write "Det virker"
end if

så skulle den jo gerne skrive "Den virker", men men men, det gør den ikke.

Hvis jeg til gengæld skriver..

if objValgt("niveau") >= "2" then
response.write "Det virker"
end if

Så kører den fint igennem! hvorimod

if ObjUnder2("overid") = id then
response.write "Det virker"
end if

ikke virker. Det vil jo så sige at det er det sidste udsagn som kokser, hvilket jeg har lidt svært ved at fortså da den virker perfekt på den anden server som dog kører med mySQL. Nu kører jeg med SQL-server. Men det skulle vel ikke have den store betydning når det er asp sætningen der bugger! oder wasssssss
Avatar billede kapoou Nybegynder
18. februar 2003 - 23:16 #8
alla variabler komme med over! jeg har nemlig tjekket det igennem og begge udsagn går faktisk op, det er derfor jeg er lidt lost!!
Avatar billede Jman Praktikant
18. februar 2003 - 23:18 #9
det lyder wierd!
Det eneste jeg kan se er at du har et mellemrum for meget mellem "and" og "ObjUnder2..."
men ellers burde det i hvert fald virke
Avatar billede medions Nybegynder
18. februar 2003 - 23:18 #10
kapoou> Lige meget hvad, så skal der ikke " og " rundt om tal!

Prøv dette:

if (CInt(objValgt("niveau")) >= 2) and (CInt(ObjUnder2("overid")) = CInt(id)) then

//>Rune
Avatar billede kapoou Nybegynder
18. februar 2003 - 23:23 #11
Ja det lyder wierd! MEN Rune du er sgu en helt! Det funker! Det havde jeg godt nok aldrig fundet ud af, hehe. Tak tak :-) Dine velfortjente points er på vej! mange tak. Kan du give en super kort forklaring på hvad den der CInt gør?

Jonas
Avatar billede medions Nybegynder
18. februar 2003 - 23:25 #12
*G* Fair nok :-)

CInt() er en funktion i VB som konveter String variabler til Integer variabler. Det vil sige at den konvetere tekst variabler om til tal variabler.

Din fejl opstår ved at du smækker " og " rundt om dine tal. Det skal du ikke!

//>Rune
Avatar billede kapoou Nybegynder
18. februar 2003 - 23:28 #13
Jeg tror faktisk ikke at de 2 " " var problemet , men det var nok mere manglen af CInt, men det skal jeg jo nok ikke lige gøre mig klog på lige nu, he he. Men ihvertfald tak!
Avatar billede medions Nybegynder
18. februar 2003 - 23:29 #14
*G*
Anytime...
Thx 4 Poinz

//>Rune
Avatar billede mortrr Praktikant
18. februar 2003 - 23:31 #15
Grunden til at det virker på den ene, og ikke på den anden, kan være forskel i den variant der returneres fra databasen.

En streng er fx ikke bare en streg.

Man kan faktisk godt komme ud for situationer hvor man henter en værdi fra et objekt (som fx et adodb.field), og tror at det er en streng, men database driveren afleverer feltet med en anden identifikation, så du ikke kan sammenligne det med en streng oprettet i vbscript men godt hvis den har været gemt i en session.

Jeg har sågar prøvet en driver der selv syntes den ville lave et text-felt der tilfældigvis indeholdt et tal om til en integer-variant.

Man kan afhjælpe det ved at sikre sig, at de ting man sammenligner er ens typer.
Hvis databasefeltet er et tal, så sammenlign med et tal.
Hvis det er en streng, så sammenlign med en streng.

Og hellere "typecaste" en gang for meget.
if cInt(objUnder2("overid"))=cint(id) then

En hel anden fejlmulighed er at felttyperne på de to servere ikke er sat op ens. Fx kunne det være at et tekst-felt var sat op som fast-længde (char) på den ene, og variabel-længde (varchar) på den anden.

Happy hunting.

- Morten
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