26 messaggi dal 14 settembre 2001
il codice che segue, funziona perfettamente
se però nelle query sql, al posto dei valori di "betwen" e "order by"
sostituisco con le opportune variabili, dichiarate e con i relativi valori
prelevati da un form, non funziona più la paginazione, ovvero viene restituita
a video la 1 pagina ma quando si clicca sul link per avere la seconda viene generato un
errore del tipo "il driver odbc non supporta ... ecc."
questo di seguito è il codice che funziona bene:

<%@language=vbscript%>
<%option explicit%>

<html>
<head>
<meta http-equiv="Content-Language" content="it">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title>Ricerca articoli</title>
<bgsound src="GIAVA_01.MID" loop="-1">
</head>
<body background="file: ../matt.gif">
<!-- #INCLUDE FILE="adovbs.inc" -->

<% 'legge dal form
dim codice, categoria, prezzo, target, prodotto,miniatura,prezzominimo,page
dim prezzomassimo,disponibiledat,disponibiledal,i,strorderby
dim peso, note,pagine
categoria=request.form("categoria")
prezzominimo =Request.form("prezzominimo")
prezzomassimo = Request.form("prezzomassimo")

target=request.form("target")
prodotto=request.form("prodotto")
if categoria="selezionare" then categoria="%"
if target="selezionare" then target="%"
if prodotto="selezionare" then prodotto="%"

%>
<%
Dim objconn
'La solita variabile di connessione
Dim iPageSize
'Numero di record da visualizzare per ogni pagina
Dim iPageCount
'Numero di pagine totali che otteniamo dalla query
Dim iPageCurrent
'Pagina corrente
Dim SQL
Dim RS
'Il nostro solito recordSet
Dim iRecordsShown
ipagesize=5
page=request("page")
if page="" then page=1
strorderby=request.form("ordering")

Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=c:\inetpub\wwwroot\3112\eligioielli\fpdb\eliart.mdb "
Set RS = Server.CreateObject("ADODB.Recordset")
%>
<%

sql= "select * from tabella1 where categoria like '%"&categoria&"%' and target like '%"&target&"%' and codice like '%"&codice&"%' and miniatura like '%"&miniatura&"%' and disponibiledat like '%"&disponibiledat&"%' and disponibiledal like '%"&disponibiledal&"%' "
sql=sql&"AND prezzo BETWEEN 2 AND 1500 "
RS.Open sql, objconn, adOpenKeyset
rs.pagesize=ipagesize
rs.absolutepage=page
miniatura=rs("MINIATURA")
if rs.eof=true or rs.bof=true then
response.write "<p>Nessun risultato trovato</p>"
else
%>
<center>
<b><h3> '<% response.write "Trovati " & rs.recordcount & " prodotti corrispondenti " %></h3></b><br>

<%
for i=1 to ipagesize
if not rs.eof then
%>

<div align="left">

<p>
<table border="0" width="100%" height="161">

<tr>
<p><td width="45%" height="155" valilgn="top"><font face="Times New Roman" color="#333300" size="2"><b>codice articolo</b></font><BR>
<font face="Times New Roman" color="#333300" size="2"><%response.write(rs("codice"))%></font><BR>
<font face="Times New Roman" color="#333300" size="2"><%response.write (rs("categoria"))%></font><BR>
<font face="Times New Roman" color="#333300" size="2"><%response.write (rs("prodotto"))%></font><BR>
<font face="Times New Roman" color="#333300" size="2"><%response.write (rs("disponibiledat"))%></font><BR>
<font face="Times New Roman" color="#333300" size="2">a disposizione dal...<%response.write (rs("disponibiledal"))%></font><BR>
<font face="Times New Roman" color="#006600" size="2">prezzo euro<%response.write (rs("prezzo"))%></font><BR>
<td width="30%" height="155" valilgn="center"><%=(" <IMG SRC="&MINIATURA&" WIDTH=65 HEIGHT=55 BORDER=1>")%></b></font></a><br>
<td width="25%" height="155"></td>
</tr>
</table>

<%
rs.movenext
end if
next
end if
%>


<% response.write "<p><b>Pagine:</b>"
for pagine=1 to rs.PageCount
response.write"<a href='elipagine3-2nv.asp?page=" &pagine
response.write "&" & server.urlencode(strorderby)
response.write "'>"
response.write pagine
response.write "</a>"
next
response.write "</p>"
%>

<%
RS.Close
Set RS = Nothing
objConn.Close
%>
</BODY>
</html>
Fine del codice che funziona bene
questo che segue invece è il codice che, con la sola differenza delle variabili inserite al posto dei valori di
between e order by, non funziona:
<%@language=vbscript%>
<%option explicit%>

<html>
<head>
<meta http-equiv="Content-Language" content="it">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title>Ricerca articoli</title>
<bgsound src="GIAVA_01.MID" loop="-1">
</head>
<body background="file: ../matt.gif">
<!-- #INCLUDE FILE="adovbs.inc" -->

<% 'legge dal form
dim codice, categoria, prezzo, target, prodotto,miniatura,prezzominimo,page
dim prezzomassimo,disponibiledat,disponibiledal,i,strorderby
dim peso, note,pagine
categoria=request.form("categoria")
prezzominimo =Request.form("prezzominimo")
prezzomassimo = Request.form("prezzomassimo")

target=request.form("target")
prodotto=request.form("prodotto")
if categoria="selezionare" then categoria="%"
if target="selezionare" then target="%"
if prodotto="selezionare" then prodotto="%"

