Formulario con Query con più ricerche

Discussioni sulle caratteristiche di database
mirabellomusic
Messaggi: 65
Iscritto il: venerdì 12 giugno 2020, 12:26

Formulario con Query con più ricerche

Messaggio da mirabellomusic »

Salve, vorrei poter fare una query dove oltre poter visualizzare per un determinato periodo, posso filtrare anche le altre colonne, tipo sceglimi in un periodo e le persone che hanno come operatore vodafone per esempio. Tutto in un'unica query e come fare poi il formulario di visualizzazine. Grazie
Allegati
testopenoffice.odb
(13.17 KiB) Scaricato 177 volte
Ultima modifica di charlie il lunedì 29 giugno 2020, 9:16, modificato 1 volta in totale.
Motivazione: Modificato il titolo
Open Office 4.1.7
Avatar utente
charlie
Site Admin
Site Admin
Messaggi: 8819
Iscritto il: mercoledì 19 dicembre 2012, 10:50
Contatta:

Re: Query con più ricerche

Messaggio da charlie »

Da digitare?

Codice: Seleziona tutto

SELECT "ID", "Nome", "Cognome", "Data di Nascita", "Operatore Telefonico" FROM "Utenti" WHERE "Data di Nascita" >= :Da AND "Data di Nascita" <= :A AND "Operatore Telefonico" = :Operatore ORDER BY "Data di Nascita" ASC, "Cognome" ASC, "Nome" ASC, "Operatore Telefonico" ASC
charlie
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
mirabellomusic
Messaggi: 65
Iscritto il: venerdì 12 giugno 2020, 12:26

Re: Query con più ricerche

Messaggio da mirabellomusic »

Ciao, si da digitare. Del tipo che se scrivo su una sola casella faccio la query per quel valore, se scrivo su un'altra per quell'altro valore. Volendo se scrivo in entrambe le caselle, deve fare la query che rispetti entrambi
Open Office 4.1.7
Avatar utente
charlie
Site Admin
Site Admin
Messaggi: 8819
Iscritto il: mercoledì 19 dicembre 2012, 10:50
Contatta:

Re: Query con più ricerche

Messaggio da charlie »

Ciao, in quel caso la query è un po' più complicata perchè bisogna prevedere la mancata digitazione (NULL):

Codice: Seleziona tutto

SELECT "ID", "Nome", "Cognome", "Data di Nascita", "Operatore Telefonico" FROM "Utenti" WHERE ("Data di Nascita" >= :Da OR :Da IS NULL) AND ("Data di Nascita" <= :A OR :A Is NULL) AND ("Operatore Telefonico" = :Operatore OR :Operatore IS NULL) ORDER BY "Data di Nascita" ASC, "Cognome" ASC, "Nome" ASC, "Operatore Telefonico" ASC
charlie
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
mirabellomusic
Messaggi: 65
Iscritto il: venerdì 12 giugno 2020, 12:26

Re: Query con più ricerche

Messaggio da mirabellomusic »

buongiorno, però mi serve con un formulario dove ci sono le caselle.
Open Office 4.1.7
Avatar utente
charlie
Site Admin
Site Admin
Messaggi: 8819
Iscritto il: mercoledì 19 dicembre 2012, 10:50
Contatta:

Re: Query con più ricerche

Messaggio da charlie »

Si costruisce con pochi clic.
Allegati
testopenoffice_2.odb
(20.99 KiB) Scaricato 205 volte
charlie
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
mirabellomusic
Messaggi: 65
Iscritto il: venerdì 12 giugno 2020, 12:26

Re: Query con più ricerche

Messaggio da mirabellomusic »

Scusami, ma se inserisco vodafone nel formulario ricerca, non mi mostra niente. Io vorrei fare con le caselle in modo tale da poter cambiare i filtri quando voglio, non che devo chiudere e riaprire ogni volta.
Open Office 4.1.7
mirabellomusic
Messaggi: 65
Iscritto il: venerdì 12 giugno 2020, 12:26

Re: Query con più ricerche

Messaggio da mirabellomusic »

E comunque, il codice da lei sopra inviato non funziona. Se non inserisco un valore mi da errore.
Open Office 4.1.7
Avatar utente
charlie
Site Admin
Site Admin
Messaggi: 8819
Iscritto il: mercoledì 19 dicembre 2012, 10:50
Contatta:

