Pagina 1 di 1

Ricerca 'Right Outer Join' che AOO non esegue

Inviato: mercoledì 29 luglio 2020, 20:09
da markinson
Salve a tutti!

Poche e brevi righe, perché sono stravolto dopo una giornata di lavoro e di combattimento sul campo di battaglia del mio dbase realizzato e mantenuto con Apache OpenOffice versione 4.1.7.
Per cercare aiuto, ho preso la base di dati originale e ho tentato di ripulirla di tutte le informazioni sia sensibili sia di quelle non utili ai fini della presente richiesta di aiuto.
Il db è allegato in un successivo post, causa limiti di upload per ogni singolo intervento.

Il mio obiettivo è quello di avere i dati di tutti i fascicoli aperti, insieme, laddove vi siano state delle operazioni, con i vari e relativi stati del procedimento.
La particolarità che ho aggiunto sta nel fatto che non mi occorrono tutti gli stati del procedimento, ma soltanto quelli flaggati come "validi", intendendo per "validi" quegli stati del procedimento che sono attualmente correnti, in essere.

Ho preparato, in modalità guidata, una query (altrimenti non vi sarei riuscito), il cui codice SQL è il seguente:

Codice: Seleziona tutto

SELECT "tbl_FascicoloPrincipale"."ComuniFascicolo", "tbl_FascicoloPrincipale"."ID", "tbl_StatoProcedimento"."ID", "tbl_StatoProcedimento"."DataProcedimento", "tbl_StatoProcedimento"."StatoProcedimento", "tbl_StatoProcedimento"."NoteProcedimento", "tbl_StatoProcedimento"."Valido" FROM { OJ "tbl_StatoProcedimento" RIGHT OUTER JOIN "tbl_FascicoloPrincipale" ON "tbl_StatoProcedimento"."FascicoloPrincipale" = "tbl_FascicoloPrincipale"."ID" } ORDER BY "tbl_FascicoloPrincipale"."ComuniFascicolo" ASC
Ossia, come mi hanno già insegnato charlie e Zago_87 in altre occasioni, con una relazione destra (RIGHT OUTER JOIN).
Quando mando in esecuzione la query "Qry_Fascicoli_StatoProcedimento" l'esito è il seguente:
QRY_000-1.jpg
Quindi clicco sul pulsante per andare all'ultimo record e ottengo:
QRY_001-1.jpg
Ossia il campo del primo record diventa bianco e l'indicatore del numero dei record resta ancora a "74*".

Infine, se provo a scorrere i record con la rotellina del mouse il risultato è quello che vedete qui sotto:
QRY_002.jpg
In LibreOffice, invece, funziona tutto.
Capito, allora utilizzare LO e non farsi troppi problemi.
Il problema, scusate la ripetizione, è che adesso sono vincolato ad AOO. Almeno per il momento.

Di grazia, qualcuno può verificare se il fenomeno si ripete con il proprio AOO e, magari, aiutarmi a capire dove sto sbagliando?
Anche perché pure oggi AOO è andato di nuovo in tilt come più o meno ho descritto nel post "Formulario: errore 'SfxBaseModel::loadFromStorage'", che - se avrò forza - tenterò di aggiornare.

Grazie di cuore per l'attenzione!

Re: [RISOLTO] Ricerca 'Right Outer Join' che AOO non esegue

Inviato: mercoledì 29 luglio 2020, 20:10
da markinson
Il dbase è quello allegato al presente intervento.
Grazie!

Re: Ricerca 'Right Outer Join' che AOO non esegue

Inviato: mercoledì 29 luglio 2020, 21:43
da Zago_87
Mi spiace ma non ho AOO installato e se possibile eviterei di reinstallarlo, io ti consiglio di passare a LO visti anche i precedenti, come mai dici che ora non puoi farlo?
Curiosità :mrgreen:

Re: Ricerca 'Right Outer Join' che AOO non esegue

