Partenopeo.net - Forum Calcio Napoli

Off-topic => Techland => Topic aperto da: peppere - 09 Ottobre, 2013, 20:47:05 pm

Titolo: microsoft access
Inserito da: peppere - 09 Ottobre, 2013, 20:47:05 pm
una domanda agli esperti informatici, lo uso da poco per lavoro e sono in difficoltà

ho un database che pesca da una sorgente esterna e dopo una serie di query mi da una cosa del tipo:

Pippo   bello                 alto             biondo
Pippo   introverso        gay             juventino
Ciccio   chiatto             alto             bruno
Ciccio   muccus         forgioniano     rattus

cioè per lo stesso soggetto mi da su una riga caratteristiche fisiche, sulla seconda caratteriali... e così via per migliaia di righe.
Naturalmente è un esempio giusto rendere un'idea.

io vorrei avere le caratteristiche sia fisiche che caratteriali su una stessa riga:

Pippo   bello                 alto             biondo      introverso        gay             juventino
Ciccio   chiatto             alto             bruno         muccus         forgioniano     rattus

c'aggia fa? non ho idea
Titolo: Re:microsoft access
Inserito da: djcarmine - 09 Ottobre, 2013, 21:13:14 pm
posta la query che usi, comunque ti anticipo che ci vuole una join sulla chiave che sarebbe, in tale esempio, la colonna che contiene pippo, franco ciccio ecc.
Titolo: Re:microsoft access
Inserito da: peppere - 09 Ottobre, 2013, 21:25:49 pm
posta la query che usi, comunque ti anticipo che ci vuole una join sulla chiave che sarebbe, in tale esempio, la colonna che contiene pippo, franco ciccio ecc.
non faccio query in sql, non ne sono capace. Faccio query guidate in modalità struttura, ne sono almeno una decina.
Parto da dati che ho a sistema, 2 sorgenti diverse, li porto in locale facendo refresh settimanali (lavorando dal sistema direttamente va lentissimo perchè so milioni di dati) o giornalieri e poi smanetto fino ad arrivare al problema che ti dicevo.
Proprio perchè sono tabelle linkate a dei server non uso chiavi, non me le fa scegliere e quindi sono al problema posto.

al limite potrei pensare di sdoppiare la tabellona in 2 una con le caratteristiche fisiche e una con quelle caratteriali e crearne una terza mettendo in relazione Pippo cu Pippo.
ma mi pare na cacata e non saprei farlo comunque
Titolo: Re:microsoft access
Inserito da: djcarmine - 09 Ottobre, 2013, 21:30:18 pm
non saprei pè, io queste pazzielle come access non le conosco :look: . ma questi dati che prendi provengono da un db giusto? da due tabelle diverse, una con le caratteristiche fisiche e l'altra caratteriale, piu o meno nella forma

tabella_fisica (nome, capelli, occhi, pesce, ecc. )
tabella_caratt (umore, sesso, forgionaggine, ecc. )

?
Titolo: microsoft access
Inserito da: falceEmarcello - 09 Ottobre, 2013, 21:33:38 pm
posta la query che usi, comunque ti anticipo che ci vuole una join sulla chiave che sarebbe, in tale esempio, la colonna che contiene pippo, franco ciccio ecc.

Il mio ragazzo :love:


Peppe anche dalla modalita struttura c'e' un pulsante che ti fa passare alla modalita' sql, trovalo premilo e posta la query
Perche' cosi come hai posto la domanda sembra un banalissimo join ma da quello che hai scritto dopo nun se capisc manc o cazz
Titolo: Re:microsoft access
Inserito da: peppere - 09 Ottobre, 2013, 21:41:50 pm
non saprei pè, io queste pazzielle come access non le conosco :look: . ma questi dati che prendi provengono da un db giusto? da due tabelle diverse, una con le caratteristiche fisiche e l'altra caratteriale, piu o meno nella forma

tabella_fisica (nome, capelli, occhi, pesce, ecc. )
tabella_caratt (umore, sesso, forgionaggine, ecc. )

?
no, ho fatto un esempio di merda :asd:

da un server e quindi da una tabella prendo
sia caratteristiche fisiche che caratteriali che però sono su due record diversi

dall'altro piglio attributi di una caratteristica che joino a Pippo e caratteristica stessa

es
server A     

Pippo      strunz

B:
Pippo    grado di stronzaggine
e viene fuori un record

