Pannello di Controllo Moderatore ]

[Risolto] Query di ricerca con parametri (due punti) aperti

Discussioni sulle caratteristiche di database

[Risolto] Query di ricerca con parametri (due punti) aperti

Messaggioda markinson » mercoledì 26 agosto 2020, 18:29

Salve a tutti! :)

Torno ad approfittare del forum per colmare l'ennesima mia lacuna che, in vista di un improvviso lavoro da presentare entro l'altro ieri ( :knock: e appreso oggi), mi sta facendo un po' soffrire.

Ho appreso nel thread "Formulario con Query con più ricerche" come passare un valore/parametro a una ricerca, ossia: ":parametro".
QUI in particolare, grazie a charlie.

La domanda che pongo è la seguente: devo effettuare una ricerca passando un parametro "aperto", voglio dire inserendo soltanto una parte del valore da ricercare.
Un po' come quando nei criteri di ricerca si scrive:
Codice: Seleziona tutto   Espandi visualeStringi visuale
LIKE '*parametro*'


In questo caso ho la necessità di passare alla query qualcosa del tipo "*ametr*" e avere come risultato tutti i record che in qualche modo contengono tale stringa.

Forse non ho cercato a sufficienza nel forum e in rete e di questo mi scuso sin d'ora. Purtroppo ho una fretta indemoniata ...
Grazie, come sempre.
Ultima modifica di markinson il mercoledì 26 agosto 2020, 22:53, modificato 1 volta in totale.
OpenOffice 4.1.7 / LibreOffice 6 still - Windows 10 Pro x64
"Facesti come quei che va di notte, che porta il lume dietro e sé non giova, ma dopo sé fa le persone dotte"
Dante (Purgatorio, Canto XXII)
Avatar utente
markinson
 
Messaggi: 87
Iscritto il: mercoledì 24 giugno 2020, 15:18

Re: Query di ricerca con parametri (due punti) aperti

Messaggioda Zago_87 » mercoledì 26 agosto 2020, 21:23

Ciao, credo di aver postato in passato la soluzione al tuo problema per una ricerca a n parametri ma vatti a ricordare quando e come...

Intanto ti do un suggerimento se hai tempo e voglia di continuare ad approfondire:
Hai già trovato la soluzione, come hai detto devi passare come parametro di ricerca (nel WHERE quindi) una stringa di testo tra due caratteri jolly usando il codice LIKE. Credo tu conosca già, dalle precedenti avventure, come unire del testo (car.jolly + :par + car.jolly), cerca bene quale carattere jolly fa al caso tuo e fai qualche test.

Se hai problemi o vuoi la soluzione...ribussa ;)
LibreOffice 6.3.6
Windows 7 PRO
Avatar utente
Zago_87
 
Messaggi: 109
Iscritto il: giovedì 15 gennaio 2015, 0:53

Re: Query di ricerca con parametri (due punti) aperti

Messaggioda markinson » mercoledì 26 agosto 2020, 22:52

:bravo:
Grande! E grazie!

Ho riflettuto suoi tuoi ottimi suggerimenti e, alla fine, mi sono schiodato da "= :parametro" su cui mi ero incartato e sono ri-approdato al LIKE e ... magia:
Codice: Seleziona tutto   Espandi visualeStringi visuale
SELECT "Comune", "DenominazionePunto", "CoordX", "CoordY", "AttoEnte", "GestoreSII", "Corrente", "Ubicazione" FROM "tbl_Principale" WHERE "Comune" LIKE ( '%' || :Comune || '%' ) AND "AttoEnte" LIKE '%SUAP%'


Segnalo, più per promemoria a me stesso che altro, che ho utilizzato il "%" come carattere jolly e per la concatenazione mi sono dovuto servire di "||". Con "+" non andava ...

GRAZIE, per il tuo tempo e il sostegno!

P.S.
Non ci crederai, ma sono intervenuto da riga di comando (diciamo così). Nel senso che sono entrato direttamente nella modifica del codice! :mrgreen:
OpenOffice 4.1.7 / LibreOffice 6 still - Windows 10 Pro x64
"Facesti come quei che va di notte, che porta il lume dietro e sé non giova, ma dopo sé fa le persone dotte"
Dante (Purgatorio, Canto XXII)
Avatar utente
markinson
 
Messaggi: 87
Iscritto il: mercoledì 24 giugno 2020, 15:18

Re: [Risolto] Query di ricerca con parametri (due punti) ape

