Jag blir galen snart! antagligen har jag hållt på för länge med det här så jag inte ser problemet. problemet är nog att objRS("mBorn") görs om till text och din strYear är ett heltal , asp typar inte sina variabler men motorn tolkar innehållet i dem så jag skulle nog prova att göra if'en på detta sätt Testa: finns ett problem med cint i vbscript, det tenderar att crasha om det tex kommer ett null i resultatet. ...fast det finns ju sätt att kolla om resultatet är null innan tilldelningen sker... ex: sant , men +0 tricket är snabbare. , men det kanske inte är samma problem nu förtiden när maskinerna är bättre än de var då jag kodade asp. Markera årtal i select (lista)
Jag försöker skriva ut alla årtal mellan 1900 och 2007, och det funkar som det ska. Problemet är
att jag vill att årtalet som ligger i databasen ska vara markerad i listan.
Någon som fattar varför detta inte funkar? Om man byter ut ""& objRs("mBorn") &"" till "1982"
dvs. skriver in ett årtal manuellt så funkar det.
<code>
For strYear = Year(now()) To 1900 step -1
Response.Write "<option value="""& strYear &""""
If strYear = ""& objRs("mBorn") &"" Then Response.Write "selected=""selected""" End If
Response.Write ">"& strYear &"</option>"& vbCrLf
Next
</code>Sv: Markera årtal i select (lista)
if strYear = (objRS("mBorn")+0) then
då lurar du asp motorn att konvertera till heltal
det låter dumt men det funkar :)Sv: Markera årtal i select (lista)
1. "Gör om" objRs("mBorn") till ett heltal (och lägg in det i en variabel före For-satsen)
<code>
mBorn = cInt(objRs("mBorn"))
...
For ...
...
If strYear = mBorn ...
</code>
2. Sätt in ett mellanslag före selected
<code>
... Response.Write " selected=""selected""" ...
</code>Sv:Markera årtal i select (lista)
därför fungerar ju +0 "tricket" bättre.Sv: Markera årtal i select (lista)
<code>
If Not isNull(objRs("mBorn")) Then
mBorn = cInt(objRs("mBorn"))
End If
</code>Sv:Markera årtal i select (lista)