%>
<%
Dim objconn
'La solita variabile di connessione
Dim iPageSize
'Numero di record da visualizzare per ogni pagina
Dim iPageCount
'Numero di pagine totali che otteniamo dalla query
Dim iPageCurrent
'Pagina corrente
Dim SQL
Dim RS
'Il nostro solito recordSet
Dim iRecordsShown
ipagesize=5
page=request("page")
if page="" then page=1
strorderby=request.form("ordering")

Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=c:\inetpub\wwwroot\3112\eligioielli\fpdb\eliart.mdb "
Set RS = Server.CreateObject("ADODB.Recordset")
%>
<%

sql= "select * from tabella1 where categoria like '%"&categoria&"%' and target like '%"&target&"%' and codice like '%"&codice&"%' and miniatura like '%"&miniatura&"%' and disponibiledat like '%"&disponibiledat&"%' and disponibiledal like '%"&disponibiledal&"%' "
sql=sql&"AND prezzo BETWEEN "&CInt(prezzominimo)&" AND "&CInt(prezzomassimo)&" "
sql=sql&"ORDER BY prezzo "&strOrderBy&" ASC"

RS.Open sql, objconn, adOpenKeyset
rs.pagesize=ipagesize
rs.absolutepage=page
miniatura=rs("MINIATURA")
if rs.eof=true or rs.bof=true then
response.write "<p>Nessun risultato trovato</p>"
else
%>
<center>
<b><h3> '<% response.write "Trovati " & rs.recordcount & " prodotti corrispondenti " %></h3></b><br>

<%
for i=1 to ipagesize
if not rs.eof then
%>

<div align="left">

<p>
<table border="0" width="100%" height="161">

<tr>
<p><td width="45%" height="155" valilgn="top"><font face="Times New Roman" color="#333300" size="2"><b>codice articolo</b></font><BR>
<font face="Times New Roman" color="#333300" size="2"><%response.write(rs("codice"))%></font><BR>
<font face="Times New Roman" color="#333300" size="2"><%response.write (rs("categoria"))%></font><BR>
<font face="Times New Roman" color="#333300" size="2"><%response.write (rs("prodotto"))%></font><BR>
<font face="Times New Roman" color="#333300" size="2"><%response.write (rs("disponibiledat"))%></font><BR>
<font face="Times New Roman" color="#333300" size="2">a disposizione dal...<%response.write (rs("disponibiledal"))%></font><BR>
<font face="Times New Roman" color="#006600" size="2">prezzo euro<%response.write (rs("prezzo"))%></font><BR>
<td width="30%" height="155" valilgn="center"><%=(" <IMG SRC="&MINIATURA&" WIDTH=65 HEIGHT=55 BORDER=1>")%></b></font></a><br>
<td width="25%" height="155"></td>
</tr>
</table>

<%
rs.movenext
end if
next
end if
%>


<% response.write "<p><b>Pagine:</b>"
for pagine=1 to rs.PageCount
response.write"<a href='elipagine3-2nv.asp?page=" &pagine
response.write "&" & server.urlencode(strorderby)
response.write "'>"
response.write pagine
response.write "</a>"
next
response.write "</p>"
%>

<%
RS.Close
Set RS = Nothing
objConn.Close
%>
</BODY>
</html>
qualcuno ma può aiutare a capire ??


153 messaggi dal 20 aprile 2001
Questo post l'ho visto già in un altro forum.... EHEHE!

HD
____________
Posso indicarti la strada, ma poi devi seguirla da te.

HD
____________
Posso indicarti la strada, ma poi devi seguirla da te.
153 messaggi dal 20 aprile 2001
Comunque, anche se non penso che l'errore sia qui (ma nel provider di dati usato e nelle proprietà che forse non supporta), la clausola SQL non è necessaria farla tutta in un colpo solo, anche perchè così resta complicata anche quando non è necessario.

Ti faccio un esempio:
<b>
categoria=Trim(request.form("categoria"))
prezzominimo =Trim((Request.form("prezzominimo"))
prezzomassimo = Trim(Request.form("prezzomassimo"))
target=Trim(request.form("target"))
prodotto=Trim(request.form("prodotto"))

strWhere=""
If (categoria&lt;&gt;"selezionare") and (Categoria &lt;&gt; "") then
strWHERE=" categoria='""& SQLStr(categoria) & "%'"
End If

If target&lt;&gt;"selezionare" and (Target&lt;&gt;"") then
if strWHERE &lt;&gt; "" then strWHERE=strWHERE & " AND "
strWHERE=strWHERE & " target='%" & SQLStr(target) & "%'"
End if
</b>
e via così con tutti gli altri e alla fine si fa:
<b>
if strWhere&lt;&gt; "" then strWhere=" WHERE " & strWhere
strSQL="SELECT * from tabella1" & strWHERE & ";"
</b>
aiutandosi con una funzioncina in modo da evitare problemi con gli apici ed i caratteri jolly.
<b>
Function SQLstr(stringa)
SQLStr=replace(replace(replace(stringa,"'","['']),"*","[*]"),"%","[%]")
End Function
</b>

In tal modo la query si costruisce molto meglio ed e' più controllabile.


HD
____________
Posso indicarti la strada, ma poi devi seguirla da te.

Modificato - HelpDesk - 29 Set 2001 23:59:32

HD
____________
Posso indicarti la strada, ma poi devi seguirla da te.
499 messaggi dal 14 luglio 2001
Ti Ho risposto sul forum DATABASE.

ciao

enzo
www.dnetware.it

enzo
www.dnetware.it

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.