un altro record è:
Pippo      alto   (A)
Pippo      quant'è alto  (B)

e viene fuori un altro record.

io vorrei ottenere
Pippo    strunz     quant'è strunz             alto            quant'è alto

tutto sullo stesso record.
mi so spiegato peggio probabilmente  :chiagnazzarri:

Titolo: Re:microsoft access
Inserito da: peppere - 09 Ottobre, 2013, 21:42:34 pm
ho il portatile aziendale in azienda :ruoss:
Titolo: microsoft access
Inserito da: falceEmarcello - 09 Ottobre, 2013, 21:45:13 pm

no, ho fatto un esempio di merda :asd:

da un server e quindi da una tabella prendo
sia caratteristiche fisiche che caratteriali che però sono su due record diversi

dall'altro piglio attributi di una caratteristica che joino a Pippo e caratteristica stessa

es
server A     

Pippo      strunz

B:
Pippo    grado di stronzaggine
e viene fuori un record

un altro record è:
Pippo      alto   (A)
Pippo      quant'è alto  (B)

e viene fuori un altro record.

io vorrei ottenere
Pippo    strunz     quant'è strunz             alto            quant'è alto

tutto sullo stesso record.

mi so spiegato peggio probabilmente  :chiagnazzarri:


Decisamente :asd:
Dipende tutto se pippo e' pk ( chiave ) e se le due tabelle appartengono allo stesso db, altrimenti nessuno ti garantisce che il pippo alto e' o stess pipp strunz
Titolo: Re:microsoft access
Inserito da: djcarmine - 09 Ottobre, 2013, 21:55:29 pm
Il mio ragazzo :love:


Peppe anche dalla modalita struttura c'e' un pulsante che ti fa passare alla modalita' sql, trovalo premilo e posta la query
Perche' cosi come hai posto la domanda sembra un banalissimo join ma da quello che hai scritto dopo nun se capisc manc o cazz

maestro  :compagni:

ue pè, tu e queste metafore ci stai facendo azzeccare le punte, fai nomi cognomi e numeri se no nun capimm nient :look:
Titolo: microsoft access
Inserito da: falceEmarcello - 09 Ottobre, 2013, 22:01:28 pm

maestro  :compagni:

ue pè, tu e queste metafore ci stai facendo azzeccare le punte, fai nomi cognomi e numeri se no nun capimm nient :look:

Ma sopratutto una tabella che in uno stesso campo ammesca a seconda ra situazione un valore piuttosto che un altro solo chi si affida a munnezza del livello di access la puo' partorire.
Titolo: Re:microsoft access
Inserito da: peppere - 09 Ottobre, 2013, 22:19:33 pm
allo':

da un server ho:
commessa     ciclo lavoro       DataSchedulata di A o B           
1                        A                   1 ago
1                        B                    8 ago

dall'altro ho
commessa    ciclo lavoro         DataPromessa di A o B
1                        A                      3 ago
1                        B                       9 ago

il primo server è in mano ai master scheduler che decidono quando una cosa va fatta (data sched), il secondo è compilato dai planner che dicono effettivamente quando una cosa si fa (data prom) in base a duecentomila variabili.
I cicli A e B avvengono sempre entrambi, uno dopo l'altro

Dopo un po' di query qui e lì, non è così banale come ve la faccio, viene fuori la tabella:
commessa   ciclo    DataSched    Data prom
1                    A          1 ago              3 ago
1                    B           8 ago              9 ago
questo per migliaia di commesse

io vorrei/devo avere per forza

commessa    ciclo    DataSched     DataProm    ciclo   DataSched     DataProm
1                     A         1 ago               3 ago        B          8 ago             9 ago

chiaro?

Titolo: R: microsoft access
Inserito da: peppe9 - 09 Ottobre, 2013, 22:25:23 pm
Messa così è abbastanza banale come diceva Carmine. Una join e fila liscio perché se riesci ad arrivare a quella tabella puoi sicuramente arrivare al tuo obiettivo facendo una query diversa, appunto una join. Poi bisogna vedere bene che intendi, se stiamo capendo il cazzo per la banca dell'acqua

