Hallå. Jag vill även ha en räknare så att endast 4 st produkter hämtas, hur gör man det? Om kriteriet inte stämmer vill jag ha ett felmeddelande, hur gör man det? Top 4 funkar, men då hämtas bara dom 4 första som stämmer med kriteriet. Produkterna kommer att rankas, så en ORDER BY kommer att tillkomma i select satsen, då funkar inte top 4, eller hur? Top 4 funkar, men då hämtas bara dom 4 första som stämmer med kriteriet. Produkterna kommer att rankas, så en ORDER BY kommer att tillkomma i select satsen, då funkar inte top 4, eller hur? Om jag vill lägga in Throw 2 som högsta värde, måste jag då inte kolla igenom databasen och hitta högsta värdet. Hur gör man i så fall? Om jag vill lägga in Throw 2 som högsta värde, måste jag då inte kolla igenom databasen och hitta högsta värdet. Hur gör man i så fall? Menar du så här, jag har ju ingen post i databasen som heter iMax, men den är kanaske samma som throw2. Nope så här: Jag får felmedelande på "rs.Open SQL, Connect, 1, 2" Tack för att du orkar hjälpa till!!! Ursäkta jag är lite ringrostig... Om värdena ligger lagrade som text får du problem. Annars beror det på at dina parametrer är text. Då är '100'<'2'.Select och räknare
Jag gör en sida som visar olika produkter, om kriterierna stämmer.
En produkt kan ha värde:
prod 1: 1,3 - 2,6
prod 2: 1,7 - 3,1
prod 3: 2,1 - 4,2
om kriteriet(ratio) är 1,9 så jämförs det mot db(throw1 & 2) och endast prod 1 och prod 2 ska hämtas och det gör dom, men skriver jag tex 25 så hämtas alla produkter, det måste vara fel på min select sats. Om kriteriet inte stämmer vill jag ha ett felmeddelande, hur gör man det?
Jag vill även ha en räknare så att endast 4 st produkter hämtas, hur gör man det?
Bifogar min kod.
Tack Christofer
<code>
<%
distance = Request.Form("distance")
width = Request.Form("width")
ratio = distance/width
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 * FROM prodTb WHERE '" & ratio & "' >= throw1 AND '" & ratio & "' <= throw2"
rs.Open SQL, Connect, 1, 2
Do while not rs.EOF
%>
<table width="500" border="0" cellpadding="3">
<tr bgcolor="#009900">
<td colspan="3" class="rubrik"><%=rs("namn")%></td>
</tr>
<tr>
<td width="120" align="center" valign="top"><img src="../bilder/prodbilder/<%=rs("bildkatalog")%>/<%=rs("bild_filnamn")%>" width="120"></td>
<td width="200" valign="top" class="brod"><%=rs("text")%><P>
</td>
</tr>
</table>
<%
rs.MoveNext
Loop
%>
</code>Sv: Select och räknare
Select Top 4 löser nog ditt problem om det var det du menade. Du kanske menade nån form av paging, eller?Sv: Select och räknare
Gör en kontroll innan Select-satsen
If ratio < högsta tillåtna värde Then
utför Select-satsen
Else
Felmeddelande här
End IfSv: Select och räknare
Jag trodde man hade typ
i = 1
osv någonting IF i = 4 then exit loop eller något.
/cSv: Select och räknare
TOP 4 funkar med ORDER BY oxå.Sv: Select och räknare
Sv: Select och räknare
Select Max(Throw2) As iMax From...osv
If ratio < rs("iMax") Then
..
osvSv: Select och räknare
<code>
<%
distance = Request.Form("distance")
width = Request.Form("width")
ratio = distance/width
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")
Select Max(Throw2) As iMax From prodTb
If ratio < rs("iMax") Then
SQL = "SELECT Top 4 FROM prodTb WHERE '" & ratio & "' >= throw1 AND '" & ratio & "' <= throw2 ORDER BY id DESC"
Else
Felmeddelande här
End If
rs.Open SQL, Connect, 1, 2
Do while not rs.EOF
%>
<table width="500" border="0" cellpadding="3">
<tr bgcolor="#009900">
<td colspan="3" class="rubrik"><%=rs("namn")%></td>
</tr>
<tr>
<td width="120" align="center" valign="top"><img src="../bilder/prodbilder/<%=rs("bildkatalog")%>/<%=rs("bild_filnamn")%>" width="120"></td>
<td width="200" valign="top" class="brod"><%=rs("text")%><P>
</td>
</tr>
</table>
<%
rs.MoveNext
Loop
%>
</code>Sv: Select och räknare
<code>
<%
distance = Request.Form("distance")
width = Request.Form("width")
ratio = distance/width
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 Max(Throw2) As iMax From prodTb"
Set rs = Connect.Execute(SQL)
If ratio < rs("iMax") Then
Set rs = Nothing
SQL = "SELECT Top 4 FROM prodTb WHERE '" & ratio & "' >= throw1 AND '" & ratio & "' <= throw2 ORDER BY id DESC"
Else
Felmeddelande här
End If
rs.Open SQL, Connect, 1, 2
Do while not rs.EOF
%>
<table width="500" border="0" cellpadding="3">
<tr bgcolor="#009900">
<td colspan="3" class="rubrik"><%=rs("namn")%></td>
</tr>
<tr>
<td width="120" align="center" valign="top"><img src="../bilder/prodbilder/<%=rs("bildkatalog")%>/<%=rs("bild_filnamn")%>" width="120"></td>
<td width="200" valign="top" class="brod"><%=rs("text")%><P>
</td>
</tr>
</table>
<%
rs.MoveNext
Loop
%>
</code>Sv: Select och räknare
Microsoft VBScript runtime error '800a01a8'
Object required: 'rs'
/roos/test dv/matain_reg.asp, line 44
Vad kan vara fel?
<code>
<%
distance = Request.Form("distance")
width = Request.Form("width")
ratio = distance/width
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("/roos/test dv/test_db.mdb")
SQL = "SELECT Max(throw2)As iMax FROM prodTb"
Set rs = Connect.Execute(SQL)
If ratio < rs("iMax") then
Set rs = Nothing
SQL = "SELECT Top 4 FROM prodTb WHERE '" & ratio & "' >= throw1 AND '" & ratio & "' <= throw2"
Else
Response.Write "fel medelande"
End If
rs.Open SQL, Connect, 1, 2
Do while not rs.EOF
%>
</code>Sv: Select och räknare
Fick ett nytt felmeddelande när jag tog bort "Set rs = Nothing" , samma rad som förut.
ADODB.Recordset error '800a0e79'
Operation is not allowed when the object is open.
/roos/test dv/matain_reg.asp, line 46 Sv: Select och räknare
Så här ska du göra:
Ha kvar Set rs = Connect.Execute(SQL)
Där det stod Set rs = Nothing förut skriver du rs.Close istället så borde det funkaSv: Select och räknare
Testa med:
<code>
SQL = "SELECT * FROM prodTb WHERE " & ratio & " >= throw1 AND " & ratio & " <= throw2"
</code>
Om det är så att throw1 är text bör du ändra det till tal för att slippa strul. Annars kan du skriva:
<code>
SQL = "SELECT * FROM prodTb WHERE " & ratio & " >= CDbl(throw1) AND " & ratio & " <= CDbl(throw2)"
</code>
Men det är ineffektivt.