Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    5

    problema query con operatore like su db access (asp/JScript)

    ciao a tutti,
    ho un problema che mi sta facendo impazzire,
    si tratta di fare una semplice ricerca su un campo testuale, estrarre da una tabella books in un db access i libri il cui titolo contiene il testo specificato in un form.
    Non ho particolari esigenze di efficacia della ricerca, mi basterebbe riuscire a far funzionare una query come questa:

    Select * from books where title like '*titolo libro*';

    inizialmente ho provato a scrivere la condizione con % invece che * ma poi ho trovato questo..
    http://office.microsoft.com/it-it/ac...322531040.aspx

    ci ho provato con questo codice:

    codice:
     
    	var con; 
    	var sConString; 
    	con = Server.CreateObject("ADODB.Connection"); 
    	sConString = "Provider=Microsoft.Jet.OLEDB.4.0; " + "Data Source=" +Server.MapPath("./bookstore.mdb "); 
    	con.Open(sConString); 
    	var rst; 
    	var sSQLString; 
    	rst = Server.CreateObject("ADODB.Recordset"); 
     
    	sSQLString = " Select * from books where title like '*"+TITOLO+"*';"; 
     
    	rst = con.Execute(sSQLString);
    dove TITOLO è una variabile in cui memorizzo la stringa passata tramite il form.

    sembrerebbe una cosa banale, il problema è che se cerco di stampare il risultato della query mi viene restituito quest'errore:

    ADODB.Field (0x80020009)
    Il record corrente corrisponde all'inizio o alla fine del file oppure è stato eliminato. Per eseguire l'operazione richiesta è necessario disporre di un record corrente.

    praticamente sembrerebbe che la query dia come risposta un recordset vuoto!!

    Non so più cosa pensare, probabilmente è un problema legato all'operatore like o agli apici che però sono necessari perchè senza la query non gira nemmeno su access.
    La cosa strana è che se faccio stampare la stringa sSQLString
    codice:
    <%Response.Write(sSQLString);%>
    ed eseguo la query risultante direttamente su access funziona correttamente restituendo una tabella con diverse righe.

    qualcuno sa aiutarmi??
    Ho pensato che posso sempre estrarre tutti i campi titolo e confrontarli utilizzando un espressione regolare per poi recuperare gli id ed effettuare una nuova query ma mi sembra un lavoro inutile se c'è un operatore che lo fa già...

    P.S. le istruzioni di connessione al db sembrerebbero giuste perchè ho provato con una query con condizione cost<=maxCost e funziona tutto regolarmente..

  2. #2
    metti sto % al posto di *

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    5
    adesso funziona con il %

    eppure è stata la prima cosa che ho fatto e mi dava errore di sintassi o qualcosa del genere, evidentemente poi ho cambiato altre cose.

    cosa dire..adesso funziona e non tocco più niente

    grazie!!

  4. #4
    * va usato SOLO dall'interfaccia di Access

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.