Gå til innhold

While og for løkke problem


Anbefalte innlegg

Hei, jeg har et vrient problem og lurer på om det er en guru der ute kan hjelpe meg...

 

Jeg lager en teoriprøve for bil og får problemer med resultatet. Når en bruker tar prøven og bare velger et svaralternativ så går det greit(da får jeg ut riktig svar), men når brukeren velger flere alternativer så blir resultatet feil fordi:

 

Problem: Når jeg sammenligner det brukeren har svart med de svaralternativene som er riktig går det greit når det ikke er fler alternativ til et spm. men når det er fler alternativ til et spm så sammenligner den bare med det første alternativet brukeren har svart fordi det er en while-løkke inni for-løkken. Så det jeg ønsker er at svaralternativet brukeren har svart endrer seg ved hver svartalternativ i while-løkken.

Det er kanskje lettere å se på koden hvis dette blir litt uklart, du kan også se på websiden bill.hive.no. brukernavn og passord er test eller en av brukerene i toppti lista.

 

sub Page_Load(sender as Object, e as EventArgs)
if session("innLoggetBruker") = 0 then
   response.redirect("loginelev.aspx")

end if
hentSvart()
end sub

function hentSvart()
dim liste as Arraylist
liste = new Arraylist
dim sjekkSpm as Arraylist
sjekkSpm = new Arraylist
dim sjekkSvar as Arraylist
sjekkSvar = new Arraylist
dim sjekkValgt as Arraylist
sjekkValgt = new Arraylist

dim sum = 0
dim HentSpmID
dim i

dim HentSpm
dim sjekk as boolean
dim HentRiktigSvar

dim DBforbindelse as OleDbConnection
dim DBkommando as OleDbCommand
dim Leser as OleDbDataReader
dim fstring as string = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&Server.mappath("oblig3DB.mdb")
DBforbindelse = new OleDbConnection(fstring)
DBforbindelse.open()
Dim sql as string = "select valgtSvarID from TblAvgittSvar where brukerID=" & session("innLoggetBruker") & ""
DBkommando = new OleDbCommand(sql,DBforbindelse)
Leser = DBkommando.ExecuteReader
while Leser.Read
   liste.add(Leser("valgtSvarID")) 'henter ut svaralt brukeren har valgt og legger det i en liste
end while
Leser.Close()
DBforbindelse.Close()

for i=0 to liste.count-1

response.write("<b>skriver ut alt. brukeren har valgt " & liste(i) & "</b><br>")


   DBforbindelse.open()
   sql = "SELECT spmID FROM TblSvar where svarID=" & liste(i) & ""
   DBkommando = new OleDbCommand(sql,DBforbindelse)
   Leser = DBkommando.ExecuteReader
   while Leser.Read
       HentSpmID = Leser("spmID")  'henter ut spmID'n til de valgene brukeren har tatt
   end while
   Leser.Close()
   DBforbindelse.Close()

   DBforbindelse.open()
   sql = "SELECT spm FROM TblSpm WHERE spmID = " & HentSpmID & "" 'and riktigsvar=true"
   DBkommando = new OleDbCommand(sql,DBforbindelse)
   Leser = DBkommando.ExecuteReader
   while Leser.Read
       HentSpm = Leser("spm")  'henter ut spm(text) til spmID'n som ble hentet over
   end while
   Leser.Close()
   DBforbindelse.Close()

     DBforbindelse.open()
   sql = "SELECT * FROM TblSvar WHERE spmID = " & HentSpmID & ""
   DBkommando = new OleDbCommand(sql,DBforbindelse)
   Leser = DBkommando.ExecuteReader
   while Leser.Read

       HentRiktigSvar = Leser("riktigSvar")    'henter ut svaralt til spm og om det er riktig






       if sjekk = false and not sjekkSpm.contains(HentSpm) then
           Label1.text +=("<br><b>" & HentSpm & "</b><br>")
           sjekkSpm.add(HentSpm)
           sjekk = true
       end if

       if HentRiktigSvar = true

               if liste(i) = Leser("svarID") and not sjekkSvar.contains(Leser("svarID")) then
                   Label1.text +=(Leser("svarID") & "- <b>" & Leser("Svar") & "</b><font color=green> **Riktig** </font><br>")
                   sum = sum + 1
                   sjekkSvar.add(Leser("svarID"))
                   response.write("Riktig og valgt. " & liste(i) & " , " & Leser("svarID") & "<br>")

               elseif liste(i) <> Leser("svarID") and not sjekkSvar.contains(Leser("svarID")) then
                   Label1.text +=(Leser("svarID") & "- <b>" & Leser("svar") & "</b><font color=red> **Feil - ikke valgt** </font><br>")
                   sum = sum - 1
                   sjekkSvar.add(Leser("svarID"))
                   response.write("Riktig men ikke valgt. " & liste(i) & " , " & Leser("svarID") & "<br>")
               end if
               sjekkValgt.add(liste(i))

       elseif HentRiktigSvar = false

           if liste(i) = Leser("svarID") and not sjekkSvar.contains(Leser("SvarID")) then
               Label1.text +=(Leser("svarID") & "- " & Leser("Svar") & "<font color=red> **Feil** </font><br>")
               sjekkSvar.add(Leser("svarID"))
               sum = sum -1
               response.write("Feil og valgt. " & liste(i) & " , " & Leser("svarID") & "<br>")

           elseif liste(i) <> Leser("svarID") and not sjekkSvar.contains(Leser("svarID"))
               Label1.text +=(Leser("svarID") & "- " & Leser("Svar") & "<br>")
               sjekkSvar.add(Leser("svarID"))
               response.write("Feil og ikke valgt. " & liste(i) & " , " & Leser("svarID") & "<br>")

           end if
       end if



   end while
   Leser.Close()
   DBforbindelse.Close()

   sjekk = false
next

if sum < 15 then
   Label3.text +=("Du har ikke bestått, du fikk " & sum & " av 20 mulige")
else
   Label3.text += ("Du har bestått, du fikk " & sum & " av 20 mulige")
end if

end function

 

Takker for all hjelp!

Lenke til kommentar
Videoannonse
Annonse

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...