Re: Query con più ricerche

Messaggio da charlie »

Funziona in LibreOffice, ho dimenticato di testarla in Open Office nel quale ignoro perché non vada (ma non mi preoccupo).
Comunque allego una nuova versione che spero sia più rispondente a quanto hai chiesto.
Allegati
testopenoffice_3.odb
(22.83 KiB) Scaricato 213 volte
charlie
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
mirabellomusic
Messaggi: 65
Iscritto il: venerdì 12 giugno 2020, 12:26

Re: Query con più ricerche

Messaggio da mirabellomusic »

Ciao, è perfetto così. Ora devo provare ad applicarlo sul mio vero database. Puoi farmi una sorta di procedura da seguire?
Open Office 4.1.7
Avatar utente
charlie
Site Admin
Site Admin
Messaggi: 8819
Iscritto il: mercoledì 19 dicembre 2012, 10:50
Contatta:

Re: Formulario con Query con più ricerche

Messaggio da charlie »

  • Per prima cosa devi creare una tabella di appoggio (Filtro) con la stessa tipologia dei campi da cercare.
  • Su questa tabella si costruisce il MainForm. Io uso questa tecnica (in generale):
    • con pochi clic di procedura guidata creo un formulario con i campi di default.
    • Poi lo apro in modifica e provvedo a rendere 'apribili' i campi tipo Data, a convertire (clic destro > sostituisci con) i campi tipo Testo e Numerici in Caselle di riepilogo.
    • Poi rendo queste ultime 'apribili' e le collego con SQL alle rispettive tabelle da cui attingere i dati.
  • Successivamente aggiungo un SubForm (tramite il Navigatore) a forma 'tabellare' (griglia) costruito sulla Query di ricerca con 'parametri' (quelli con i duepunti, es. ":Da". ":A". ":Operatore").
  • Il collegamento 'Collega da/Collega per' viene impostato con i nomi campo della tabella Filtro da una parte e con i 'parametri' stessi (senza duepunti) dall'altra, cioè la Query.
  • Completa il tutto un pulsante che aggiorna il SubForm ad ogni nuova ricerca
charlie
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
mirabellomusic
Messaggi: 65
Iscritto il: venerdì 12 giugno 2020, 12:26

Re: Formulario con Query con più ricerche

Messaggio da mirabellomusic »

Ciao, quindi nella query della ricerca nella where devo analizzare tutte quelle ipotesi?
Open Office 4.1.7
mirabellomusic
Messaggi: 65
Iscritto il: venerdì 12 giugno 2020, 12:26

Re: Formulario con Query con più ricerche

Messaggio da mirabellomusic »

poiché nel db reale sono tipo 6-7 le caselle da cui posso ricercare
Open Office 4.1.7
Avatar utente
charlie
Site Admin
Site Admin
Messaggi: 8819
Iscritto il: mercoledì 19 dicembre 2012, 10:50
Contatta:

Re: Formulario con Query con più ricerche

Messaggio da charlie »

Certo, devi prevedere nella tabella Filtro tanti campi quanti sono i campi da cercare (per la data di nascita sono 2 per poter impostare Da ... A) e altrettante condizioni nella query di ricerca.
Un consiglio? Prova ad aggiungerne uno alla volta e verificare ogni volta il risultato.
charlie
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
mirabellomusic
Messaggi: 65
Iscritto il: venerdì 12 giugno 2020, 12:26

Re: Formulario con Query con più ricerche

Messaggio da mirabellomusic »

Il problema è che bisogna fare una formula matematica per vedere quante condizioni OR devo fare. Non sarà facile. Comunque ho un problema. Mi da questo errore con il db reale.
Open Office 4.1.7
mirabellomusic
Messaggi: 65
Iscritto il: venerdì 12 giugno 2020, 12:26

Re: Formulario con Query con più ricerche

Messaggio da mirabellomusic »

Questo è l'errore. Ho controllato e la colonna si chiama proprio così. Dice tipo errore -28
Allegati
Annotazione 2020-06-30 190805.png
Open Office 4.1.7
Avatar utente
charlie
Site Admin
Site Admin
Messaggi: 8819
Iscritto il: mercoledì 19 dicembre 2012, 10:50
Contatta:

Re: Formulario con Query con più ricerche

Messaggio da charlie »

Da quello che posso capire hai scritto "Reparto " e non "Reparto". C'è uno spazio di troppo.
charlie
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
mirabellomusic
Messaggi: 65
Iscritto il: venerdì 12 giugno 2020, 12:26

Re: Formulario con Query con più ricerche

Messaggio da mirabellomusic »

Ho risolto questo errore, ma se metto solo reparto mi da un java lang exception.

Codice: Seleziona tutto

SELECT "Storico"."Giorno" AS "Giorno", "Storico"."Reparto " AS "Reparto", "Storico"."Pattuglia" AS "Pattuglia", "Storico"."Capo Pattuglia" AS "Capo Pattuglia", "Storico"."C.E.T.E. (N.)" AS "C.E.T.E. (N.)" FROM "Storico" "Storico" WHERE "Giorno" >= :Da AND "Giorno" <= :A AND "Reparto" = :Reparto OR "Giorno" >= :Da AND "Giorno" <= :A AND :Reparto IS NULL OR "Giorno" >= :Da AND :A IS NULL AND :Reparto IS NULL OR :Da IS NULL AND :A IS NULL AND :Reparto IS NULL OR :Da IS NULL AND "Giorno" <= :A AND "Reparto" = :Reparto OR :Da IS NULL AND "Giorno" <= :A AND :Reparto IS NULL OR :Da IS NULL AND :A IS NULL AND "Reparto" = :Reparto ORDER BY "Storico"."Giorno", "Storico"."Reparto ", "Storico"."Pattuglia", "Storico"."C.E.T.E. (N.)"
Ultima modifica di charlie il martedì 30 giugno 2020, 21:07, modificato 1 volta in totale.
Motivazione: Formattato codice
Open Office 4.1.7
Avatar utente
charlie
Site Admin
Site Admin
Messaggi: 8819
Iscritto il: mercoledì 19 dicembre 2012, 10:50
Contatta:

Re: Formulario con Query con più ricerche

Messaggio da charlie »

Per favore, formatta il codice che posti fra i tag

Codice: Seleziona tutto

[code]
[/code], altrimenti vengono fuori delle faccine :D .

Credo tu abbia un po' pasticciato con il codice. Dovrebbe essere:

Codice: Seleziona tutto

SELECT "Storico"."Giorno" AS "Giorno", "Storico"."Reparto " AS "Reparto", "Storico"."Pattuglia" AS "Pattuglia", 
"Storico"."Capo Pattuglia" AS "Capo Pattuglia", "Storico"."C.E.T.E. (N.)" AS "C.E.T.E. (N.)" 
FROM "Storico" "Storico" 
WHERE ("Giorno" >= :Da  OR :Da IS NULL) 
AND ("Giorno" <= :A OR :A IS NULL)
AND ("Reparto" = :Reparto OR :Reparto IS NULL)
ORDER BY "Storico"."Giorno", "Storico"."Reparto ", "Storico"."Pattuglia", "Storico"."C.E.T.E. (N.)"
Ho messo delle parentesi e degli 'a capo' per farlo vedere meglio.
charlie
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
mirabellomusic
Messaggi: 65
Iscritto il: venerdì 12 giugno 2020, 12:26

Re: Formulario con Query con più ricerche

Messaggio da mirabellomusic »

ciao, anche copiando questo codice mi lancia un java lang exception
Open Office 4.1.7
Avatar utente
charlie
Site Admin
Site Admin
Messaggi: 8819
Iscritto il: mercoledì 19 dicembre 2012, 10:50
Contatta:

Re: Formulario con Query con più ricerche

Messaggio da charlie »

Darti ancora consigli al buio non è il caso. Ci vuole il tuo file.
charlie
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
mirabellomusic
Messaggi: 65
Iscritto il: venerdì 12 giugno 2020, 12:26

Re: Formulario con Query con più ricerche

Messaggio da mirabellomusic »

