Avatar billede tblaster Nybegynder
29. juli 2003 - 13:50 Der er 19 kommentarer og
1 løsning

Exception occurred - sub og rs

Hvordan får jeg denne til kun at blive udskrevet hvis rs("lokalenr") = 2?

  If TTime = RTime And session("ID") = 4 Then
      strTid = "<a href=""bestil.asp?Lokale=" & sQLokale & "&Dag=" & sQDag & "&Mdr=" & sQMdr & "&ÅR=" & sQAar & "&Tid=" & strTid & """ style=""text-decoration: none"">" & strTid & "</a>"
      strKommentar = "Seminarrum benyttes:" & rs("kommentar") & " (<a href=""mailto:" & rs("mail") & """  class=""maillink"">" & rs("initialer") & "</a>, " & rs("firma") & ")"
      rs.movenext
  Else 

Jeg har prøvet med:
If TTime = RTime And session("ID") = 4 And rs("lokalenr") = 2 Then

Men får så bare:
error '80020009'
Exception occurred.

Det hele er opbygget i en sub:

<%

datoStreng = arrDay(WeekDay(datoStr)-1) & " den " & datoDag & ". " & arrMonth(Mdr-1) & " " & Year(datoStr) & " - " & sQLokale
Response.write datoStreng & "</b></font>" ' Afslut overskrift

sub SkrivLinie(strTid, strKommentar)
  Response.Write("<tr>")
  Response.Write("<td bgcolor='#608ec6' width='26' height='19'>&nbsp;</td>")
  Response.Write("<td width='10' nowrap bgcolor='#EFEEDE' height='19'>&nbsp;</td>")
  Response.Write("<td width='96' nowrap bgcolor='#EFEEDE' height='19'>" & strTid & "</td>")
  Response.Write("<td width='415' nowrap bgcolor='#EFEEDE' height='19'>" & strKommentar & "</td>")
  Response.Write("</tr>")
  Response.Write("<tr>")
  Response.Write("<td width='20' colspan='3' height='1'></td>")
  Response.Write("</tr>")
end sub

Set Con = Server.CreateObject("ADODB.Connection")
DBPath = "DBQ=" & server.mappath("../../db/Booking.mdb")
Con.Open "DRIVER={Microsoft Access Driver (*.mdb)};Password=1234 ;" & DBPath
'Find Bookninger for valgte dato
dato = sQMdr & "-" & sQDag & "-" & sQAar ' Format til DB MM-DD-YYYY
SQL = "SELECT lokalenr, tid, firma, initialer, mail, kommentar FROM booking WHERE dato = #" & dato & "#"

set rs = con.execute (SQL)

dato = sQMdr & "-" & sQDag & "-" & sQAar ' Format til DB MM-DD-YYYY
booWeekend = Weekday(datoStr) = 1 or Weekday(datoStr) = 7 'Er det lørdag/søndag
SQL = "SELECT lokalenr, tid, firma, initialer, kommentar FROM booking WHERE dato = #" & dato & "#"
%>
Avatar billede tblaster Nybegynder
29. juli 2003 - 13:52 #1
Jeg har også prøvet at tilføje følgene i toppen af min side:

Set Conn = Server.CreateObject("ADODB.Connection")
Set Rs2 = Server.CreateObject("ADODB.Recordset")
Conn.Open "DBQ=" & Server.Mappath("../../db/Booking.mdb") & ";Driver={Microsoft Access Driver (*.mdb)};Password=1234;"
'Find Bookninger for valgte dato
dato = sQMdr & "-" & sQDag & "-" & sQAar ' Format til DB MM-DD-YYYY
SQL = "SELECT * FROM booking WHERE dato = #" & dato & "#"

rs2.Open SQL, Conn,1,3

session("lokalenr") = rs2("lokalenr")