Inviato dal mio GT-I9100 usando Tapatalk
Titolo: Re:R: microsoft access
Inserito da: peppere - 09 Ottobre, 2013, 22:29:11 pm
Messa così è abbastanza banale come diceva Carmine. Una join e fila liscio perché se riesci ad arrivare a quella tabella puoi sicuramente arrivare al tuo obiettivo facendo una query diversa, appunto una join. Poi bisogna vedere bene che intendi, se stiamo capendo il cazzo per la banca dell'acqua

Inviato dal mio GT-I9100 usando Tapatalk
mi pare strano perchè i due cicli per la stessa commessa sono su record separati già nella tabella iniziale che prendo dal server
Titolo: R: microsoft access
Inserito da: peppe9 - 09 Ottobre, 2013, 22:38:21 pm
Si ma se riesci ad arrivare alla tabella a cui arrivi tu, riesci anche ad avere ciò che ti serve visto che cmq una join la fai per forza di cose mettendo sulla stessa riga caratteristiche della prima E della seconda tabella. Poi ti ripeto bisogna vedere il tutto

Inviato dal mio GT-I9100 usando Tapatalk
Titolo: Re:R: microsoft access
Inserito da: peppere - 09 Ottobre, 2013, 22:47:02 pm
Si ma se riesci ad arrivare alla tabella a cui arrivi tu, riesci anche ad avere ciò che ti serve visto che cmq una join la fai per forza di cose mettendo sulla stessa riga caratteristiche della prima E della seconda tabella. Poi ti ripeto bisogna vedere il tutto

Inviato dal mio GT-I9100 usando Tapatalk
la join la faccio perchè so dati che vengono da 2 tabelle diverse.
Ma nel caso dei cicli A e B sono su record diversi già in partenza anche se hanno stessa commessa.

commessa     ciclo lavoro       DataSchedulata di A o B           
1                        A                   1 ago
1                        B                    8 ago

come faccio qui a metterli su una riga, posso mica joinarli visto che sono su due record della stessa tabella?
Titolo: Re:microsoft access
Inserito da: peppere - 09 Ottobre, 2013, 22:48:11 pm
nel dubbio spostate in uncensored, nun se po mai sapè. Provvederò io a bestemmiare di tanto in tanto per tenerci buono south
Titolo: Re:microsoft access
Inserito da: djcarmine - 09 Ottobre, 2013, 23:12:08 pm
però se vuoi/devi necessariamente lavorare a partire dal resultSet

commessa   ciclo    DataSched    Data prom
1                    A          1 ago              3 ago
1                    B           8 ago              9 ago

suona come una cosa che si può risolvere con una self join, praticamente devi fare una query dove joini la tabella con se stessa su "commessa"

però che sistema informatico a zupp e fasul :look:
Titolo: Re:microsoft access
Inserito da: raistlin980 - 10 Ottobre, 2013, 01:10:43 am
Sì joina con se stessa su commessa e su ciclo diverso da ciclo.

Ma io non capirò mai perchè i crestiani devono uccidersi a fare i salti mortali su access quando ce stann i database tantu bell.
Titolo: microsoft access
Inserito da: falceEmarcello - 10 Ottobre, 2013, 07:26:32 am

la join la faccio perchè so dati che vengono da 2 tabelle diverse.
Ma nel caso dei cicli A e B sono su record diversi già in partenza anche se hanno stessa commessa.


commessa     ciclo lavoro       DataSchedulata di A o B           
1                        A                   1 ago
1                        B                    8 ago

come faccio qui a metterli su una riga, posso mica joinarli visto che sono su due record della stessa tabella?

Peppe se, come si evince dalla tabellina che hai postato, per ogni commessa si ha uno o piu' cicli di lavoro allora i dati stanno bene come stanno.
Nel senso che l'entita' commessa e' in relazione (1a n)  con l'entita' ciclo di lavoro che ha, per inciso,  l'attributo dataschedulata.
Ora volere riportare questa cardinalita' a livello di un solo record e' un fattore fortemente denormalizzante, perche' cosa succede se a un certo punto si introduce un ciclo c ? O anche se il ciclo a e' presente e quello b no ?
Il tuo a questo punto e' un problema di visualizzazione ( che col db non c'entra un cazzo ) perche' suppongo che per comodita' tu preferisci vedere i dati di luongo piuttosto che uno a sott a nato.
Questo in linea tecnica andrebbe fatto con l'ausilio di un linguaggio di programmazione che, a partire da quel resultSet fa' un po' di logica e ti sistema i dati come te piace a te.
In access ad esempio ci sono le macro in visual basic che te lo fanno fare.
Posto che per te potrebbe essere un cacamento di cazzo e che, se ho capito bene, a te non interessa un processo totalmente automatico che risolva il problema ( mi sa che devi fare un report o na cos e chest ) allora, sotto determinate condizioni, ad esempio che per ogni commessa siano sempre presenti i cicli a e b (e non altri) puoi fare una "vista" che puoi ottenere, come ti dicevano i uagliun, facendo il join sulla stessa tabella

  Select ... From tua_tabella t1 join tua_tabella t2 on t1.commessa = t2.commessa ....

 Se invece la cardinalita' del dato e' sempre fissa ( tutti i record hanno sempre e comunque i cicli  a e b )  potresti pensare di acchittare una tabella dove pero' a questo punto il campo ciclo di lavoro e' pleonastico :look: perche' ti bastano le informazioni