SELECT "Storico"."Giorno" AS "Giorno", "Storico"."Reparto " AS "Reparto", "Storico"."Pattuglia" AS "Pattuglia", "Storico"."Capo Pattuglia" AS "Capo Pattuglia", "Storico"."C.E.T.E. (N.)" AS "C.E.T.E. (N.)"
FROM "Storico" "Storico"
WHERE ( "Giorno" >= :Da OR :Da IS NULL )
AND ( "Giorno" <= :A OR :A IS NULL )
AND ( "Reparto" = :Reparto OR :Reparto IS NULL )
ORDER BY "Storico"."Giorno", "Storico"."Reparto ", "Storico"."Pattuglia", "Storico"."C.E.T.E. (N.)"
Se inserisco una sola delle 3 cose mi dice java illegal argument exception
Open Office 4.1.7
mirabellomusic
Messaggi: 65
Iscritto il: venerdì 12 giugno 2020, 12:26

Re: Formulario con Query con più ricerche

Messaggio da mirabellomusic »

Purtroppo come puoi anche vedere dai nomi delle colonne, è un db che non posso condividere.
Open Office 4.1.7
Avatar utente
charlie
Site Admin
Site Admin
Messaggi: 8819
Iscritto il: mercoledì 19 dicembre 2012, 10:50
Contatta:

Re: Formulario con Query con più ricerche

Messaggio da charlie »

Fai una copia, cancella tutti i dati delle tabelle e metti 2 o 3 record con dati fittizi.

charlie ha scritto:Per favore, formatta il codice che posti fra i tag , altrimenti vengono fuori delle faccine .
Schermata 2020-07-01 alle 16.05.49.png
charlie
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
Avatar utente
charlie
Site Admin
Site Admin
Messaggi: 8819
Iscritto il: mercoledì 19 dicembre 2012, 10:50
Contatta:

Re: Formulario con Query con più ricerche

Messaggio da charlie »

Lascia perdere ....
In LibreOffice funziona tutto, è un problema di Open Office.
Per ora non ho tempo di occuparmi del problema delle differenze fra i due, se vuoi proseguire scarica ed installa LibreOffice.
charlie
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
mirabellomusic
Messaggi: 65
Iscritto il: venerdì 12 giugno 2020, 12:26

Re: Formulario con Query con più ricerche

Messaggio da mirabellomusic »

Non si può risolvere in nessun modo? Devo per forza usare Open
Open Office 4.1.7
Avatar utente
charlie
Site Admin
Site Admin
Messaggi: 8819
Iscritto il: mercoledì 19 dicembre 2012, 10:50
Contatta:

Re: Formulario con Query con più ricerche

Messaggio da charlie »

Prova ad usare

Codice: Seleziona tutto

 ='' 
(due apici semplici o apostrofi) al posto di

Codice: Seleziona tutto

IS NULL
Fammi sapere, grazie.
charlie
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
Avatar utente
charlie
Site Admin
Site Admin
Messaggi: 8819
Iscritto il: mercoledì 19 dicembre 2012, 10:50
Contatta:

Re: Formulario con Query con più ricerche

Messaggio da charlie »

Lascia stare, non funziona.
Fatto delle prove

Codice: Seleziona tutto

=''
va bene per le stringhe,

Codice: Seleziona tutto

=0
va bene per i numeri.
Ma ... con le date?
charlie
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
Avatar utente
charlie
Site Admin
Site Admin
Messaggi: 8819
Iscritto il: mercoledì 19 dicembre 2012, 10:50
Contatta:

Re: Formulario con Query con più ricerche

Messaggio da charlie »

La soluzione da provare potrebbe essere questa:

Codice: Seleziona tutto

SELECT * FROM "Storico"
WHERE ( CAST( "Giorno" AS CHAR ) BETWEEN :DateFrom AND :DateTo OR IFNULL( :DateFrom, '' ) = '' OR IFNULL( :DateTo, '' ) = '' )
AND ( "Reparto" = :Reparto OR :Reparto ='' ) 
Ma le date devono essere nel formato inglese AAAA-MM-GG. Se usate con il formulario non è un problema, il calendario è nel formato consueto.
charlie
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
mirabellomusic
Messaggi: 65
Iscritto il: venerdì 12 giugno 2020, 12:26

Re: Formulario con Query con più ricerche

Messaggio da mirabellomusic »

grazie mille, ci sono riuscito. Volevo sapere, è possibile stampare il formulario con i valori all'interno?
Edit: comunque sto lavorando ad una nuova versione, s puoi aspettare ....
Open Office 4.1.7
Rispondi