Inviato: mercoledì 29 luglio 2020, 22:32
da markinson
:D
Per due ordini di motivi:
  • dove lavoro ho strappato la concessione di installare AOO nelle postazioni che dovrebbero usare il dbase in principio da me architettato (così ero sicuro che l'ambiente fosse stato e rimasto sempre lo stesso rispetto a quello di sviluppo che ho a casa);
  • dovrei rivedere tutte i campi che attingono i valori dal menù a tendina, come discusso qui, in particolare per sanare le differenze tra AOO e LO qui descritte.
Il problema di fondo, oltre alla mia impreparazione, è che ho urgenza a provvedere; tuttavia ritrovarmi con un ambiente fragile (non voglio offendere nessuno, men che mai gli sviluppatori/amanti di AOO!!!) mi sta facendo molto riflettere.

Per dire: anche oggi, mentre stavo lavorando, il dbase all'improvviso ha rallentato in modo drastico, quindi ha restituito l'errore che ho riportato qui e addio alla base di dati.

:roll:

Re: Ricerca 'Right Outer Join' che AOO non esegue

Inviato: giovedì 30 luglio 2020, 7:36
da charlie
Ho aperto il database in OO.
Ho riscontrato solo il problema allo scorrimento della finestra della query (nuovo record).
Un paio di considerazioni:
  • Una volta fatta la query prova ad agire su un formulario fatto su di essa anziché direttamente
  • Quando uso Base uso LO perché OO ai primi 'incontri' mi dava problemi di crash. Vista l'importanza del lavoro che stai facendo, ti consiglio di seguire la stessa strada.Ti costerà a convincere qualcuno sull'ambiente di lavoro ma risparmierai ulteriori grattacapi.
    Gli altri problemi per appianare differenze fra OO e LO si risolvono.

Re: Ricerca 'Right Outer Join' che AOO non esegue

Inviato: giovedì 30 luglio 2020, 8:46
da markinson
Grazie ancora una volta per la risposta, le verifiche e i suggerimenti. ;)

Perdonami, ma - per la curiosità di capire - hai scritto:
charlie ha scritto:Ho aperto il database in OO.
Ho riscontrato solo il problema allo scorrimento della finestra della query (nuovo record).
Fai riferimento alla circostanza in cui "il campo del primo record diventa bianco e l'indicatore del numero dei record resta ancora a '74*'" (seconda screenshot) oppure al secondo fenomeno dove tutta la finestra diventa bianca e il contatore dei record assume il valore "-1" (terza screenshot)?

Alcuni ulteriori punti (approfitto!).
charlie ha scritto:Una volta fatta la query prova ad agire su un formulario fatto su di essa anziché direttamente
Ho creato una nuova maschera e "sotto" ho messo la query che non funziona (mi siano passate le espressioni imprecise). Si ripresenta il discorso della visualizzazione dei soli primi 40 record, ma cliccando sulla freccia per andare all'ultimo record, stavolta va sino in fondo. Tuttavia l'ultimo record visualizzato ripropone parzialmente i dati del primo. Faccio prima con una screenshot.
QRY_003.jpg
Allora ho ricreato da zero la ricerca, stando attendo persino alla sequenza dei campi come da proporre e, sorpresa, l'interrogazione funziona!
Se torno sulla ricerca che dà problemi, l'inconveniente si ripresenta.
Quando ieri ho rifatto da zero la query, sulla base di dati completa, l'errore si ripresentava in continuazione. :knock:

Quindi mi sono buttato sul codice SQL ed ecco gli esiti.

Codice SQL della ricerca che dà problemi.

Codice: Seleziona tutto

SELECT "tbl_FascicoloPrincipale"."ComuniFascicolo", "tbl_FascicoloPrincipale"."ID", "tbl_StatoProcedimento"."ID", "tbl_StatoProcedimento"."DataProcedimento", "tbl_StatoProcedimento"."StatoProcedimento", "tbl_StatoProcedimento"."NoteProcedimento", "tbl_StatoProcedimento"."Valido" FROM { OJ "tbl_StatoProcedimento" RIGHT OUTER JOIN "tbl_FascicoloPrincipale" ON "tbl_StatoProcedimento"."FascicoloPrincipale" = "tbl_FascicoloPrincipale"."ID" } ORDER BY "tbl_FascicoloPrincipale"."ComuniFascicolo" ASC
Codice SQL della ricerca rifatta, identica alla precedente, ma che non restituisce errori di sorta.