Commessa   DataschedulataA DataschedulataB
Titolo: Re:microsoft access
Inserito da: peppere - 10 Ottobre, 2013, 09:41:25 am
SELECT Master_02.COMM, Master_02.LOT, Master_02.MaxOfTYPE, Master_02.COD_IMP, Master_02.MaxOfSCHED, Master_02.MaxOfACTUAL, Master_02.MaxOfPROM, Master_02.COD_IMP, Master_02.MaxOfSCHED, Master_02.MaxOfACTUAL, Master_02.MaxOfPROM, Master_02.MaxOfContract_Date
FROM Master_02 INNER JOIN Master_02 AS Master_02_1 ON (Master_02.LOT = Master_02_1.LOT) AND (Master_02.COMM = Master_02_1.COMM);


ho fatto quanto vedete sopra e mi viene fuori quello che mi servirebbe tranne che vedo su ogni record due volte lo stesso ciclo.
Mi viene

commessa1   cicloA   schedA    promA    cicloA    schedA    promA
commessa1   cicloB   schedB    promB    cicloB    schedB    promB

come faccio a dirgli che su un solo record voglio 2 cicli diversi? :look: 
Titolo: Re:microsoft access
Inserito da: falceEmarcello - 10 Ottobre, 2013, 09:52:26 am
SELECT Master_02.COMM, Master_02.LOT, Master_02.MaxOfTYPE, Master_02.COD_IMP, Master_02.MaxOfSCHED, Master_02.MaxOfACTUAL, Master_02.MaxOfPROM, Master_02.COD_IMP, Master_02.MaxOfSCHED, Master_02.MaxOfACTUAL, Master_02.MaxOfPROM, Master_02.MaxOfContract_Date
FROM Master_02 INNER JOIN Master_02 AS Master_02_1 ON (Master_02.LOT = Master_02_1.LOT) AND (Master_02.COMM = Master_02_1.COMM);


ho fatto quanto vedete sopra e mi viene fuori quello che mi servirebbe tranne che vedo su ogni record due volte lo stesso ciclo.
Mi viene

commessa1   cicloA   schedA    promA    cicloA    schedA    promA
commessa1   cicloB   schedB    promB    cicloB    schedB    promB

come faccio a dirgli che su un solo record voglio 2 cicli diversi? :look:

io vedo che tu i campi li prendi tutti dalla tabella Master_02, dovresti prenderli anche dalla Master_02_1 seno' che lo hai fatto a fare tutto il burdello ?
Poi non ho capito perche' continui a postare dei record ca nun c'appizzen manc o cazz con la query che fai :look:, vuoi aggiungere un livello di difficolta' in piu' ? :look:
Titolo: Re:microsoft access
Inserito da: peppere - 10 Ottobre, 2013, 09:55:57 am
io vedo che tu i campi li prendi tutti dalla tabella Master_02, dovresti prenderli anche dalla Master_02_1 seno' che lo hai fatto a fare tutto il burdello ?
Poi non ho capito perche' continui a postare dei record ca nun c'appizzen manc o cazz con la query che fai :look:, vuoi aggiungere un livello di difficolta' in piu' ? :look:
in più c'è lot e contract date che però non variano mai e quindi non creano problemi.

tornando al punto uno, che c'aggia mettere di master-02-1? e come diversifico i cicli?
Titolo: Re:microsoft access
Inserito da: peppere - 10 Ottobre, 2013, 10:02:12 am
ho risolto così

