Salve a tutti!!
Ho il seguente problema: con una determinata riga di codice SQL eseguita su Access, tutto va bene; se la eseguo tramite il codice ASP Javascript scritto qui sotto, c'è qualcosa che non va.
Premetto che il codice qui sotto, se nell'istruzione SQL non metto il costrutto LIKE funziona e stampa tutto correttamente.
Se invece nell'istruzione SQL metto,appunto, il costrutto LIKE, mi viene restituita una tabella vuota. Cosa posso fare?![]()
In pratica vorrei stampare tutti i libri che hanno nella colonna title una o più parole tra quelle inserite in un campo di testo (quello presente nella variabile titolo nel codice postato qui sotto).
Un esempio è questo: SELECT * FROM books WHERE title LIKE '*zoo*'
Aggiungo anche che ho fatto delle stampe di prova per vedere che istruzione SQL genera il codice, e sembra che la generi giusta (quella scritta qui sopra è generata dal codice e funziona (solo) su access..)![]()
Codice PHP:var conString = "Provider = Microsoft.Jet.OLEDB.4.0; " + "Data Source = " + Server.MapPath("bookstore.mdb");
var sSQLString;
var rs = Server.CreateObject("ADODB.Recordset");
var con = Server.CreateObject("ADODB.Connection");
con.Open(conString);
var temp = titolo.split(" ");
var j = 0;
var k = 0;
var sql = "";
for(str in temp){ k=k+1; }
for(str in temp) {
sql = sql + "title LIKE '*"+ temp[str] +"*' ";
j = j+1;
if(j<k) sql = sql + " OR ";
}
sSQLString = "SELECT * FROM books WHERE "+sql;
Response.Write(sSQLString);
rs = con.Execute(sSQLString);
var i = 1;
Response.Write("<table align= center>");
Response.Write("<tr><td>Autore</td><td>Titolo</td><td>Costo unitario</td><td>Quantità disponibile</td><td>Quantità da ordinare</td></tr>");
while (rs.EOF==false){
Response.Write( "<tr><td>"+ rs("authors").Value+ "</td>" +
"<td>"+ rs("title").Value+ "</td>" +
"<td>"+ rs("cost").Value+ "</td>" +
"<td>"+ rs("qty").Value+ "</td>" +
"<td> <input type=\"text\" maxlength=\"3\" name=\"quanti"+ i +" \" value=\"0\" size=\"10\"></td></tr>"
);
rs.MoveNext();
i = i+1;
}
Response.Write("</table>");
rs.Close();
con.Close();

Rispondi quotando