Men får så bare en beskeden:
Either BOF or EOF is True, or the current record has been deleted. Requested operation requires a current record.
Avatar billede Slettet bruger
29. juli 2003 - 13:56 #2
If TTime = RTime And session("ID") = 4 Then
  if not isNull(rs("lokalenr") Then
    if rs("lokalenr") = " then
      strTid = "<a href=""bestil.asp?Lokale=" & sQLokale & "&Dag=" & sQDag & "&Mdr=" & sQMdr & "&ÅR=" & sQAar & "&Tid=" & strTid & """ style=""text-decoration: none"">" & strTid & "</a>"
      strKommentar = "Seminarrum benyttes:" & rs("kommentar") & " (<a href=""mailto:" & rs("mail") & """  class=""maillink"">" & rs("initialer") & "</a>, " & rs("firma") & ")"
      rs.movenext
    end if
  end if
  Else
Avatar billede Slettet bruger
29. juli 2003 - 13:57 #3
Hvis lokalenr er NULL så vil du få fejl når du spørger direkte på den, derfor ovenstående check med IsNull
Avatar billede md_craig Nybegynder
29. juli 2003 - 13:57 #4
I nederste tilfælde er det fordi RS2 er tom... der skal man altid have en If sætninge, der ser på om der er noget i RS2 eller ej...

Ang. det første virker det underligt... men et eller andet sted sker der jo noget... men det er jo en ret kort fejlmeddelelse.. men nar du har...

If TTime = RTime And session("ID") = 4 And rs("lokalenr") = 2 Then

Så er du sikker på det er tal, altså at det er Integer eller longint osv...
Du kan du hurgtig finde ud af med:

If TTime = RTime And session("ID") = "4" And rs("lokalenr") = "2" Then
Avatar billede tblaster Nybegynder
29. juli 2003 - 14:04 #5
bertie ... jeg ved at lokalenr ikke er null ... den har en værdi og det ved jeg 100% sikkert!

md craig:
Følgende virker fint:
If TTime = RTime And session("ID") = 4 Then

Det er kun når jeg sætter det sidste på at den melder fejl
Lokalenr står i min db til at være et tal.

Grunden til at jeg får det har vel noget at gøre med den først åbner forbindelse til databasen når den skal udskrive strKommentar og derfor ikke kan hente noget fra den inden min strKommentar. Men hvordan kan jeg undgå dette?
Avatar billede Slettet bruger
29. juli 2003 - 14:10 #6
Så kan det være at dit rs ikke står på en post, lav evt følgende når du har henter dit rs
if not rs.eof then
  rs.movelast
  rs.movefirst
end if
Så er du ihvetfald sikker på at den står på den første post hvis der er noget.
Avatar billede tblaster Nybegynder
29. juli 2003 - 14:16 #7
Det gør ingen forskel jeg får stadig:
Either BOF or EOF is True, or the current record has been deleted. Requested operation requires a current record.
Avatar billede Slettet bruger
29. juli 2003 - 14:19 #8
Det tyder altså på at der ikke bliver hentet noget ud i dit rs, har du checket at der er noget evt. ved hjælp af en response.write rs("lokalenr")?
Avatar billede tblaster Nybegynder
29. juli 2003 - 14:21 #9
Det giver samme fejl
Avatar billede Slettet bruger
29. juli 2003 - 14:22 #10
Hmm hvor er din
Set Rs = Server.CreateObject("ADODB.Recordset")? Du skal vel ikke lave en .execute men .open når du vil arbejde med dataene?
Avatar billede tblaster Nybegynder
29. juli 2003 - 14:24 #11
Den er der ... den ser som sagt sådan ud:
Set Conn = Server.CreateObject("ADODB.Connection")
Set Rs2 = Server.CreateObject("ADODB.Recordset")
Conn.Open "DBQ=" & Server.Mappath("../../db/Booking.mdb") & ";Driver={Microsoft Access Driver (*.mdb)};Password=1234;"
'Find Bookninger for valgte dato
dato = sQMdr & "-" & sQDag & "-" & sQAar ' Format til DB MM-DD-YYYY
SQL = "SELECT * FROM booking WHERE dato = #" & dato & "#"

