Riempimento campo con CASEWHEN

Discussioni sulle caratteristiche di database
Rispondi
paolokap
Messaggi: 353
Iscritto il: giovedì 9 ottobre 2014, 13:09

Riempimento campo con CASEWHEN

Messaggio da paolokap »

Ecco il mio problema:
ho un data base con un campo data (Data) dove appunto inserisco una certa data (digitazione obbligatoria).
Poi ho un campo boleano SI/NO che chiamo si/no e voglio definire con un query un altro campo data che chiamo DATA1. Voglio avere la seguente situazione:

se si/no=si
allora
DATA1=Data.

Se si/no=no
allora
DATA1=ci posso mettere la data che dico io.

L'idea è questa: con la funzione CASEWHEN faccio:

Codice: Seleziona tutto

CASEWHEN(si/no=1,DATA1=DATA, NULL) 
Il problema è:
nel caso poi che si/no=no mi sa che anche mettendo NULL non posso scrivere la data che voglio visto che è una query, giusto?
Quali consigli? ( a parte abbandonare questi database :D )
LibreOffice 7.4 Kubuntu 22.04 LTS
Avatar utente
charlie
Site Admin
Site Admin
Messaggi: 8807
Iscritto il: mercoledì 19 dicembre 2012, 10:50
Contatta:

Re: Riempimento campo con CASEWHEN

Messaggio da charlie »

Ciao, la sintassi non si può piegare come si vuole:

Codice: Seleziona tutto

CASEWHEN ("si/no" = 1, "data", NULL )
e non si può digitare un valore.

Forse se spieghi cosa vuoi fare e alleghi degli esempi di database ci si può capire meglio.
(Magari rimanendo in questo forum).
charlie
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
paolokap
Messaggi: 353
Iscritto il: giovedì 9 ottobre 2014, 13:09

Re: Riempimento campo con CASEWHEN

Messaggio da paolokap »

Nel messaggio ho sbagliato a scrivere l'istruzione ma nel database l'avevo scritta giusta.

Allego l'esempio anche se non credo che serva. Vediamo se riesco a spiegarmi
Il fatto è che, come dall'esempio nella query ricerca1, ho una data nel campo data e una data nel campo data2. Queste due date al 99% corrispondono sempre cioè la data inserita nel campo data e data2 sono quasi sempre le stesse. Quindi per evitare di inserire due volte la stessa data volevo "collegarle" tra loro. Si parte sempre dal campo data.

Però potrebbe accadere il caso che le due date non coincidano e allora devo poter inserire la data giusta nel campo data2.
Se faccio la query come da esempio e nel caso che le due date non coincidano ottengo che il campo data2 sia vuoto, ma poi non posso inserire nulla! e quindi alla fine tutto il ragionamento viene meno.

L'unica cosa che mi viene in mente è quella di creare un campo data3 direttamente nella tabella1 e poi fare la query. In questo modo se le due date coincidono lascio il campo data3 vuoto altrimenti, se non coincidono posso utilizzare il campo data3 (un po' come una riserva). Visto che sono piutosto scarso con questi database non mi viene in mente nient'altro.
E comunque Charlie grazie sempre :D
Allegati
test.odb
(4.31 KiB) Scaricato 115 volte
LibreOffice 7.4 Kubuntu 22.04 LTS
Avatar utente
charlie
Site Admin
Site Admin
Messaggi: 8807
Iscritto il: mercoledì 19 dicembre 2012, 10:50
Contatta:

Re: Riempimento campo con CASEWHEN

Messaggio da charlie »

Ma la data da conservare è sempre una delle due? data1=data2 se sono uguali oppure solo data2 se sono diverse?

Codice: Seleziona tutto

CASEWHEN( "data1" = "data2", "data1", "data2" )
charlie
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
paolokap
Messaggi: 353
Iscritto il: giovedì 9 ottobre 2014, 13:09

Re: Riempimento campo con CASEWHEN

Messaggio da paolokap »

Vanno conservate tutte e due in ogni caso.

Cerco di chiarire il motivo per il quale tutto sto casino nel caso reale che sto cercando di affrontare.
Identifichiamo i campi da esempio allegato a caso reale.
Campo Data = Data operazione
Data2= Data versamento RA

Data operazione in genere (diciamo quasi sempre) e data versamento RA coincidono.

Ora Data versamento dovrà comparire in una tabella senza" data versamento RA", e in un altra con "data versamento RA" e in questo caso i due campi devo essere ben distinti (che poi coincidano le date è un'altra questione). Quindi il problema è che se non coincidono devo necessariamente inserire in "data versamento RA" la data effettiva.
Insomma tutto sto casino per non inserire la stessa data in due campi ma solo quando è necessario (quando sono diverse)

Però mo mi sto preoccupando :o Che cosa intendi quando mi chiedi se devo conservare le date??? Perché i dati così inseriti vanno persi?? (non sia mai sto perdendo un sacco di tempo a cercare di fare sto databasae che poi lo devo collegare a a calc)
LibreOffice 7.4 Kubuntu 22.04 LTS
Avatar utente
charlie
Site Admin
Site Admin
Messaggi: 8807
Iscritto il: mercoledì 19 dicembre 2012, 10:50
Contatta:

Re: Riempimento campo con CASEWHEN

Messaggio da charlie »

Non era nel senso di perderle che parlavo di conservare le date, ma nel senso di salvarle.
Comunque, credo tu stia correndo dietro ad un falso problema. Al momento pratico non digiterai nessuna data perché non la scriverai a mano nella tabella ma la sceglierai da una maschera nel formulario.
Vedi l'esempio che allego, scegliere una data con un clic equivale (a livello fatica) a fare un clic su una casella di spunta.
Quindi io conserverei entrambe le date, senza casella di spunta, scegliendo la stessa data se coincidono.
Allegati
Test.odb
(11.7 KiB) Scaricato 121 volte
charlie
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
paolokap
Messaggi: 353
Iscritto il: giovedì 9 ottobre 2014, 13:09

Re: Riempimento campo con CASEWHEN

Messaggio da paolokap »

:D Grazie Charlie sei una risorsa per tutti noi
LibreOffice 7.4 Kubuntu 22.04 LTS
paolokap
Messaggi: 353
Iscritto il: giovedì 9 ottobre 2014, 13:09

Re: Riempimento campo con CASEWHEN

Messaggio da paolokap »

Parto dal consiglio che mi hai dato sul database completo di cui abbiamo discusso in altro post.
Ho guardato meglio la tua proposta ma non credo di averla capita. probabilmente sono stato io che non mi sono spiegato bene.

Allora come hai visto nell'altro post ho due campi data:
"data operazione"
"data versamento RA"

Poiché come avevo già detto queste due date quasi sempre coincidono mi sembra logico, sia per risparmiare un inserimento sia per evitare errori, che le due date siano collegate, nel senso che, quando inserisco la "data operazione" automaticamente la stessa data compare nel campo "data versamento RA". Così risparmio tempo e non faccio errori.

Ora il problema nascerebbe nel caso in cui le due date non coincidano. Se collego le due date con CASEWHEN per i motivi di cui prima, e se ho capito bene, nel caso di date diverse non potrò inserire nel campo "data versamento RA" una nuova data perché CASEWHEN non mi farebbe inserire nulla (funziona come un campo calcolato, giusto?)
A questo punto, almeno di altre soluzioni non troppo articolate, ho pensato di creare un altro campo data "data versamento RA (1)" che nel caso in cui le date siano diverse mi permetterebbe di inserire la data che è diversa da quella inserita nel campo "data operazione".
Quindi avrò due situazioni:

"data operazione"="data versamento RA" mi comporta che campo "data versamento RA"= sarà riempito e "data versamento RA (1)"=vuoto (perché non inserisco nulla)

"data operazione"NON="data versamento RA" mi comporta che campo "data versamento RA"= vuoto (perché ci pensa CASEWHEN) e "data versamento RA (1)"=sarà riempito(ce la metto io)

Poiché queste tabella la dovrò importare in calc ho pensato poi, in calc, di creare una nuova colonna che è unione dei due campi campo "data versamento RA" e "data versamento RA (1)" così dovrei avere un'unica colonna con tute le date. (almeno questa è l'intenzione)
LibreOffice 7.4 Kubuntu 22.04 LTS
Avatar utente
charlie
Site Admin
Site Admin
Messaggi: 8807
Iscritto il: mercoledì 19 dicembre 2012, 10:50
Contatta:

Re: Riempimento campo con CASEWHEN

Messaggio da charlie »

Scusami, ma mi pare che ti stia complicando la vita. Due date uguali o diverse, con le caselle di riepilogo è facile inserirle (e correggerle se servisse).
Allegati
Schermata 2019-02-27 alle 11.48.19.png
charlie
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
Rispondi