SELECT Master_02.COMM, Master_02.LOT, Master_02.MaxOfTYPE, Master_02.COD_IMP, Master_02.MaxOfSCHED, Master_02.MaxOfACTUAL, Master_02.MaxOfPROM, Master_02_1.COD_IMP, Master_02_1.MaxOfSCHED, Master_02_1.MaxOfACTUAL, Master_02_1.MaxOfPROM, Master_02.MaxOfContract_Date
FROM Master_02 INNER JOIN Master_02 AS Master_02_1 ON (Master_02.LOT = Master_02_1.LOT) AND (Master_02.COMM = Master_02_1.COMM)
WHERE (((Master_02.COD_IMP)="506") AND ((Master_02_1.COD_IMP)="599"));


mo un'altra cosa  :look:

ho un altro ciclo C solo per alcuni che però è intermedio. Praticamente quando C è presente devo duplicare il record della commessa.
Con la query che vi ho scritto sopra, i cicli C che ho in master-02 giustamente li perdo.

 :sad:
Titolo: Re:microsoft access
Inserito da: falceEmarcello - 10 Ottobre, 2013, 10:12:35 am
in più c'è lot e contract date che però non variano mai e quindi non creano problemi.

tornando al punto uno, che c'aggia mettere di master-02-1? e come diversifico i cicli?

boh forse sono io che non capisco la domanda, ma che cicli ? sql non cicla.
Sei proprio ingegnere, ti spieghi come un libro stracciato tie'
fatt ruoss
questa e' la tabella

commessa lotto ciclo datafine dataInizio
      1          1    A     'oggiA'  'domaniA'
      1          1    B     'oggiB'  'domaniB'


questa e' la query:

Select  m1.commessa as commessa, m1.ciclo as cicloA, m2.ciclo as cicloB, m1.datainizio as inizioA, m2.datainizio as inizioB  from prova.`master` as m1 left join prova.`master` as m2 on m1.commessa=m2.commessa and m1.ciclo<>m2.ciclo group by m1.commessa


questo e' il risultato
commessa    cicloA     cicloB   inizioA    inizioB 
     1               A         B       oggiA     oggiB


