Newsgroup: it.comp.www.asp
Titolo: Problema con query

Cosa c'è che non va nel seguente codice ?
<%
dim parolachiave
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" &
server.mappath("/
teachingonline.it/Public
") & "\geronimo.mdb"
parolachiave=Request.Form("Keyword")
sql2="SELECT ARTICOLI.TITOLO, RIVISTE.NUMERO, RIVISTE.MESE, RIVISTE.ANNO,
TESTATE.TITOLO "
sql2=sql2 & "FROM (RIVISTE INNER JOIN ARTICOLI ON RIVISTE.IDRivista =
ARTICOLI.IDRivista) INNER JOIN TESTATE ON RIVISTE.IDTestata =
TESTATE.IdTestata "
sql2=sql2 & "WHERE ARTICOLI.TITOLO like '" & parolachiave  & "%"
Set rs = Server.CreateObject("ADODB.recordset")
rs.Open sql2, conn, 3,3
rs.MoveFirst
do until rs.EOF
  Response.write(rs.fields("testate.titolo") & "  " &
rs.fields("IdArticolo") & "  " & rs.Fields("Articoli.Titolo") & "<BR>")
  rs.MoveNext
loop
rs.Close
set rs = Nothing
conn.Close
set conn = Nothing
Ottengo il seguente errore:
Microsoft OLE DB Provider for ODBC Drivers errore "80040e14"
[Microsoft][Driver ODBC Microsoft Access] Errore di sintassi nella stringa
nell'espressione della query 'ARTICOLI.TITOLO like 'linux%'.
/
teachingonline.it/ricerca_articoli.asp
, riga 11
Se invece aggiungo un apice alla query sql2=sql2 & "WHERE ARTICOLI.TITOLO
like '" & parolachiave  & "%'"
ottengo il seguente errore:
ADODB.Fields errore "800a0cc1"
Impossibile trovare l'oggetto nell'insieme corrispondente al nome o al
numero di riferimento richiesto dall'applicazione.
/
teachingonline.it/ricerca_articoli.asp
, riga 14
Ringrazio in anticipo chi mi volesse aiutare,
Francesco

numero di riferimento richiesto dall'applicazione.
<ZAP>.
Nella prima forma manca l'apice di chiusura del parametro
"parolachiave", nel secondo caso e' evidente che hai un nome di
campo sbagliato nella tua query.
Rivedi la struttura delle tabelle ed i nomi dei campi.
Sarebbe anche meglio evitare l'uso delle Query
"Access Style":
sql2="SELECT ARTICOLI.TITOLO, RIVISTE.NUMERO, RIVISTE.MESE,
RIVISTE.ANNO, TESTATE.TITOLO from RIVISTE, ARTICOLI, TESTATE 
WHERE RIVISTE.IDTESTATA=TESTATE.IDTESTATA AND 
RIVISTE.IDRIVISTA=ARTICOLI.IDRIVISTA AND 
ARTICOLI.TITOLO LIKE '" & parolachiave & "%'"
Questa e' meglio leggibile e piu' compatibile con altri
database.
Davide

Cosa c'è che non va nel seguente codice ?
<%
dim parolachiave
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" &
server.mappath("/
teachingonline.it/Public
") & "\geronimo.mdb"
parolachiave=Request.Form("Keyword")
sql2="SELECT ARTICOLI.TITOLO, RIVISTE.NUMERO, RIVISTE.MESE, RIVISTE.ANNO,
TESTATE.TITOLO "
sql2=sql2 & "FROM (RIVISTE INNER JOIN ARTICOLI ON RIVISTE.IDRivista =
ARTICOLI.IDRivista) INNER JOIN TESTATE ON RIVISTE.IDTestata =
TESTATE.IdTestata "
sql2=sql2 & "WHERE ARTICOLI.TITOLO like '" & parolachiave  & "%"
Set rs = Server.CreateObject("ADODB.recordset")
rs.Open sql2, conn, 3,3
rs.MoveFirst
do until rs.EOF
  Response.write(rs.fields("testate.titolo") & "  " &
rs.fields("IdArticolo") & "  " & rs.Fields("Articoli.Titolo") & "<BR>")
  rs.MoveNext
loop
rs.Close
set rs = Nothing
conn.Close
set conn = Nothing
Ottengo il seguente errore:
Microsoft OLE DB Provider for ODBC Drivers errore "80040e14"
[Microsoft][Driver ODBC Microsoft Access] Errore di sintassi nella stringa
nell'espressione della query 'ARTICOLI.TITOLO like 'linux%'.
/
teachingonline.it/ricerca_articoli.asp
, riga 11
Se invece aggiungo un apice alla query sql2=sql2 & "WHERE ARTICOLI.TITOLO
like '" & parolachiave  & "%'"
ottengo il seguente errore:
ADODB.Fields errore "800a0cc1"
Impossibile trovare l'oggetto nell'insieme corrispondente al nome o al
numero di riferimento richiesto dall'applicazione.
/
teachingonline.it/ricerca_articoli.asp
, riga 14


 sql2=sql2 & "WHERE ARTICOLI.TITOLO like '%%" & parolachiave  & "%%'"
E' la sintassi esatta questa !!
Ciao Ciao