Ricerca tramite formulario campi vuoti non funziona

Discussioni sulle caratteristiche di database
Rispondi
Avatar utente
Zago_87
Messaggi: 111
Iscritto il: mercoledì 14 gennaio 2015, 23:53

Ricerca tramite formulario campi vuoti non funziona

Messaggio da Zago_87 »

Altro problemino nel mio DB, se vogliamo è solo una finezza, ma mi è utile per capire il funzionamento di Base.

Ho le solite 3 tabelle, che unisco tramite i legami nella ricerca, questa ricerca è filtrata tramite i campi del formulario.
La tabella in basso, premendo il pulsante, si aggiorna visualizzando la ricerca filtrata.
Incollo il codice di una sola riga di WHERE:

Codice: Seleziona tutto

"Ric_UnioneTabelle"."Matricola_Gen" LIKE '%' || COALESCE ( "Tab_RicercaPrincipale"."MatricolaGeneratore_Ric", '' ) || '%'
In pratica mi permette di cercare, tra caratteri jolly, il testo scritto nel campo corrispondente del formulario.

Se tutti i campi delle tabelle sono compilati funziona correttamente, anche cercando un solo carattere in un solo filtro il risultato è corretto. Se invece i campi delle tabelle non sono tutti compilati e si lasciano vuoti uno o più filtri, non funziona più. Il problema è ben visibile lasciando tutti i filtri vuoti, il risultato sono solo 2 dei 3 record salvati.

Il problema è che il simbolo % cerca qualsiasi carattere, ma non i valori NULL. Per fare in modo che se il filtro è vuoto deve restituire tutti i campi, compresi quelli con valore NULL, come si fa? Ho provato a concatenare funzioni ma mi restituisce sempre un errore di sintassi...

So che posso risolvere forzando un valore di default su tutti i campi che vado a cercare e impostando la copilazione come obbligatoria, ma non è una soluzione "pulita". Stampo dei moduli e se un campo può essere vuoto non è corretto che io stampi un trattino o un altro carattere qualsiasi. Allo stesso tempo mi è utile cercare tra quelli compilati...

Qualche idea?
Allegati
Prova.odb
(39.08 KiB) Scaricato 168 volte
Ultima modifica di Zago_87 il lunedì 18 gennaio 2016, 3:54, modificato 2 volte in totale.
LibreOffice 6.3.6
Windows 7 PRO
vladko
Volontario
Volontario
Messaggi: 1637
Iscritto il: martedì 3 agosto 2010, 8:02

Re: Ricerca tramite formulario di campi vuoti non funziona

Messaggio da vladko »

Un grande aiuto viene da qui

Topic Forum en
https://forum.openoffice.org/en/forum/v ... 00&t=42845

File esempio
https://forum.openoffice.org/en/forum/d ... p?id=11990

fai sapere grazie
AOO 3.4.1 AOO341m1(Build:9593) Linux Mint Debian/Mate 64bit java 1.6.0.22 XP PRO/32bit
con Base --> sempre backup!!!
Se problema è Risolto --> Inserire [Risolto]nel titolo come spiega qui, grazie :-)
Avatar utente
Zago_87
Messaggi: 111
Iscritto il: mercoledì 14 gennaio 2015, 23:53

Re: Ricerca tramite formulario di campi vuoti non funziona

Messaggio da Zago_87 »

Avevo provato questa strada (secondo link) ma avevo sbagliato il record da accostare a IS NULL :crazy:
L'esempio mi ha pure fatto capire che il mio bottone che salvava il record nella tabella filtro e poi aggiornava il form era sostituibile con un semplice "Aggiorna formulario".
Utilissimo poi il primo link, ci sono tante cose interessanti :super:

Unico dubbio: è normale che dopo aver modificato l'istruzione SQL, salvata e testata, se la riapro il codice diventa lunghissimo? In pratica si creano tutte le possibili combinazioni delle condizioni impostate. Ma se un domani devo modificare qualcosa come cavolo faccio? :ucrazy:

Grazie
LibreOffice 6.3.6
Windows 7 PRO
vladko
Volontario
Volontario
Messaggi: 1637
Iscritto il: martedì 3 agosto 2010, 8:02

Re: Ricerca tramite formulario di campi vuoti non funziona

Messaggio da vladko »

