Just nu i M3-nätverket
Gå till innehåll

IF


lillen_009

Rekommendera Poster

Får det inte att fungera bra:

 

<% If RS("msg") = RS2("replyID") THEN
response.write("Svar finns")
ELSE
response.write("Inget svar")%>

Om det uppfyller kriteriet skriver den ut svar finns precis som den ska, men om fältet replyID är tomt (0) så får jag felmsg

fel '80020009' 
Undantag inträffade. 

/gb/single.asp, rad 35 
Det kan inte vara något med anslutningen eftersom villkort uppfylls nör replyID har ett värde som överensstämmer.
Länk till kommentar
Dela på andra webbplatser

Kanske så här?

 

<%

if RS("msg") = CStr(RS2("replyID")) THEN

response.write("Svar finns")

ELSE

response.write("Inget svar")

%>

 

 

Länk till kommentar
Dela på andra webbplatser

Nej, tyvärr så fungerar det inte. Kan det vara pga att jag har databastyp i replyID som nummer och om posterna inte får något värde blir de tilldelade 0. msg är primärnyckeln

Provade med:

<%
IF RS2("ReplyID")="0" Then
response.write("inget svar")
else
response.write("svar finns")
%>

Men det fungerade på samma sätt. Om värdet är tex 3 så fungerar det, men om det står en nolla så får ja samma felmeddelande

 

Länk till kommentar
Dela på andra webbplatser

Christoffer Eklund

Det verkar som din sql sats inte ger tillbaka något, och då har du ju inget värde att gämföra med.

 

Så du får först göra en count eller nåt och se om du får ut några poster.

 

Hoppas det hjälper

 

/doffe

 

Länk till kommentar
Dela på andra webbplatser

Kan lika gärna lägga ut koden så långt jag kommit:

<% session.lcid=1053 %>
<%
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("db/gbdb.mdb")
Set RS = Server.CreateObject("ADODB.RecordSet")
SQL = "SELECT * FROM msg WHERE msg = " & CInt(Request.QueryString("msg"))
RS.Open SQL, Connect
%>
<%
Set RS2 = Server.CreateObject("ADODB.RecordSet")
SQL2 = "SELECT * FROM msg WHERE replyID = " & CInt(Request.QueryString("msg"))
RS2.Open SQL2, Connect
%>
<html>
<head>
</head>
<body>
<table width="500">
<tr><td width="500"><%=RS("header")%></td></tr>
<tr><td width="500">Skrivet av: 
<%IF RS("mail") <> "" THEN%>
<a href="mailto:<%=RS("mail")%>"><%=RS("author")%></a> 
<%ELSE%>
<%=RS("author")%>
<% END IF %>
<%If RS("web") <>"" Then%>
<a href="<%=web%>">hemsida</a>
<%else
response.write("")
End If%>
</td></tr>
<tr><td width="500"><%=RS("body")%></td></tr>
<hr>
<% If RS2("replyID") = RS("msg") Then
response.write("svar finns")
else
response.write("inget svar")
End If
%>
</body>
</html>
<% RS.Close
RS2.close
Connect.close%>

Om detta uppfylls fungerar det

If RS2("replyID") = RS("msg") Then

response.write("svar finns")

, men varför fungerar det inte om det inte uppfylls, så får jag felmeddelandet jag nämde tidigare.

jag vill ju att den ska skriva Inget svar då???

Vad är felet?? Kanske SQL2??

När jag går in på sidan skriver jag single.asp?msg=3 och vill då att den ska söka i databasen i replyID för att se om det finns något replyID som har samma värde som msg i querystringen

 

:thumbsup: Poängvarning utfärdas till bra svar!!

 

Länk till kommentar
Dela på andra webbplatser

Hej!

 

Det finns en bugg i ADO som gör att man tappar värdet om fältet är av en viss typ (blob i SQL server). Har tyvärr ingen direkt länk till KB för detta men du kan ju testa.

 

Stoppa in värdena på de fält du vill jämföra i variabler istället, och genomför jämförelsen mot variabelvärdena.

 

typ:

vMSG = RS("msg")

vReplyID = RS2("replyID")

 

if vMSG = vReplyID then

response.write("Svar finns")

else

response.write("Inget svar")

 

/foo

 

Länk till kommentar
Dela på andra webbplatser

Tyvärr fungerade inte det heller. Om värdena överensstämmer skriver den som innan svar finns (precis som den ska), men annars får jag ett felmeddelande. Nu får jag

ADODB.Field fel '800a0bcd' 

Antingen är BOF eller EOF satt till True, eller så har aktuell post raderats. Den begärda åtgärden kräver en aktuell post. 

Jag vat att jag har en post med den siffran!!

Varför skriver den bara inte Inget svar om inte första villkort stämmer. Förstår inte varför den vill krångla till allt. Det är vad som kommer efter else som inte skriv ut utan jag får ett felmsg

 

Länk till kommentar
Dela på andra webbplatser

Det kan bero på som man sagt tidigare att något av dina 2 recordset faktiskt inte har någon data. Alltså Recordset är i position BOF/EOF då får du detta fel. För att vara säker måste du kolla detta först.

 

if not (Rs2.eof And Rs.eof) then
If RS2("replyID") = RS("msg") Then
response.write("svar finns")
else
response.write("inget svar")
End If
else
response.write "VA!! Tomt"
end if

 

Så nu skall du inte få något fel

 

- Magnus

-----------------------------------------------------

ju mer jag lär mig ju mer inser jag så lite jag kan

 

Länk till kommentar
Dela på andra webbplatser

Kan inte

 

fel '80020009'

 

vägleda dig? Finns det ingen sida på nätet där man kan kolla upp mer exakt vad det numret betyder?

 

Länk till kommentar
Dela på andra webbplatser

Jo, jag har kikat på det, men inte hittat något som jag tycker är fel. Men det säger iof inte så mycket eftersom min kunskap är ytterst begränsad (denna tråd visar det)

 

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...