devotionMedlem sedan jan. 20013 582 inlägg Hmmm..... Hej!
Varför fungerar:
<% if Request.form("supplier") = objRS("supplierId") then response.write "selected" %>
men inte:
<% if cInt(Request.form("supplier")) = cInt(objRS("supplierId")) then response.write "selected" %>
Som ger felmeddelandet:
Körningsfel i Microsoft VBScript (0x800A000D)
Inkompatibla typer: 'cInt'
/uppdragNu/addEnumber.asp, line 97
supplierId är lagrat som tal databasen och Request.form("supplier") kommer från formuläret...
Mvh
Henrik
The_HulkMedlem sedan juni 20031 837 inlägg Måste du inte ha dubbla likhetstecken?
i första exemplet
Request.form("supplier") = objRS("supplierId")
tilldelar du nog Request.form("supplier") värdet från objRS("supplierId")
vilket alltid kommer att bli sant
medans i andra exemplet
cInt(Request.form("supplier")) = cInt(objRS("supplierId"))
försöker du till delar värdet av cInt(Request.form("supplier")) värdet från cInt(objRS("supplierId")).
Kan inte garantera att det är så i ASP men i de flesta andra språken har det den betydelsen.
testa med
<% if cInt(Request.form("supplier")) =[b]=[/b] cInt(objRS("supplierId")) then response.write "selected" %>
devotionMedlem sedan jan. 20013 582 inlägg Hmmm...
Tror jag kommit på felet...
När jag inte har valt en leverantör i listan så är ju request.form("supplier") = "" Då blir det ju givetvis fel att använda cInt...
Ska försöka hitta ett sätt att hantera när request.Form("supplier") =""
Hur skulle man kunna hantera det???
Mvh
henrik
The_HulkMedlem sedan juni 20031 837 inlägg där är det ju bara att skriva
<% if Request.form("supplier") != '' && cInt(Request.form("supplier")) = cInt(objRS("supplierId")) then response.write "selected" %>
The Hulk: VBScripts syntax ser inte ut så. Dessutom så skulle det inte funka även om man skriver rätt syntax eftersom att i VBScripts så körs alla villkor. Den hoppar alltså inte ur när första villkoret är falskt.
@ndersMedlem sedan juni 200032 969 inlägg The Hulk, förvirra inte folk.
I ASP (VBScript / VB-besläktade språk) används inte ==, !=, && och ||.
Här används NOT, AND och OR, samt både tilldelning och jämförelser görs med ett likhetstecken.
Ska försöka hitta ett sätt att hantera när request.Form("supplier") =""
Hur skulle man kunna hantera det???
Antingen sätter du ett ogiltigt siffervärde (typ -1) i din <select>, eller så gör du en if-sats på serversidan;
if isnumeric(request.form("supplier") then
' weeee
end if
devotionMedlem sedan jan. 20013 582 inlägg tänk vad ett:
-1
kan göra!
Gjorde så här:
<select name="supplier" class="listMenu" id="supplier" onChange="if (this.selectedIndex > 0) this.form.submit();">
<option value="[b]-1[/b]" selected="selected">--Välj leverantör--</option>
<% Do until ObjRS.EOF %>
<option value="<% =objRS("supplierId")%>"<% if cInt(request.Form("supplier")) = cint(objRS("supplierId")) then response.write "selected" %>><% =objRS("supplierName")%></option>
<% objRS.Movenext %>
<% Loop %>
</select>
istället för:
<select name="supplier" class="listMenu" id="supplier" onChange="if (this.selectedIndex > 0) this.form.submit();">
<option value="" selected="selected">--Välj leverantör--</option>
<% Do until ObjRS.EOF %>
<option value="<% =objRS("supplierId")%>"<% if cInt(request.Form("supplier")) = cint(objRS("supplierId")) then response.write "selected" %>><% =objRS("supplierName")%></option>
<% objRS.Movenext %>
<% Loop %>
</select>
och det funkade fint...
Är det det bästa sättet, eller ska man lösa det med en if-sats?
Mvh
Henrik
@ndersMedlem sedan juni 200032 969 inlägg Well, det är nog hugget som stucket, men jag gillar enkla lösningar, och hade nog valt -1-varianten också. Enkelt och grejt. :)