Messaggioda Zago_87 » mercoledì 26 agosto 2020, 23:17

Ottimo lavoro, ne ero sicuro :super:

Ultima cosa, quando fai questo tipo di ricerche occhio ai campi nulli, fai sempre un test di tutte le situazioni che si possono creare (tutti i campi vuoti, tutti compilati, uno solo compilato, ecc) perché trovare sorprese a posteriori implica uno sforzo in più a volte nella correzione. Nel tuo codice non è prevista la ricerca lasciando il comune vuoto e quindi dovrebbe dare errore, Charlie ti aveva già spiegato come fare se non ho visto male, vedi se ti è necessaria questa modifica.

Ah...ultima davvero. Occhio alla distinzione maiuscole/minuscole, se non ricordo male dipende da come hai impostato i dati in tabella, se hai usato un tipo di stringa case sensitive oppure no. Magari fai delle prove anche per questo, perché poi quando i dati sono tanti, perderne uno per colpa di una sciocchezza è un attimo purtroppo.

Io soprattutto all'inizio creavo dati fittizzi apposta con tutte le situazioni per essere sicuro di non perdere nulla, oppure facevo la stessa ricerca usando Calc a partire dalla tabella completa e poi confrontavo i risultati, questo a volte mi ha salvato.
LibreOffice 6.3.6
Windows 7 PRO
Avatar utente
Zago_87
 
Messaggi: 109
Iscritto il: giovedì 15 gennaio 2015, 0:53

Re: [Risolto] Query di ricerca con parametri (due punti) ape

Messaggioda markinson » giovedì 27 agosto 2020, 7:44

Zago_87 ha scritto:Ottimo lavoro, ne ero sicuro :super:

Troppo buono! :lol:
Fortunatamente ho ottimi maestri e suggeritori! ;)

Zago_87 ha scritto:Ultima cosa, quando fai questo tipo di ricerche occhio ai campi nulli, fai sempre un test di tutte le situazioni che si possono creare (tutti i campi vuoti, tutti compilati, uno solo compilato, ecc) perché trovare sorprese a posteriori implica uno sforzo in più a volte nella correzione. Nel tuo codice non è prevista la ricerca lasciando il comune vuoto e quindi dovrebbe dare errore, Charlie ti aveva già spiegato come fare se non ho visto male, vedi se ti è necessaria questa modifica.

Considerazione correttissima.
Non sono previsti campi nulli e, qualora vi fossero, dovrebbe essere restituito un elenco vuoto. Almeno salvo l'insorgere di nuove e diverse esigenze.

Zago_87 ha scritto:Ah...ultima davvero. Occhio alla distinzione maiuscole/minuscole, se non ricordo male dipende da come hai impostato i dati in tabella, se hai usato un tipo di stringa case sensitive oppure no. Magari fai delle prove anche per questo, perché poi quando i dati sono tanti, perderne uno per colpa di una sciocchezza è un attimo purtroppo.

Anche in questo caso: osservazione azzeccatissima! Infatti, nelle varie prove, ho notato che la mia ricerca è case sensitive. Ergo: o mi attrezzo, come da te indicato, per intervenire sul tipo di stringa, oppure devo tenere bene a mente questa condizione, proprio per evitare, come dici, di perdere per strada qualche record.

Zago_87 ha scritto:Io soprattutto all'inizio creavo dati fittizzi apposta con tutte le situazioni per essere sicuro di non perdere nulla, oppure facevo la stessa ricerca usando Calc a partire dalla tabella completa e poi confrontavo i risultati, questo a volte mi ha salvato.

:lol: ... stanotte mi sono imbattuto nella medesima circostanza: attraverso (i filtri di) Calc e l'incrocio con i documenti cartacei, mi sono accorto di alcuni errori da me commessi nelle prime fasi di gestione (popolamento) della base di dati. Dovrò riprendere il lavoro sinora svolto, temo, però tutto serve per essere più accorti nel futuro.

Grazie davvero del preziosissimo aiuto! :super: :bravo:
OpenOffice 4.1.7 / LibreOffice 6 still - Windows 10 Pro x64
"Facesti come quei che va di notte, che porta il lume dietro e sé non giova, ma dopo sé fa le persone dotte"
Dante (Purgatorio, Canto XXII)
Avatar utente
markinson
 
Messaggi: 87
Iscritto il: mercoledì 24 giugno 2020, 15:18


Torna a Base

Chi c’è in linea

Visitano il forum: Nessuno e 4 ospiti