Ovviamente e' inutile che ti dica che una query cosi e' il male in ogni luogo e in ogni  lago  (edit: ho visto la tua  e' pure peggio :maronn:)
pero' a te nun te ne fott proprio immagino




Titolo: Re:microsoft access
Inserito da: falceEmarcello - 10 Ottobre, 2013, 10:16:35 am
ho risolto così

SELECT Master_02.COMM, Master_02.LOT, Master_02.MaxOfTYPE, Master_02.COD_IMP, Master_02.MaxOfSCHED, Master_02.MaxOfACTUAL, Master_02.MaxOfPROM, Master_02_1.COD_IMP, Master_02_1.MaxOfSCHED, Master_02_1.MaxOfACTUAL, Master_02_1.MaxOfPROM, Master_02.MaxOfContract_Date
FROM Master_02 INNER JOIN Master_02 AS Master_02_1 ON (Master_02.LOT = Master_02_1.LOT) AND (Master_02.COMM = Master_02_1.COMM)
WHERE (((Master_02.COD_IMP)="506") AND ((Master_02_1.COD_IMP)="599"));


mo un'altra cosa  :look:

ho un altro ciclo C solo per alcuni che però è intermedio. Praticamente quando C è presente devo duplicare il record della commessa.
Con la query che vi ho scritto sopra, i cicli C che ho in master-02 giustamente li perdo.

 :sad:

 :maronn:


e' come cercare di spiegare come costruire una casa a uno che se  sta facenn na barracc pe venner o per e o muss :look:
Titolo: Re:microsoft access
Inserito da: peppere - 10 Ottobre, 2013, 10:30:49 am
:maronn:


e' come cercare di spiegare come costruire una casa a uno che se  sta facenn na barracc pe venner o per e o muss :look:
:asd:

ho iniziato a usare sto coso 15gg fa, agg' pacienz.
Riguardo alla domanda sul ciclo C, comm mi muovo. Questo per me rappresenta il limone, il finocchio e pure a cascett e Peroni
Titolo: Re:microsoft access
Inserito da: peppere - 10 Ottobre, 2013, 13:28:08 pm
ho risolto così

SELECT Master_02.COMM, Master_02.LOT, Master_02.MaxOfTYPE, Master_02.COD_IMP, Master_02.MaxOfSCHED, Master_02.MaxOfACTUAL, Master_02.MaxOfPROM, Master_02_1.COD_IMP, Master_02_1.MaxOfSCHED, Master_02_1.MaxOfACTUAL, Master_02_1.MaxOfPROM, Master_02.MaxOfContract_Date
FROM Master_02 INNER JOIN Master_02 AS Master_02_1 ON (Master_02.LOT = Master_02_1.LOT) AND (Master_02.COMM = Master_02_1.COMM)
WHERE (((Master_02.COD_IMP)="506") AND ((Master_02_1.COD_IMP)="599"));


mo un'altra cosa  :look:

ho un altro ciclo C solo per alcuni che però è intermedio. Praticamente quando C è presente devo duplicare il record della commessa.
Con la query che vi ho scritto sopra, i cicli C che ho in master-02 giustamente li perdo.

 :sad:
inseriti i cicli C con query di accodamento. :ruoss:
ora ho la tabella fatta bene e popolata con tutte le date per i cicli A e B, mentre per i cicli C ho tutte i record con commessa popolata ma con date vuote.
Per commesse uguali devo popolare i record con ciclo C con le stesse date dei cicli di A e B.

Idee?
Titolo: Re:microsoft access
Inserito da: djcarmine - 11 Ottobre, 2013, 16:55:20 pm
inseriti i cicli C con query di accodamento. :ruoss:
ora ho la tabella fatta bene e popolata con tutte le date per i cicli A e B, mentre per i cicli C ho tutte i record con commessa popolata ma con date vuote.
Per commesse uguali devo popolare i record con ciclo C con le stesse date dei cicli di A e B.

Idee?

chiamm' a uno che ne capisce e lievet' a nanz :look:

per prendere i dati da una parte e trasferirli automaticamente da un altra parte non hai altra scelta che scrivere uno script pl/sql oppure un applicazione che peraltro ti risolverebbe tutti i problemi del monte a livello si presentazione e business logic può fare tutto quello che la cerevella ti dice
Titolo: Re:microsoft access
Inserito da: Alemao - 11 Ottobre, 2013, 18:56:38 pm
Ma viene ancora utilizzato in epoca moderna questo programma? :troll:
Titolo: R: Re:microsoft access
Inserito da: pappasouth - 11 Ottobre, 2013, 22:50:42 pm
Ma viene ancora utilizzato in epoca moderna questo programma? :troll:
sì, in qualsiasi azienda del globo terracqueo.
Titolo: Re:microsoft access
Inserito da: djcarmine - 12 Ottobre, 2013, 15:13:42 pm
ua alemao è diventato pure esperto di informatica mo?  :look:
Titolo: Re:microsoft access
Inserito da: Alemao - 12 Ottobre, 2013, 16:55:55 pm
ua alemao è diventato pure esperto di informatica mo?  :look:

No. Cercavo di battere il record di post di Torello occupando col mio nome tutta la bacheca, ma ho fallito. Ci vuole impegno e dedizione. Per questo lo apprezzo ancor di più. Di Access non me ne fotte niente. :look:
Titolo: Re:microsoft access
Inserito da: peppere - 21 Ottobre, 2013, 19:38:54 pm
progetto quasi finito, condivido con voi l'ottimo lavoro svolto e vi chiedo un'altra cosa :look:

ho una tabella definitiva che è alto livello, racchiude in sè tutte le info utili raccolte nel sistema informatico.
ora creo una tabella di backup manuale, questa tabella viene popolata manualmente quando si hanno info su cambi di date che il sistema catturerebbe con ritardo.
Ho provato a sostituire i campi del sistema con quelli popolati a mano (sono una decina su mille) con una query di aggiornamento ma mi dice:
operation must use an updeatable query.
c'è un modo per modificare i campi presi da sorgenti esterne?
Titolo: Re:microsoft access
Inserito da: peppere - 06 Novembre, 2013, 19:59:28 pm
Uppo per una domanda fessa.

In una campo calcolato devo inserire tre iif, se campo1 é A, campo 2 è  campo3 - 21. Dove campo3 è una data. Se campo1 è B campo2 è campo3 - 3. Se campo1 è C campo2 è uguale a campo3.
Se metto or tra gli iif nel generatore espressioni mi restituisce -1 ovunque in campo2. Se metto , o ; mi da errore. Se invece provo con un solo iif la differenza della data la fa bene.

Dove sbaglio? :boh: