Stampare un rapporto (o report) con un campo condizionato
Stampare un rapporto (o report) con un campo condizionato
Salve a tutti!
Eccomi di nuovo qui, sperando di trovare, come sempre accaduto, aiuto in qualche anima buona e paziente.
La questione attiene ai "rapporti" (o report, che dir si voglia). Ho creato con Apache OpenOffice, munito della vecchia (ma ancora funzionante) estensione Oracle Report Builder, un rapporto.
La mia necessità è quella di porre una condizione in un determinato campo e, se la condizione si avvera, di visualizzare un certo valore.
Mi aiuto con una screenshot. Ho caricato anche la base di dati di esempio da me utilizzata.
Francamente non è importante, come nell'esempio riportato, che la condizione sia proprio sulla data. Voglio dire potrebbe essere posta anche su un campo testo che a un determinato valore oppure se nullo, restituisca una certa dicitura.
Ho cercato e tentato e, dopo aver letto una serie di discussioni (in particolare QUI e QUI), credo di aver capito che tutto gravita intorno alla funzione (comando?) CASEWHEN.
Avrei dovuto magari (senz'altro) approfondire nella Documentazione HSQL 1.8, ma ... non sono riuscito ... ammetto che è più facile chiedere direttamente.
Cercherò nel frattempo di fare altri tentativi, ma se qualcuno potesse venire in soccorso ...
Grazie in anticipo per l'attenzione!
---EDIT---
Una piccola aggiunta/precisazione: il report da me creato si appoggia su una ricerca/query che cerca/chiede l'ipotetica classifica di un fascicolo. E' possibile inserire, come classifica, 003 oppure 004 (o anche altre classifiche presenti nella tabella originaria, per chi volesse cercare).
Eccomi di nuovo qui, sperando di trovare, come sempre accaduto, aiuto in qualche anima buona e paziente.
La questione attiene ai "rapporti" (o report, che dir si voglia). Ho creato con Apache OpenOffice, munito della vecchia (ma ancora funzionante) estensione Oracle Report Builder, un rapporto.
La mia necessità è quella di porre una condizione in un determinato campo e, se la condizione si avvera, di visualizzare un certo valore.
Mi aiuto con una screenshot. Ho caricato anche la base di dati di esempio da me utilizzata.
Francamente non è importante, come nell'esempio riportato, che la condizione sia proprio sulla data. Voglio dire potrebbe essere posta anche su un campo testo che a un determinato valore oppure se nullo, restituisca una certa dicitura.
Ho cercato e tentato e, dopo aver letto una serie di discussioni (in particolare QUI e QUI), credo di aver capito che tutto gravita intorno alla funzione (comando?) CASEWHEN.
Avrei dovuto magari (senz'altro) approfondire nella Documentazione HSQL 1.8, ma ... non sono riuscito ... ammetto che è più facile chiedere direttamente.
Cercherò nel frattempo di fare altri tentativi, ma se qualcuno potesse venire in soccorso ...
Grazie in anticipo per l'attenzione!
---EDIT---
Una piccola aggiunta/precisazione: il report da me creato si appoggia su una ricerca/query che cerca/chiede l'ipotetica classifica di un fascicolo. E' possibile inserire, come classifica, 003 oppure 004 (o anche altre classifiche presenti nella tabella originaria, per chi volesse cercare).
- Allegati
-
- Istruttoria_005-002_Rapporti-report_Condizione campo report.odb
- (105.49 KiB) Scaricato 114 volte
OpenOffice 4.1.15 / LibreOffice 7 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)
"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)
Re: Stampare un rapporto (o report) con un campo condizionat
Forse mi sto avvicinando gradualmente alla soluzione. Forse, ripeto.
Condivido gli sviluppi.
Ho cercato di lavorare direttamente alla radice, ossia sulla ricerca/query per trovare la corretta sintassi del comando.
Innanzitutto ho compreso che il comando / la funzione deve essere impartita a livello della riga "Campo", no quindi in "Criteri" o altra posizione.
Poi mi sto trovando meglio con CASE WHEN piuttosto che con CASEWHEN.
Con un codice del tipo:
la ricerca/query viene lavorata e il risultato è restituito.
Sono passato successivamente al rapporto (report) e, visualizzata la struttura dello stesso, ho creato un "Campo testo" con dentro la seguente stringa:
Il report lavora l'istruzione e l'informazione è restituita.
Adesso passo a vedere come si comporta con i campi data ...
Condivido gli sviluppi.
Ho cercato di lavorare direttamente alla radice, ossia sulla ricerca/query per trovare la corretta sintassi del comando.
Innanzitutto ho compreso che il comando / la funzione deve essere impartita a livello della riga "Campo", no quindi in "Criteri" o altra posizione.
Poi mi sto trovando meglio con CASE WHEN piuttosto che con CASEWHEN.
Con un codice del tipo:
Codice: Seleziona tutto
CASE WHEN "StatoProcedimento" = 'improcedibile' THEN 'Yes' ELSE 'No' END
Sono passato successivamente al rapporto (report) e, visualizzata la struttura dello stesso, ho creato un "Campo testo" con dentro la seguente stringa:
Codice: Seleziona tutto
CASE WHEN "StatoProcedimento" = 'improcedibile' THEN 'Yes' ELSE 'No' END
Adesso passo a vedere come si comporta con i campi data ...
OpenOffice 4.1.15 / LibreOffice 7 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)
"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)
Re: Stampare un rapporto (o report) con un campo condizionat
Ulteriore aggiornamento ... sperando che qualcuno poi venga in mio aiuto!
Sono riuscito a far lavorare anche il campo data, in questo modo dal campo all'interno della struttura del report:
Passando invece dalla (GUI della) ricerca/query mi sono accorto che bisogna dare:
Aprendo la ricerca/query in SQL, insomma, EMPTY viene trasformato in NULL.
Adesso ho questi altri due problemi:
Sono riuscito a far lavorare anche il campo data, in questo modo dal campo all'interno della struttura del report:
Codice: Seleziona tutto
CASE WHEN "DataScadenzaFascicolo" IS NOT NULL THEN 'Yes' ELSE 'No' END
Codice: Seleziona tutto
CASE WHEN "DataScadenzaFascicolo" IS NOT EMPTY THEN 'Yes' ELSE 'No' END
Adesso ho questi altri due problemi:
- come gestire i campi booleani? cioè qual è la sintassi corretta per far leggere VERO/TRUE/1 e FALSO/FALSE/0 e valore nullo?
- devo far lavorare questo comando: "se la data scadenza fascicolo è nulla/vuota, allora spazio vuoto, altrimenti scrivi proprio la data scadenza fascicolo" (non riesco a far funzionare la condizione altrimenti ...).
OpenOffice 4.1.15 / LibreOffice 7 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)
"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)
Re: Stampare un rapporto (o report) con un campo condizionat
Ciao, risposta "al volo".
Se l'espressione condizionale viene impostata sul campo della query che sta alla base del report, in quest'ultimo non c'è da impostare proprio niente.
Se l'espressione condizionale viene impostata sul campo della query che sta alla base del report, in quest'ultimo non c'è da impostare proprio niente.
charlie
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
Re: Stampare un rapporto (o report) con un campo condizionat
Infatti credo di aver capito che posso/debbo agire o nell'una o nell'altro, in alternativa; altrimenti sarebbe inutile e sovrabbondante.charlie ha scritto:Ciao, risposta "al volo".
Se l'espressione condizionale viene impostata sul campo della query che sta alla base del report, in quest'ultimo non c'è da impostare proprio niente.
Il problema è che, per esempio, non riesco a far passare questa istruzione:
Codice: Seleziona tutto
CASE WHEN "DataScadenzaFascicolo" IS EMPTY THEN 'vuoto' "DataScadenzaFascicolo" END
Lavorando a livello di query la condizione viene accettata (cioè non ottengo errori all'atto del salvataggio della stessa); tuttavia lanciando la ricerca si produce un errore che non sono in grado di decifrare e la data, ovviamente, non è restituita.
Spero di essermi spiegato e grazie del tuo tempo!
OpenOffice 4.1.15 / LibreOffice 7 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)
"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)
Re: Stampare un rapporto (o report) con un campo condizionat
Nelle funzioni SQL tutti i parametri devono essere dello stesso tipo. Non ci possono essere date con stringhe o numeri.
In alternativa bisogna ricorrere alle funzioni di conversione.
In alternativa bisogna ricorrere alle funzioni di conversione.
charlie
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
Re: Stampare un rapporto (o report) con un campo condizionat
Ok! Prima lezione/spiegazione acquisita: non posso mescolare nelle funzioni dati con formato diverso. Mi sembra che, secoli - ahimè - or sono, programmando in Dbase III Plus, si imponeva la stessa prescrizione (ricordo le mitiche DTOC() e CTOD() ... se la memoria non mi tradisce).charlie ha scritto:Nelle funzioni SQL tutti i parametri devono essere dello stesso tipo. Non ci possono essere date con stringhe o numeri.
D'accordo.charlie ha scritto:In alternativa bisogna ricorrere alle funzioni di conversione.
Mi sono messo allora alla ricerca, a questo vuoi spingermi, giusto? Devo arrivarci da solo e piano piano. Hai ragione: per imparare al meglio bisogna sbagliare, correggere, riprovare e tentare, poi si capisce per bene.
Quindi ho cercato ... sempre partendo dall'assunto che lavorerò a livello di query/ricerca e, semmai, andrò a vedere il codice SQL della query/ricerca una volta passata correttamente la funzione, così da inserire il codice medesimo direttamente nel campo del report. Ma questo verrà dopo.
Dicevo, spero vorrai seguirmi nel ragionamento e nella ricerca, mi sono messo alla caccia della funzione per convertire un campo in formato testo.
Ho incontrato CONVERT(), ma non sono riuscito a farlo lavorare sulla query: la funzione era accettata nel campo, però all'atto di lanciare l'interrogazione ricevevo un errore, per me non decifrabile.
Ho cercato ancora e, dopo ulteriori tentativi (passando anche per CAST()), sono arrivato da QUI a: TO_CHAR
Sto per giungere alla conclusione, eh.
Vado quindi nella mia ricerca/query e, con trepidazione, digito:
Codice: Seleziona tutto
CASE WHEN "DataScadenzaFascicolo" IS EMPTY THEN 'data non precisata' ELSE TO_CHAR( "DataScadenzaFascicolo", 'DD-MM-YYYY' ) END
Codice: Seleziona tutto
CASE WHEN "DataScadenzaFascicolo" IS EMPTY THEN 'data non precisata' ELSE TO_CHAR( "DataScadenzaFascicolo", 'DD/MM/YYYY' ) END
Funziona!!!
Grazie, charlie, per avermi instradato e indotto a cercare e provare!
Ma le mie peripezie non sono finite ... adesso devo lavorare con un campo numerico e fare la stessa cosa, ossia porre la stessa questione: se il campo numerico è vuoto, allora scriverò "nessun importo fornito", altrimenti "restituire l'importo".
Vediamo se trovo il modo ...
Vado bene per ora?
Detto tra noi, quello che mi duole è che non capisco assolutamente niente di macro e per trovare le funzioni da sfruttare non so bene cercare "dentro" la documentazione da te indicata. Sono ancora troppo troppo imbranato e non so se acquisirò mai quella minima sicurezza e preparazione necessarie ... peccato.
Vorrei tanto tornare a dedicarmi allo studio, ma ... sono dirottato altrove ... mah.
OpenOffice 4.1.15 / LibreOffice 7 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)
"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)
Re: Stampare un rapporto (o report) con un campo condizionat
benissimo direi .markinson ha scritto:Vado bene per ora?
per le operazioni "normali" non sono indispensabili, ma talvolta aiutano.markinson ha scritto:quello che mi duole è che non capisco assolutamente niente di macro
non è una documentazione molto "friendly" e quindi non aiuta.markinson ha scritto:non so bene cercare "dentro" la documentazione da te indicata.
charlie
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
-
- Messaggi: 104
- Iscritto il: sabato 10 aprile 2021, 13:28
Re: Stampare un rapporto (o report) con un campo condizionat
L'ultima versione dell'hsqldb è questa (2.6.1):
http://www.hsqldb.org/doc/guide/index.html
http://www.hsqldb.org/doc/guide/index.html
LibreOffice 7.3.0 -- Linux 5.16.4-arch
Re: Stampare un rapporto (o report) con un campo condizionat
Sì, ma la versione incorporata in Base è ancora la 1.8.marcocurreli ha scritto:L'ultima versione dell'hsqldb è questa (2.6.1):
http://www.hsqldb.org/doc/guide/index.html
charlie
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
-
- Messaggi: 104
- Iscritto il: sabato 10 aprile 2021, 13:28
Re: Stampare un rapporto (o report) con un campo condizionat
Io ho libreoffice 7.2. Come faccio a sapere la versione di hsqldb incorporato?
Trovato: https://ask.libreoffice.org/t/how-do-i- ... on/23024/2
versione 1.8 anche nella 7.2
Trovato: https://ask.libreoffice.org/t/how-do-i- ... on/23024/2
versione 1.8 anche nella 7.2
LibreOffice 7.3.0 -- Linux 5.16.4-arch
Re: Stampare un rapporto (o report) con un campo condizionat
- Conosco Base da 10 anni e la versione di HSQLDB non è mai cambiata né in OO né in LO.
- Qualche versione fa LO aveva introdotto Firebird come motore predefinito, conservando comunque anche l'opzione HSQLDB. Vedo che adesso è sparito, segno che gli sviluppatori hanno capito di essere caduti dalla padella alla brace.
- Base può collegarsi a versioni più recenti di HSQLDB tramite i connettori, oppure ricorrendo allo splitDataBase viewtopic.php?f=13&t=7244&p=38278&hilit ... rlo#p38222
charlie
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
-
- Messaggi: 104
- Iscritto il: sabato 10 aprile 2021, 13:28
Re: Stampare un rapporto (o report) con un campo condizionat
Grazie charlie. L'ho messo nei preferiti. La funzione che mi mancava per il mio database era datediff.
LibreOffice 7.3.0 -- Linux 5.16.4-arch