rs2.Open SQL, Conn,1,3

response.write rs2("lokalenr")
Avatar billede Slettet bruger
29. juli 2003 - 14:27 #12
Jeg kiggede altså på dit oprindelige spørgsmål og der bruger du rs.
Men hvis vi tager udgangspunkt i det ovenstående så prøv at gøre sådan her så vi kan se om der er noget elelr ej.

Set Conn = Server.CreateObject("ADODB.Connection")
Set Rs2 = Server.CreateObject("ADODB.Recordset")
Conn.Open "DBQ=" & Server.Mappath("../../db/Booking.mdb") & ";Driver={Microsoft Access Driver (*.mdb)};Password=1234;"
'Find Bookninger for valgte dato
dato = sQMdr & "-" & sQDag & "-" & sQAar ' Format til DB MM-DD-YYYY
SQL = "SELECT * FROM booking WHERE dato = #" & dato & "#"

rs2.Open SQL, Conn,1,3
If not rs2.eof then
  rs2.movelast
  rs2.movefirst
  response.write "Lokalenr: " & rs2("lokalenr")
else
  response.write "Der er ingen poster i recordsættet.
end if

Hvad gør den så?
Avatar billede tblaster Nybegynder
29. juli 2003 - 14:30 #13
Så udskriver den følgende:
Der er ingen poster i recordsættet.
Avatar billede Slettet bruger
29. juli 2003 - 14:32 #14
Så er det fordi du ikke får noget hentet. Hvis du er sikker på at der er poster i databasen så er det nok din sql det er galt med. Men det er derfor du får exception occurred, du prøver at udskrive noget der ikke er der.
Avatar billede Slettet bruger
29. juli 2003 - 14:33 #15
Så den jeg lavede med at checke på IsNull er det du skal bruge for at undgå disse fejl.
Avatar billede Slettet bruger
29. juli 2003 - 14:35 #16
Det må være denne her der er noget galt med:
dato = sQMdr & "-" & sQDag & "-" & sQAar ' Format til DB MM-DD-YYYY
Hvis du vel at mærke har data som du forventer skal komme ud.
Avatar billede tblaster Nybegynder
29. juli 2003 - 14:46 #17
Den virker bare her:

Set Con = Server.CreateObject("ADODB.Connection")
DBPath = "DBQ=" & server.mappath("../../db/Booking.mdb")
Con.Open "DRIVER={Microsoft Access Driver (*.mdb)};Password=1234 ;" & DBPath
'Find Bookninger for valgte dato
dato = sQMdr & "-" & sQDag & "-" & sQAar ' Format til DB MM-DD-YYYY
SQL = "SELECT lokalenr, tid, firma, initialer, mail, kommentar FROM booking WHERE dato = #" & dato & "#"

set rs = con.execute (SQL)

dato = sQMdr & "-" & sQDag & "-" & sQAar ' Format til DB MM-DD-YYYY
booWeekend = Weekday(datoStr) = 1 or Weekday(datoStr) = 7 'Er det lørdag/søndag
SQL = "SELECT lokalenr, tid, firma, initialer, kommentar FROM booking WHERE dato = #" & dato & "#"
Avatar billede tblaster Nybegynder
29. juli 2003 - 14:50 #18
Hvis jeg bare benytter:

SQL = "SELECT * FROM booking

Så får jeg hele tiden lokaleid = 2 ... den ændre sig altså ikke ... det kan jeg jo heller ikke bruge
Avatar billede tblaster Nybegynder
29. juli 2003 - 14:56 #19
Tak for hjælpen bertie ... jeg havde helt glemt hvordan det var min kode var bygget op og når siden åbnes rs2 tom så det er klart jeg får de fejl. Så løsningen var jo meget simpel:

If not rs2.eof then
session("lokalenr") = rs2("lokalenr")
Else
session("lokalenr") = 0
End If
Avatar billede Slettet bruger
29. juli 2003 - 14:57 #20
Ok og tak for points :-)
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

IT-JOB