Query e funzione parametrica

di il
18 risposte

Query e funzione parametrica

Nei criteri di una query ho la seguente funzione:
IIf([INTERROGA FRASE].[Frase1] Is Null;[FRASE_A].[Frase1];[INTERROGA FRASE].[Frase1])

Quando nel criterio di ricerca (nel box che esce all'apertura della query) metto una parola a caso non ho nessun risultato.
Se invece inserisco una frase intera, che coincide con una presente nella tabella FRASE_A la query mi restituisce il risultato.
Cosa posso aggiungere alla funzione di prima per far in modo che anche senza scrivere una frase intera, ma mettendo solo una parola (un verbo), poi possa avere il risultato nella query ?

18 Risposte

  • Re: Query e funzione parametrica

    Cosa hai scritto esattamente come parametro? Solo le parentesi quadre e dentro il testo? Immagino di sì.
    Invece di scrivere
    [Digita il testo]
    devi scrivere
    Like [Digita il testo]

    La sintassi di quella espressione che hai scritto tu non mi convince.
  • Re: Query e funzione parametrica

    OsvaldoLaviosa ha scritto:


    ...
    Like [Digita il testo]
    Mancano in ogni caso i caratteri jolly.
  • Re: Query e funzione parametrica

    Relativamente vero. Io preferisco scrivere sempre così perchè ritengo che sia più giusto che i caratteri jolly li digita l'utente "sul momento". Se in un campo c'è esattamente e soltanto la parola "mela" e vuoi soltanto "mela", lui la ritrova insieme a tante altre...ma forse questo risultato non lo volevi...
  • Re: Query e funzione parametrica

    OsvaldoLaviosa ha scritto:


    Relativamente vero. Io preferisco scrivere sempre così perchè ritengo che sia più giusto che i caratteri jolly li digita l'utente "sul momento". Se in un campo c'è esattamente e soltanto la parola "mela" e vuoi soltanto "mela", lui la ritrova insieme a tante altre...ma forse questo risultato non lo volevi...
    La differenza tra il "RELATIVAMENTE VERO", e "ASSOLUTAMENTE VERO", la fa l'utilizzo del SW.
    Se sviluppi per "Casa Osvaldo" il tuo "relativamente" va bene... ma non esportiamo questo concetto come possa anche solo lontanamente essere giusto.

    Ti faccio un esempio TECNICO affinchè tu comprenda cosa hai detto di sbagliato facendoti 3 domande:
    Osvaldo sa che il carattere JOLLY non si applica a qualsiasi ricerca...?
    Osvaldo sa che il carattere JOLLY non è sempre [*]...?
    Osvaldo sa che il carattere JOLLY cambia a seconda di diversi aspetti...?

    Credo che Osvaldo possa aver risposto NO probabilmente a tutte e 3 le domande, e se non lo sa Osvaldo che lo da per scontato nei suoi lavori, figuriamoci se un SW lo usa "Maria Rossi" che di Access non ne sa nulla.

    La signora Rossi, quando digita PIPPO(se le hanno detto che digitando [PIPPO] otterrà tutti i records che contengono [PIPPO])... vuole digitare solo ed esclusivamente [PIPPO] e non fare un corso per sapere che:

    Se cerca un Numero i JOLLY non si usano
    Se cerca una Data i Jolly Non si dovrebbero usare, ma certi sviluppatori usano definire la Data come Campo Testo(e non pensare di dire che è sbagliato pechè l'argomento è ben più complesso)
    Se cerca un testo in un DB con connessione DAO a JET allora usa [*]
    Se cerca un testo in un DB conconnessione ADO a JET allora usa [%]
    Se serca un testo in un'altro DB allora dipende......... ecc...

    Saluti.
  • Re: Query e funzione parametrica

    @Alex ha scritto:


    Osvaldo sa che il carattere JOLLY non si applica a qualsiasi ricerca...?
    Io sottoscritto Osvaldo Laviosa so che il carattere JOLLY non si applica a qualsiasi ricerca.

    @Alex ha scritto:


    Osvaldo sa che il carattere JOLLY non è sempre [*]...?
    Sempre quello di prima lo sa.

    @Alex ha scritto:


    Osvaldo sa che il carattere JOLLY cambia a seconda di diversi aspetti...?
    Qui non capisco o non so...effettivamente in Access...generalmente per caratteri jolly si tende a pensare a * e ? (questi sono quelli più ricorrenti forniti dai manuali di base).

    @Alex ha scritto:


    La signora Rossi, quando digita PIPPO(se le hanno detto che digitando [PIPPO] otterrà tutti i records che contengono [PIPPO])... vuole digitare solo ed esclusivamente [PIPPO] e non fare un corso per sapere che:

    Se cerca un Numero i JOLLY non si usano
    Se cerca una Data i Jolly Non si dovrebbero usare, ma certi sviluppatori usano definire la Data come Campo Testo(e non pensare di dire che è sbagliato pechè l'argomento è ben più complesso)
    Se cerca un testo in un DB con connessione DAO a JET allora usa [*]
    Se cerca un testo in un DB conconnessione ADO a JET allora usa [%]
    Se serca un testo in un'altro DB allora dipende......... ecc...
    Forse sono tutte cose vere Alex...ma pensi che vale la pena farne un trattato così esteso per un semplice parametro di query?
    Mi limito a SUGGERIRE (si tratta sempre del mio soggettivo punto di vista) che io (sempre "Casa Osvaldo") scriverei preferibilmente
    Like [Digita il testo]
    e penso che il contesto stesse parlando di un campo di tipo Testo.

    Così rischiamo di andare fuori strada tutti e due e confondere le idee all'utente che ha aperto il thread.
  • Re: Query e funzione parametrica

    OsvaldoLaviosa ha scritto:


    ...
    Forse sono tutte cose vere Alex...
    Togli il forse.

    OsvaldoLaviosa ha scritto:


    ma pensi che vale la pena farne un trattato così esteso per un semplice parametro di query?
    Mi limito a SUGGERIRE (si tratta sempre del mio soggettivo punto di vista) che io (sempre "Casa Osvaldo") scriverei preferibilmente
    Like [Digita il testo]
    e penso che il contesto stesse parlando di un campo di tipo Testo.
    Siamo alle solite... non spacciare TUE convinzioni con CERTEZZE...!
    Hai convinzioni personali che vanno rispettate se si fermano, ti è stato fatto notare che il tuo suggerimento era TECNICAMENTE da completare come la BUONA NORMA richiede... e tu hai voluto puntualizzare con "RELATIVAMENTE" dando una risposta che possiamo dare al BAR...?
    Tecnicamente hai detto una ******, senza tanti ma, bastava chiuderla li.

    OsvaldoLaviosa ha scritto:


    Così rischiamo di andare fuori strada tutti e due e confondere le idee all'utente che ha aperto il thread.
    Vero ma prima o poi... spero sempre tu possa imparare, vedilo come un favore...
  • Re: Query e funzione parametrica

    Ritorno all'argomento del thread.

    In altre query, come parametro di ricerca, per parole o spezzoni di parola in intere frasi di un record ho usato:
    like "*" & [Inserire la parola: ] & "*"

    La mia domanda è: come faccio ad implementare questa stringa di ricerca
    con la funzione: IIf([INTERROGA FRASE].[Frase1] Is Null;[FRASE_A].[Frase1];[INTERROGA FRASE].[Frase1])
    ??
  • Re: Query e funzione parametrica

    A me manca qualche pezzo.
    Puoi descrivere tutti i campi delle tabelle coinvolte nella query?
    Dove hai scritto
    IIf([INTERROGA FRASE].[Frase1] Is Null;[FRASE_A].[Frase1];[INTERROGA FRASE].[Frase1])
    in Campo o Criterio?

    Che succede se scrivi
    IIf(IsNull([INTERROGA FRASE].[Frase1])=True;[FRASE_A].[Frase1];[INTERROGA FRASE].[Frase1])
  • Re: Query e funzione parametrica

    La prima formula che hai scritto l'ho messa nei criteri.
  • Re: Query e funzione parametrica

    Ma...ti dirò...non mi sembra affatto una sintassi opportuna da mettere in Criterio. Ha tutta l'aria di una sintassi da scrivere in Campo.
    Se non abbiamo l'intero contesto tabelle/campi non riusciamo a capire cosa vuoi fare.
  • Re: Query e funzione parametrica

    La stringa di ricerca va messa all'interno o esterno della funzione ?
    Oppure questa operazione non si può fare ?
  • Re: Query e funzione parametrica

    Ho riletto tutto da capo a piedi...mi mancano gli elementi concreti di quello che vuoi fare. Ribadisco (altrimenti non posso/iamo aiutarti):
    - elenca tutte le tabelle coinvolte nella query
    - tutti i campi di ogni tabella
    - le relazioni
    - cosa devi fare...magari fai un esempio concretissimo...se non capiamo nulla di nulla...
  • Re: Query e funzione parametrica

    La prima tabella si chiama Frase_A ed ha i seguenti campi: ID; Frase1; Frase2
    La seconda tabella, chiamata INTERROGA FRASE è ottenuta facendo copia ed incolla (solo struttura) della tabella Frase_A, ed ha i suoi stessi campi, che vengono usati per fare ricerche sulla prima tabella.
    Nella schermata Relazioni non c'è nulla.
    Nella query vengono richiamate la tabella Frase_A e la tabella INTERROGA FRASE.
    I campi della query sono gli stessi della tabella Frase_A.
    Nella query, in corrispondenza dei criteri del campo Frase1 viene inserita la funzione:
    IIf([INTERROGA FRASE].[Frase1] Is Null;[FRASE_A].[Frase1];[INTERROGA FRASE].[Frase1])
    Quando nella tabella INTERROGA FRASE scrivo nel campo Frase1 una parola, poi aprendo la query mi ritrovo tutti i dati legati a quella parola.

    Il punto è: quando ci sono più parole nel campo Frase1, la funzione non funziona !!!

    Quello che voglio, dato che nel campo Frase1 ho una frase, molte parole, è che quando digito una parola o spezzone di parola nel campo Frase1 della tabella INTERROGA FRASE, poi nella query voglio tutti i dati legati a quella parola o spezzone di parola.
    Ancora meglio se questa estrazione di dati tramite query finisce in modo ordinato in una maschera di tipo continuo.

    Spero di essere stato chiaro.

    Saluti.
  • Re: Query e funzione parametrica

    Che caos inutile. Ti basta una sola tabella e il parametro come quello che hai illustrato prima
    Like "*" & [Inserire la parola: ] & "*"
    Stop.
    Dopo aver digitato la "parola" o "spezzone di parola/frase" la query ti restituirà tutte le frasi contenenti quella parola. Poi ti basta solo impostare Ordinamento: Crescente sul campo Frase1 per ottenere le frasi ordinate.
    La maschera continua poggia ovviamente sulla query.
    Non vedo altro da fare.
Devi accedere o registrarti per scrivere nel forum
18 risposte