Codice: Seleziona tutto

SELECT "tbl_FascicoloPrincipale"."ComuniFascicolo", "tbl_FascicoloPrincipale"."ID", "tbl_StatoProcedimento"."ID", "tbl_StatoProcedimento"."DataProcedimento", "tbl_StatoProcedimento"."StatoProcedimento", "tbl_StatoProcedimento"."NoteProcedimento", "tbl_StatoProcedimento"."Valido" FROM { OJ "tbl_StatoProcedimento" RIGHT OUTER JOIN "tbl_FascicoloPrincipale" ON "tbl_StatoProcedimento"."FascicoloPrincipale" = "tbl_FascicoloPrincipale"."ID" } ORDER BY "tbl_FascicoloPrincipale"."ComuniFascicolo" ASC
Allego di nuovo il dbase con le ulteriori interrogazioni realizzate.
charlie ha scritto:Gli altri problemi per appianare differenze fra OO e LO si risolvono.
Con tutta e forte probabilità seguirò la strada da te indicata, mantenendo la curiosità di vedere se quanto sviluppato con LO gira anche in ambiente AOO.

GRAZIE!

Re: Ricerca 'Right Outer Join' che AOO non esegue

Inviato: giovedì 30 luglio 2020, 10:41
da charlie
Probabilmente la query va in "confusione" perché si va a scrivere un nuovo record in ciascuna delle 2 tabelle.
Se si deve immettere un nuovo dato secondo me è opportuno:
  • Usare un formulario di immissione per ogni tabella "secondaria" ed agire prima su quelle.
  • Usare un formulario di immissione per la tabella principale attingendo da quelle secondarie i dati già inseriti in precedenza
  • Usare le query attraverso dei formulari di visualizzazione inibendo la modifica dei record.
Con queste piccole regole dovrebbe funzionare tutto anche in OO.

P.S. ti prego di essere meno prolisso, non serve a niente allegare 2 volte lo stesso codice dicendo che da una parte funziona e dall'altra no. Grazie.

Re: Ricerca 'Right Outer Join' che AOO non esegue

Inviato: giovedì 30 luglio 2020, 11:36
da Zago_87
Premesso che condivido (e come non potrei?) quel che dice Charlie, non capisco bene la sintassi della tua query.
Dico subito che ho sempre preferito scrivere a mano le query perché non mi piace come le scrive in automatico AOO o LO passando dal gestore grafico, a volte mi creava proprio problema perché il risultato non era quello che speravo, magari era mia inesperienza, ma ho sempre evitato quel metodo e mi sono sempre trovato bene, anzi, anche se con un po' di fatica per iniziare ora credo di cavarmela meglio di quanto avrei fatto continuando con il metodo grafico (mia opinione).

Detto questo e avendo spulciato un po' in rete ho trovato che la sintassi usata nel tuo DB è quella di "escape", non ho ben capito cosa voglia dire ma non è una istruzione nativa per Oracle e non è interoperativa, riporto sempre quanto trovato in rete. La sintassi nativa della tua query dovrebbe essere invece, credo:

Codice: Seleziona tutto

SELECT "tbl_FascicoloPrincipale"."ComuniFascicolo", "tbl_FascicoloPrincipale"."ID", "tbl_StatoProcedimento"."ID", "tbl_StatoProcedimento"."DataProcedimento", "tbl_StatoProcedimento"."StatoProcedimento", "tbl_StatoProcedimento"."NoteProcedimento", "tbl_StatoProcedimento"."Valido"
FROM "tbl_StatoProcedimento" JOIN "tbl_FascicoloPrincipale" ON "tbl_StatoProcedimento"."FascicoloPrincipale" = "tbl_FascicoloPrincipale"."ID"
ORDER BY "tbl_FascicoloPrincipale"."ComuniFascicolo" ASC
So di essermi avventurato in un terreno a me ignoto, ma da quel poco che ho intuito (capito è un parolone) AOO ti ha tradotto dalla grafica al codice usando una sintassi che potrebbe generare problemi in quanto non nativa e non funzionante su tutti i prodotti che sfruttano quel motore.