non capisco, puoi fare uno screenshot prima e dopo ?
AOO 3.4.1 AOO341m1(Build:9593) Linux Mint Debian/Mate 64bit java 1.6.0.22 XP PRO/32bit
con Base --> sempre backup!!!
Se problema è Risolto --> Inserire [Risolto]nel titolo come spiega qui, grazie :-)
Avatar utente
Zago_87
Messaggi: 111
Iscritto il: mercoledì 14 gennaio 2015, 23:53

Re: Ricerca tramite formulario di campi vuoti non funziona

Messaggio da Zago_87 »

Questo è il codice che scrivo:
Allegati
Prima.gif
LibreOffice 6.3.6
Windows 7 PRO
Avatar utente
Zago_87
Messaggi: 111
Iscritto il: mercoledì 14 gennaio 2015, 23:53

Re: Ricerca tramite formulario di campi vuoti non funziona

Messaggio da Zago_87 »

Questo è quello che vedo quando riapro:
Allegati
Dopo.gif
LibreOffice 6.3.6
Windows 7 PRO
vladko
Volontario
Volontario
Messaggi: 1637
Iscritto il: martedì 3 agosto 2010, 8:02

Re: Ricerca tramite formulario di campi vuoti non funziona

Messaggio da vladko »

1 controllare le parentesi apertura e chiusura "("
2 fare query con

Codice: Seleziona tutto

:P1
-->Parametri come in esempio sopra
3 per Capire inserire codice sql in nuova Query e fare test anche con vista Struttura SI/No

4 Ora ancora da esempio sopra
Immagine Sch1 --> Visualizza Struttura Si
Immagine Sch2 --> Visualizza Struttura No
in Immagine Sch2 contare righe dopo Where -->24
in immagine Sch1 vedere dove codice di 24_righe_Sch2
:)
Qery Visualizza Struttura No
Qery Visualizza Struttura No
Query/Visualizza Struttura Si
Query/Visualizza Struttura Si
AOO 3.4.1 AOO341m1(Build:9593) Linux Mint Debian/Mate 64bit java 1.6.0.22 XP PRO/32bit
con Base --> sempre backup!!!
Se problema è Risolto --> Inserire [Risolto]nel titolo come spiega qui, grazie :-)
Avatar utente
Zago_87
Messaggi: 111
Iscritto il: mercoledì 14 gennaio 2015, 23:53

Re: Ricerca tramite formulario di campi vuoti non funziona

Messaggio da Zago_87 »

vladko ha scritto:1 controllare le parentesi apertura e chiusura "("
Quelle erano ok, altrimenti penso avrebbe dato degli errori. Comunque le ho controllate 20 volte.
vladko ha scritto:2 fare query con

Codice: Seleziona tutto

:P1
-->Parametri come in esempio sopra
Ho provato a fare qualche test ma non sono riuscito a farlo funzionare. In pratica a me esce la finestra per inserire i parametri, non usa quelli inseriti nelle caselle di testo.

Ora riprovo, gioco un po' con visualizza struttura si/no e vediamo ;)

Grazie e buon anno!
LibreOffice 6.3.6
Windows 7 PRO
Avatar utente
charlie
Site Admin
Site Admin
Messaggi: 8954
Iscritto il: mercoledì 19 dicembre 2012, 10:50
Contatta:

Re: Ricerca tramite formulario di campi vuoti non funziona

Messaggio da charlie »

Zago_87 ha scritto:Ho provato a fare qualche test ma non sono riuscito a farlo funzionare. In pratica a me esce la finestra per inserire i parametri, non usa quelli inseriti nelle caselle di testo.
Ciao, devi inserire i parametri in "Collega da" e/o "Collega per" della finestra delle Proprietà del sub Form.
charlie
macOS 14.6.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
Avatar utente
Zago_87
Messaggi: 111
Iscritto il: mercoledì 14 gennaio 2015, 23:53

Re: Ricerca tramite formulario di campi vuoti non funziona

Messaggio da Zago_87 »

charlie ha scritto:Ciao, devi inserire i parametri in "Collega da" e/o "Collega per" della finestra delle Proprietà del sub Form.
Si Charlie, avevo provato ad impostare quei parametri ma non mi era permesso, io collego una tabella (per i filtri) e una ricerca (per i dati da filtrare), se provo a impostare quei due campi mi compare un errore. Però ripensando a quanto mi avete spiegato fino ad ora ho creato una vista della ricerca in questione, a questo punto ho potuto collegarla. :super:

Ho appena riprovato e ora funziona tutto correttamente con questo codice:

Codice: Seleziona tutto

SELECT
"ID_Gen", "ID_Imp", "ID_Res", "Matricola_Gen", "Costruttore_Gen", "Modello_Gen", "Indirizzo_Imp", "Civico_Imp", "Cognome_Res", "Nome_Res", "RagioneSociale_Res"
FROM
"Tab_UnioneTabelle"
WHERE
((("Tab_UnioneTabelle"."Matricola_Gen" LIKE '%' || :X1 || '%') OR (:X1 IS NULL)) AND
(("Tab_UnioneTabelle"."Indirizzo_Imp" LIKE '%' || :X2 || '%') OR (:X2 IS NULL)) AND
(("Tab_UnioneTabelle"."Cognome_Res" LIKE '%' || :X3 || '%') OR (:X3 IS NULL)) AND
(("Tab_UnioneTabelle"."RagioneSociale_Res" LIKE '%' || :X4 || '%') OR (:X4 IS NULL)))
La domanda è: cosa cambia impostanto i valori :X1 al posto dei campi della tabella filtro, come avevo impostato in precedenza? Il risultato finale mi sembra lo stesso, si tratta di una semplice semplificazione del codice o miglioro anche altri aspetti? Il fatto di aver dovuto creare una vista della ricerca appesantisce il DB?

Il problema della moltiplicazione delle condizioni comunque resta, se salvo e riapro vedo questo codice:

Codice: Seleziona tutto

SELECT
"ID_Gen", "ID_Imp", "ID_Res", "Matricola_Gen", "Costruttore_Gen", "Modello_Gen", "Indirizzo_Imp", "Civico_Imp", "Cognome_Res", "Nome_Res", "RagioneSociale_Res"
FROM
"Tab_UnioneTabelle"
WHERE
( "Matricola_Gen" LIKE '%' || :X1 || '%' AND "Indirizzo_Imp" LIKE '%' || :X2 || '%' AND "Cognome_Res" LIKE '%' || :X3 || '%' AND "RagioneSociale_Res" LIKE '%' || :X4 || '%' OR "Matricola_Gen" LIKE '%' || :X1 || '%' AND "Cognome_Res" LIKE '%' || :X3 || '%' AND "RagioneSociale_Res" LIKE '%' || :X4 || '%' AND :X2 IS NULL OR "Matricola_Gen" LIKE '%' || :X1 || '%' AND "Indirizzo_Imp" LIKE '%' || :X2 || '%' AND "RagioneSociale_Res" LIKE '%' || :X4 || '%' AND :X3 IS NULL OR "Matricola_Gen" LIKE '%' || :X1 || '%' AND "RagioneSociale_Res" LIKE '%' || :X4 || '%' AND :X2 IS NULL AND :X3 IS NULL OR "Matricola_Gen" LIKE '%' || :X1 || '%' AND "Indirizzo_Imp" LIKE '%' || :X2 || '%' AND "Cognome_Res" LIKE '%' || :X3 || '%' AND :X4 IS NULL OR "Matricola_Gen" LIKE '%' || :X1 || '%' AND "Cognome_Res" LIKE '%' || :X3 || '%' AND :X2 IS NULL AND :X4 IS NULL OR "Matricola_Gen" LIKE '%' || :X1 || '%' AND "Indirizzo_Imp" LIKE '%' || :X2 || '%' AND :X3 IS NULL AND :X4 IS NULL OR "Matricola_Gen" LIKE '%' || :X1 || '%' AND :X2 IS NULL AND :X3 IS NULL AND :X4 IS NULL OR "Indirizzo_Imp" LIKE '%' || :X2 || '%' AND "Cognome_Res" LIKE '%' || :X3 || '%' AND "RagioneSociale_Res" LIKE '%' || :X4 || '%' AND :X1 IS NULL OR "Cognome_Res" LIKE '%' || :X3 || '%' AND "RagioneSociale_Res" LIKE '%' || :X4 || '%' AND :X2 IS NULL AND :X1 IS NULL OR "Indirizzo_Imp" LIKE '%' || :X2 || '%' AND "RagioneSociale_Res" LIKE '%' || :X4 || '%' AND :X3 IS NULL AND :X1 IS NULL OR "RagioneSociale_Res" LIKE '%' || :X4 || '%' AND :X2 IS NULL AND :X3 IS NULL AND :X1 IS NULL OR "Indirizzo_Imp" LIKE '%' || :X2 || '%' AND "Cognome_Res" LIKE '%' || :X3 || '%' AND :X4 IS NULL AND :X1 IS NULL OR "Cognome_Res" LIKE '%' || :X3 || '%' AND :X2 IS NULL AND :X4 IS NULL AND :X1 IS NULL OR "Indirizzo_Imp" LIKE '%' || :X2 || '%' AND :X3 IS NULL AND :X4 IS NULL AND :X1 IS NULL OR :X2 IS NULL AND :X3 IS NULL AND :X4 IS NULL AND :X1 IS NULL )
Devo dire che succede la stessa cosa con il file che ha postato Vladko, aprendolo in visualizzazione struttura il codice è molto più lungo di quanto descritto nel formulario.
Come dicevo funzionano entrambi, volevo solo capire se è normale questo fatto.
LibreOffice 6.3.6
Windows 7 PRO
Avatar utente
Zago_87
Messaggi: 111
Iscritto il: mercoledì 14 gennaio 2015, 23:53

