Acquista i nostri libri consigliati su Amazon.it
+ Rispondi al messaggio
Visualizzazione dei risultati da 1 a 7 su 7

query di selezione con campi numerici. Annidamento di iif - problema di sintassi.

  1. #1
    Lindo non è in linea Novello
    Post
    48
    Like Inviati  
    0
    Like Ricevuti  
    0
    Salve ragazzi, eccomi di nuovo. Sempre alle prese con la sintassi degli iif. Banale, sì, ma per me non ancora ...

    allora:

    ho tre tabelle, ogni record dell'una in rapporto padre-figlio-nipote con uno o più record dell'altra. Si chiamano ts1 (nonno), tr (padre) e tf (figlio). Le tabelle contengono, tra gli altri, campi numerici, che sono quelli su cui la mia query deve fare i calcoli...

    Ho quindi una query che seleziona alcuni campi di tutte e tre le tabelle. Devo impostare due IIf annidati.

    Ecco cosa vorrei:

    il campo (che chiameremo "Impegno") deve restituirmi una somma.

    La condizione (per me complessa) che impongo è questa:

    SE il campo "fatturapagata" della tabella "tr" è uguale a "NO", la query deve fare un ulteriore controllo:

    se il campo "tiporec" della tabella "ts1" è uguale a "S1", deve restituirmi

    la differenza tra il valore del campo "is" della tabella padre "tr" e (la somma dei valori numerici del campo "fattimp" della tabella figlia "tf");

    se invece se il campo "tiporec" della tabella "ts1" NON è uguale a "S1", mi deve restituire il valore "is" della tabella padre "tr";

    SE invece il campo "fatturapagata" della tabella figlia "tf" è uguale a "SI", mi deve restituire il valore 0 (zero).


    ho provato e riprovato, ma non ne vuole sapere. La sintassi è sempre errata.
    Ecco che cosa ho scritto:

    Sum(IIf(([tf].[fattpagata]="No"),IIf(([ts1].[tiporec]="S1"),([tf].[is]-sum([tr].[fattimp])),[tr].[is]),0)) AS Impegno

    C'è qualcuno che può dirmi dove sbaglio?

    Grazie, ciao.
    Ultima modifica di Lindo; 25-08-2010 18:53 

  2. #2
    L'avatar di @Alex
    @Alex non è in linea Moderatore Globale
    Post
    16,800
    Like Inviati  
    0
    Like Ricevuti  
    23
    Scusa ma la struttura parentale delle tabelle è inutilizzabile...!
    Ora tu descrivi 3 livelli di parentela, che suppongo siano uno sottolivello del precedente.
    Questo ricorda vagamente l'esigenza di catalogazione di magazzino, ma avendo 3 livelli definiti hai BLINDATO l'espandibilità del sistema...
    Tu dirai... " a me serve così non ho esigenze più avanzate"...
    Bene se la struttura del tuo lavoro ti ha portato a fare questa relazione, ti suggerisco in tutti i modi di ripensarci in quanto è sbagliata anche se il numero livelli non è da espandere.

    La sola ipotesi di dover confrontare dati da 3 tabelle chiarisce le idee dell'assurdità.

    Un'esigenza di tipo relazionale a parentela discendente, richiede una sola tabella teoricamente, in realtà 2.
    Con 2 tabelle puoi gestire livelli INFINITI di gerarchia discendente con la semplificazione proprio dei calcoli che ora tu ti sei trovato a fare complicandoti la vita in modo incredibile.

    Nono ho la soluzione da darti al problema specifico, perchè non ho nemmeno voluto cercarla essendo a mio avviso sbagliata la struttura iniziale...

    Se vuoi vedere come funziona una struttura corretta di gestione Gerarchica Ricorsiva puoi vedere questo esempio:
    MS ACCESS Code Sample - versione usabile/accessibile
    esempio banale, lascia perdere la parte grafica di gestione dell'indentazione per rendere l'idea della gerarchia, bada alla sostanza della relazionalità...!

    Da li poi se vuoi con poco le query si fanno.
    ℹ️ Leggi di più su @Alex ...

  3. #3
    Lindo non è in linea Novello
    Post
    48
    Like Inviati  
    0
    Like Ricevuti  
    0
    Cavoli, e io che pensavo di aver fatto la cosa giusta... Ricordi il tuo ricettario? Mi ero (forse troppo liberamente) ispirato a quello ma devo dedurne che ho sbagliato tutto...

    Ora, il db che ho per le mani è già popolato di molti record, quindi vedo molto in salita un reimpianto completo di tutto. Però ci provo, se effettivamente poi mi semplifica la vita. Grazie Alex!

  4. #4
    L'avatar di @Alex
    @Alex non è in linea Moderatore Globale
    Post
    16,800
    Like Inviati  
    0
    Like Ricevuti  
    23
    Quote Originariamente inviato da Lindo Visualizza il messaggio
    Cavoli, e io che pensavo di aver fatto la cosa giusta... Ricordi il tuo ricettario? Mi ero (forse troppo liberamente) ispirato a quello ma devo dedurne che ho sbagliato tutto...

    Ora, il db che ho per le mani è già popolato di molti record, quindi vedo molto in salita un reimpianto completo di tutto. Però ci provo, se effettivamente poi mi semplifica la vita. Grazie Alex!
    Il ricettario va bene, è l'ampliamento del demo che ti ho suggerito prima, non ho proposto il ricettario in quanto forse troppo complesso per comprendere il concetto...!

    Ora se sei partito da quello di Base, perchè hai 3 Tabelle per i 3 Livelli di Gerarchia...??

    La cosa è francamente impossibile sia stata applicata con lo stesso criterio, nel Ricettario ci sono almeno 4 livelli e le tabelle per gestirli sono solo 2...!

    Ora il probelma maggiore è capire se avendo già sviluppato parte del progetto la rivisitazione ti mette in seria difficoltà... se hai margini di revisione ti suggerisco vivamente di farlo, ma comprendine a fondo il metodo perchè è più complesso se non ci entri bene.
    ℹ️ Leggi di più su @Alex ...

  5. #5
    Lindo non è in linea Novello
    Post
    48
    Like Inviati  
    0
    Like Ricevuti  
    0
    ma comprendine a fondo il metodo perchè è più complesso se non ci entri bene

    E infatti, come volevasi dimostrare, non avendo colto in modo corretto l'esempio del ricettario ne è venuto fuori un mezzo pasticcio. Sto studiando l'esempio più semplice. Se in tempi ragionevoli riesco a metter sù l'altro ok, altrimenti dovrò tornare ai calcoli astrusi del db corrente.
    Ancora grazie.

  6. #6
    GianfrancoM non è in linea Scolaretto
    Post
    106
    Like Inviati  
    0
    Like Ricevuti  
    0
    Ciao Lindo.

    Per me stai dimostrando un'umiltà nell'aver progettato le tabelle non in maniera corretta, che sicuramente ti fara' imparare meglio anche se perdendoci più tempo e sono sicuro che risolverai il problema, anche perchè in questo forum ci si aiuta al di là delle distanze, dei tempi di risposta, delle popolazioni (hi) e delle inutili polemiche di qualcuno (tutto il mondo è paese!).
    Analizzare il problema per ben strutturare il db è cosa da non sottovalutare dal principio ed è bene perderci tempo (così m'hanno detto veri esperti ed hanno ragione).

    Ciao
    GM.

  7. #7
    L'avatar di @Alex
    @Alex non è in linea Moderatore Globale
    Post
    16,800
    Like Inviati  
    0
    Like Ricevuti  
    23
    Quote Originariamente inviato da GianfrancoM Visualizza il messaggio
    Ciao Lindo.

    Per me stai dimostrando un'umiltà nell'aver progettato le tabelle non in maniera corretta, che sicuramente ti fara' imparare meglio anche se perdendoci più tempo e sono sicuro che risolverai il problema, anche perchè in questo forum ci si aiuta al di là delle distanze, dei tempi di risposta, delle popolazioni (hi) e delle inutili polemiche di qualcuno (tutto il mondo è paese!).

    Quote Originariamente inviato da GianfrancoM Visualizza il messaggio
    Analizzare il problema per ben strutturare il db è cosa da non sottovalutare dal principio ed è bene perderci tempo (così m'hanno detto veri esperti ed hanno ragione).

    Ciao
    GM.
    Perle di saggezza.... ma quanto fumo che fai...!!!
    Concretezza, concetti chiari, concisi e di alto livello..., questa è tecnica, il resto è solo fumo ed io quelli che fanno fumo li becco al 2° post... ormai sono troppi anni che bazzico.
    Tu sei uno di questi.
    ℹ️ Leggi di più su @Alex ...

+ Rispondi al messaggio

Potrebbero interessarti anche ...

  1. Risposte: 13
    Ultimo Post: 07-06-2019, 23:15
  2. Creare una Query che effettua la selezione su più campi.
    Da Ciccio54 nel forum Microsoft Access
    Risposte: 7
    Ultimo Post: 06-07-2016, 16:45
  3. Unione più campi numerici in uno
    Da Giginiello nel forum Microsoft Access
    Risposte: 12
    Ultimo Post: 19-02-2016, 19:50
  4. Access: query di selezione parametrica campi si/no
    Da cianobiso nel forum Microsoft Access
    Risposte: 6
    Ultimo Post: 11-03-2013, 13:48
  5. Query di selezione con campi selezionabili dall'utente
    Da massimoqaz1971 nel forum Microsoft Access
    Risposte: 2
    Ultimo Post: 25-10-2012, 20:03