Con il dubbio enorme di aver preso fischi per fischi, di aver sbagliato il codice non avendo potuto provarlo, spero di aver centrato il problema.
Quelle graffe e quel OJ proprio mi puzzano :mrgreen:
Fammi sapere se ho scritto bene la query e soprattutto se risolve il problema ;)

Re: Ricerca 'Right Outer Join' che AOO non esegue

Inviato: giovedì 30 luglio 2020, 12:10
da markinson
Grazie a entrambi per gli interventi e i contenuti espressi, di cui prendo atto.

Zago_87 ho passato il tuo codice alla query e questa viene eseguita, soltanto che sono restituiti 95 record anziché i dovuti 100.
Al momento purtroppo non posso verificare quali siano stati tagliati fuori.

Lanciando di nuovo la ricerca che provocava gli inconvenienti segnalati, stamattina e stavolta tutto è andato a buon fine, senza che io abbia modificato nulla.

Re: Ricerca 'Right Outer Join' che AOO non esegue

Inviato: giovedì 30 luglio 2020, 12:22
da charlie
@Zago_87 la tua sintassi è relativa ad una relazione interna (quella normale) fra le tabelle, infatti seleziona meno record. Gli oj e le graffe sono appunto le relazione destra che serve in questo caso a @markinson.

Re: Ricerca 'Right Outer Join' che AOO non esegue

Inviato: giovedì 30 luglio 2020, 12:30
da Zago_87
Mi sono mangiato il RIGHT nel modificarla, quello che intendevo era che le graffe e l'OJ potevano, da quanto letto altrove, dare origine ad errori su alcuni motori o alcuni applicativi.

Aggiungendo semplicemente il RIGHT prima di JOIN al codice che ho postato dovrebbe restituire il risultato corretto.
Scusate per il banale errore nel modificare la sintassi.

Re: Ricerca 'Right Outer Join' che AOO non esegue

Inviato: giovedì 30 luglio 2020, 14:56
da charlie
Hai colto nel segno, la query funziona bene in OO. :super:
Attenzione però a non aprirla in modo 'modifica' grafico perché OO, ma anche LO, aggiungono automaticamente oj e graffe ed un eventuale salvataggio vanifica la fatica.

Re: Ricerca 'Right Outer Join' che AOO non esegue

Inviato: giovedì 30 luglio 2020, 15:33
da Zago_87
Benissimo, vuol dire che qualcosa ci ho capito davvero :mrgreen:

Spero Markinson confermi il tutto anche per il DB reale a questo punto.

Fatto tesoro di questo credo che sia importante per te ricontrollare la sintassi di tutti i codici SQL che utilizzi, a partire dalle query, perché a questo punto le varie anomalie che segnali nei tuoi post potrebbero essere tutte frutto di codice non ben interpretato. Almeno io lo spero per te.
In fondo, come detto anche da Charlie in altro post, si tratta di apprendere l'utilizzo di pochi concetti per poter scrivere in autonomia l'SQL basilare che risolve la maggior parte delle esigenze.

Il mio consiglio non richiesto è quindi, passa a LO il prima possibile perché più aspetti e peggio diventa l'adattamento, e ricontrolla il codice SQL cercando di scriverlo tu nella maniera più semplice possibile.

Re: Ricerca 'Right Outer Join' che AOO non esegue

Inviato: venerdì 31 luglio 2020, 8:29
da markinson
Zago_87 ha scritto:Aggiungendo semplicemente il RIGHT prima di JOIN al codice che ho postato dovrebbe restituire il risultato corretto.
Confermo: il risultato viene corretto.
Grazie ancora.
Ogni consiglio o suggerimento è sempre più che bene accetto. ;)