Newsgroup: it.comp.www.asp
Titolo: [?] Problema con ricerca con db access

Salve, ho il seguente problema: Devo fare una ricerca all'interno di un db
access. La ricerca viene effettuata tramite un normale form con una textbox,
ed un combobox ed una volta premuto il tasto "Cerca", vengono restituiti i
risultati della ricerca nella pagina "Results.asp".
Per connettermi al db access uso questo codice:
    ' Database file name
   mDBFile = "\mdb\Prodotti.mdb"
      ' Table name in database
   mTable = "Tabella"
      ' A condition in query
      ' Sort order of records
   mSortBy = "Marca, Modello, Codice, Descrizione"
mQueryString = "SELECT Marca, Modello, Codice, Descrizione, Caratteristiche,
Disponibilita FROM " & mTable & " WHERE " & CercaPer & " LIKE '" & Cerca &
"%'" & "ORDER BY " & mSortBy
"CercaPer" è una variabile che richiamo dalla Pagina "Results.asp" tramite
un "include". Questa variabile, restituisce i valori di una combobox che
permette di scegliere il campo su cui fare la ricerca. Per comodità i valori
delle opzioni del combobox li ho chiamati con i nomi dei campi su cui voglio
fare la ricerca (Codice, Descrizione e Marca")
Il mio problema e' il seguente, utilizzando il codice sopraindicato per
connettermi al db, la prima pagina dei risultati e' Ok, mentre se passo alla
successiva, mi viene restituito il seguente errore:
Microsoft JET Database Engine error '80040e14'
Errore di sintassi (operatore mancante) nell'espressione della query 'LIKE
'%''.
/Nuovo/Asp/search/BATSRC.inc, line 103
Se invece tolgo la variabile "CercaPer" ed inserisco al suo posto il nome di
uno dei campi, in questo modo:
mQueryString = "SELECT Marca, Modello, Codice, Descrizione, Caratteristiche,
Disponibilita FROM " & mTable & " WHERE Codice LIKE '" & Cerca & "%'" &
"ORDER BY " & mSortBy
Il problema viene risolto, ma il codice comunque non funziona come vorrei,
infatti vorrei fare in modo che l'utente possa inserire nel textbox della
ricerca, anche solo una parte del codice (ad es. "ABC"), e che vengano
visualizzati solo ed esclusivamente gli articoli che inizino con "ABC".
Credevo che questo codice fosse giusto per fare quello che ho spiegato, ma
purtroppo, invece mi vengono visualizzati anche codici che sono superiori ad
"ABC" (ad es. "ABD", "ABE", ecc. ecc...)
Mi date qualche dritta per cortesia?
Ciao e grazie 1000 per L'aiuto.
Roberto.

 "ABC" (ad es. "ABD", "ABE", ecc. ecc...)
Forse succede quando inerisci nel campo "AB"? Perchč cosě a colpo d'occhio
se metti ABC ti dovrebbe dare solo quelli che iniziano con ABC
nixs

 se metti ABC ti dovrebbe dare solo quelli che iniziano con ABC
Per quanto riguarda questo, in effetti, facendo delle prove stamattina, ero
arrivato al punto
che i risultati me li dava tutti, anche quelli delle pagine successive alla
prima, ma mentre la prima
pagina era ok, (cioč conteneva solo i codici con "ABC") la seconda invece
conteneva anche i
codici successivi ad "Abc", e non solo... Quando premevo il tasto "prec" per
tornare dalla 2a
pagina alla 1a, anche nei risultati della prima pagina comparivano i codici
successivi ad "ABC"...
Hai qualche idea sul perche' possa succedere una cosa del genere?
Grazie 1000.

> Hai qualche idea sul perche' possa succedere una cosa del genere?
Guarda... senza vedere il codice, e da quello che dici, posso solo dirti che
quando usi la paginazione devi portarti dietro (tramite querystring) le
eventuali
variabili necessarie alla corretta visualizzazione della pagina, altrimenti
è chiaro che queste vengono perdute.
ciao
nixs

Le querystring sono ok, altrimenti non si vedrebbe nemmeno la prima
pagina... o sbaglio? :-(
Comunque sulla pagina results.asp ho questo codice per le QS:
'Results.asp
<!-- #include file="Adovbs.inc" -->
<%
DIM Cerca
DIM Goldrake
Goldrake = Request.Querystring("CampoRicerca")
Cerca = Request.Querystring("TestodaCercare") '
Response.Buffer = True
%>
<!-- #include file="BATSRC.inc" --> ' Questo e' il file dove avviene la
connessione al db e di cui di seguito ti posto le prime linee di codice:
'Batsrc.inc
Dim mDBFile, mMapPath, mTable
Dim objConn, cmdConn, objRS
Dim ConnString
Dim Item
Dim mRecordCount, mFieldCount
Dim mCond, mSortBy, mQueryString
Dim mExcludeFieldTypes
Dim mFieldType, mFieldContent
Dim mPageSize, mPageCount, mPageNo
Dim i, j
' Database file name
mDBFile = "\mdb\Prodotti.mdb"
' Table name in database
mTable = "Tabella"
' A condition in query
' Sort order of records
mSortBy = "Marca, Modello, Codice, Descrizione"
' For a query statement. Sort order ASC is default, you may specify DESC
mQueryString = "SELECT Marca, Modello, Codice, Descrizione, Caratteristiche,
Disponibilita FROM " & mTable & " WHERE Codice LIKE '%" & Replace(Cerca,
"'", "''") & "%' " & "OR Marca LIKE '%" & Replace(Cerca, "'", "''") & "%' "
& "OR Descrizione LIKE '%" & Replace(Cerca, "'", "''") & "%' " & "ORDER BY "
& mSortBy
Hai qualche suggerimento ora che hai + o meno idea del codice? Ancora grazie
1000 x l'aiuto.
Ciao.
Roberto.

 Cerca = Request.Querystring("TestodaCercare") '
Ecco, queste due variabili le devi portare nel LINK che usi per avanzare
di pagina.
Nel primo post dicevi che:
"Se invece tolgo la variabile "CercaPer" ed inserisco al suo posto il nome
di
uno dei campi, in questo modo:..."
....allora funziona. Quindi significa che si perde la variabile Goldrake.
Sicuramente avrai disposto un link per avanzare di pagina, tipo:
<a href="result.asp?pag=" & numPag & "'">
Questo link deve portarsi dietro anche le due variabili:
<a href="result.asp?pag=" & numPag & "&campo=" & Goldrake & "&cerca=" &
Cerca>
Ciao
Nixs

Sicuramente avrai disposto un link per avanzare di pagina, tipo:
<a href="result.asp?pag=" & numPag & "'">
Questo link deve portarsi dietro anche le due variabili:
<a href="result.asp?pag=" & numPag & "&campo=" & Goldrake & "&cerca=" &
Cerca>
No, non ho un link per cambiare pagina, ma ho solo dei bottoni di una form
("prec" e "succ"") . Il tutto gestito da uno Javascript
Se ti va, puoi trovare la pagina asp incriminata (Results.asp) in questo
file zip: 
http://www.funtastiko.com/results.zip
Inoltre, la Stringa di connessione che ho riportato prima, non e' quella che
uso attualmente. Quella che uso ora e':
mQueryString = "SELECT Marca, Modello, Codice, Descrizione, Caratteristiche,
Disponibilita FROM " & mTable & " WHERE " & Goldrake & " LIKE '" & Cerca &
"%'" & "ORDER BY " & mSortBy
Ciao e grazie1000.
Roberto.

 file zip: 
http://www.funtastiko.com/results.zip
Ho visto, mi spiace ma non conosco il JScript, solo il VBS.
Ciao
Nixs

Ok, grazie comunque x i consigli che mi hai dato fin qui. :-)
Se qualcun altro se la sente di scaricare il file zip e di farmi avere la
sua opinione in merito, ne sarei felicissimo. Grazie
Ciao a tutti
Roberto.