Re: Ricerca tramite formulario di campi vuoti non funziona

Messaggio da Zago_87 »

Prendo il silenzio come un si? :D

Mi sta capitando di dover editare delle ricerche e con il codice "trasformato" è un incubo.
Per ora ho risolto salvando in un file testo il codice SQL originario, così se devo fare una modifica riparto da quello che è decisamente più comprensibile.

Quindi sbaglio io qualcosa o è normale che si modifichi il codice in questo modo?
Grazie e scusate se sollecito la risposta
LibreOffice 6.3.6
Windows 7 PRO
vladko
Volontario
Volontario
Messaggi: 1637
Iscritto il: martedì 3 agosto 2010, 8:02

Re: Ricerca tramite formulario di campi vuoti non funziona

Messaggio da vladko »

Zago_87 ha scritto:Prendo il silenzio come un si? :D
mio silenzio <> Si
mio silenzio = avere il tempo per capire e rispondere quando c'è qualcosa di sicuro
Zago_87 ha scritto:Mi sta capitando di dover editare delle ricerche e con il codice "trasformato" è un incubo.
Per ora ho risolto salvando in un file testo il codice SQL originario, così se devo fare una modifica riparto da quello che è decisamente più comprensibile.
se la montagna non va da maometto ... :super:
AOO 3.4.1 AOO341m1(Build:9593) Linux Mint Debian/Mate 64bit java 1.6.0.22 XP PRO/32bit
con Base --> sempre backup!!!
Se problema è Risolto --> Inserire [Risolto]nel titolo come spiega qui, grazie :-)
Avatar utente
Zago_87
Messaggi: 111
Iscritto il: mercoledì 14 gennaio 2015, 23:53

Re: Ricerca tramite formulario di campi vuoti non funziona

Messaggio da Zago_87 »

Metto risolto perchè ho scoperto che abilitando la funzione "Esegui direttamente il comando SQL" posso scrivere come voglio e il linguaggio non viene reinterpretato quando chiudo la finestra. Anzi, in questo modo posso andare a capo nei punti più oppurtuni, che assieme alle note, semplifica molto il lavoro di modifica.
 Editato: In realtà con questa istruzione particolare la cosa non funziona, direi per la presenza del comando LIKE. Se lascio l'opzione sopra indicata attiva non funziona la ricerca, se la disattivo tutto ok ma mi succede quando descritto precedentemente...ho imparato una piccola cosa ma non ho risolto il mio problema...ufff

Mi documenterò meglio sull'utilizzo di quel pulsante...nel frattempo continuo con il prendere appunti su un file di testo 
Grazie come sempre del supporto!
LibreOffice 6.3.6
Windows 7 PRO
vladko
Volontario
Volontario
Messaggi: 1637
Iscritto il: martedì 3 agosto 2010, 8:02

Re: Ricerca tramite formulario campi vuoti non funziona

Messaggio da vladko »

provato con portable windows 4.1.1
a me funziona perfetto come tu dici
AOO 3.4.1 AOO341m1(Build:9593) Linux Mint Debian/Mate 64bit java 1.6.0.22 XP PRO/32bit
con Base --> sempre backup!!!
Se problema è Risolto --> Inserire [Risolto]nel titolo come spiega qui, grazie :-)
Avatar utente
Zago_87
Messaggi: 111
Iscritto il: mercoledì 14 gennaio 2015, 23:53

Re: Ricerca tramite formulario campi vuoti non funziona

Messaggio da Zago_87 »

Cioè hai abilitato il pulsante "Esegui direttamente comando SQL" e la macro funziona? Se lo abilito non da errori ma non cerca nulla...io sono su LibreOffice ultima versione. Poi provo con OpenOffice...
LibreOffice 6.3.6
Windows 7 PRO
Rispondi