18. februar 2003 - 22:58Der 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.
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
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?
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!
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
Synes godt om
Ny brugerNybegynder
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.