Tack för all hjälp, nu vill jag ha ett felmedelande om det inte finns några poster som matchar sökningen, hur gör man det? Eftersom du använder rs.Open så skapar du ett client-sided recordset och kan då väldigt enkelt göra en kontroll via funktionen RecordCount som returnerar antalet poster som förekommer i recordsetet: För att verkligen vara säker på att .Recordcount returnerar rätt värde Är det inte väldigt ineffektivt att göra så? Dels använda en cursor som kräver mer resurser, och att gå till sista posten. Loopen inte kan påbörjas förän alla poster hämtas till recordsetet?IF rs.Eof then ?
Min kod:
<code>
<%
distance = Request.Form("distance")
width = Request.Form("width")
ratio1 = distance/width
ratio = Replace(ratio1, ",", ".")
Response.Write(ratio)
Set Connect = Server.CreateObject("ADODB.Connection")
Set rs = Server.CreateObject("ADODB.Recordset")
Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("test_db.mdb")
SQL = "SELECT TOP 4 * FROM prodTb WHERE " & ratio & " >= throw1 AND " & ratio & " <= throw2 ORDER BY ranking ASC"
rs.Open SQL, Connect, 1, 2
Do while not rs.EOF
%>
<table>
<tr>
<td>Poster som hämtas</td>
</tr>
</table>
<%
rs.MoveNext
Loop
%>
<%
rs.Close
Connect.Close
%>
</code>Sv: IF rs.Eof then ?
<code>
rs.Open SQL, Connect, 1, 2
If rs.RecordCount = 0 Then
Response.Write "Det finns inga poster"
Else
Do while not rs.EOF
rs.MoveNext
Loop
End If
rs.Close
Connect.Close
Set Connect = Nothing
</code>Sv: IF rs.Eof then ?
kan du lägga till ytterligare ett par rader.
Detta är mer ett problem om man använder sig av "Snapshots", alltså forward only recordsets.
<code>
rs.Open SQL, Connect, 1, 2
rs.MoveLast ' Added
If rs.RecordCount = 0 Then
Response.Write "Det finns inga poster"
Else
rs.MoveFirst ' Added
Do while not rs.EOF
rs.MoveNext
Loop
End If
rs.Close
Connect.Close
Set Connect = Nothing
</code>
Micke - MicrosoftSv: IF rs.Eof then ?
Kontrollerar man EOF och loppar igenom forward only bör väl gå snabbare?
Finns det någon fördel med med din kod?