Differenza condizionata tra date(risultato in mesi)

di il
11 risposte

Differenza condizionata tra date(risultato in mesi)

Buongiorno a tutti,

ho il seguente problema:

ho una tabella che contiene due date(data1 e data2), la prima valorizzata, la seconda non sempre.

poi, sempre nella stessa tabella, ho un campo totmesi che dovrebbe contenere la differenza in mesi tra data2(se valorizzata, altrimenti la current date) e data1

una cosa del genere insomma:

If [tabella].[data2] > 0 then [tabella].[data2] - [tabella].[data1] else current date - [tabella].[data1]

il tutto in mesi

si può fare?

Grazie mille

11 Risposte

  • Re: Differenza condizionata tra date(risultato in mesi)

    
    DifferenzaInMesi = DateDiff("m",Data1,nz(Data2,Date))
    Scritto così di getto, potrebbe esserci qualche errore di sintassi

    Quindi studi la funzione DateDiff e poi la funzione nz ed eventualmente adegui quanto suggerito
  • Re: Differenza condizionata tra date(risultato in mesi)

    Do un'occhiata alle funzioni allora

    grazie
  • Re: Differenza condizionata tra date(risultato in mesi)

    Scrivendola così : =DateDiff('m';[tab barca].[data_varo];[tab barca].[data_alaggio])


    mi da il seguente errore: #Nome?

    dove sbaglio?
  • Re: Differenza condizionata tra date(risultato in mesi)

    carlazza ha scritto:


    mi da il seguente errore: #Nome?
    Dove scrivi quel codice? (che deve essere racchiuso tra tag CODE, non scritto in italico).
    In ogni caso non hai considerato il fatto che una delle date fosse assente, cosa che invece sembra(va) essere una situazione possibile e da gestire (vedi inizio del thread). max.riservo, infatti, nel suo intervento, aveva aggiunto anche Nz(), che nel tuo codice sparisce.
  • Re: Differenza condizionata tra date(risultato in mesi)

    Dove scrivi quel codice?
    lo scrivo nell'origine controllo, nel generatore di espressioni.
    è sbagliato?

    In ogni caso non hai considerato il fatto che una delle date fosse assente, cosa che invece sembra(va) essere una situazione possibile e da gestire (vedi inizio del thread). max.riservo, infatti, nel suo intervento, aveva aggiunto anche Nz(), che nel tuo codice sparisce.
    si si era solo il primo approccio alla funzione dateDiff, successivamente avrei affrontato il secondo punto
  • Re: Differenza condizionata tra date(risultato in mesi)

    carlazza ha scritto:


    lo scrivo nell'origine controllo, nel generatore di espressioni.
    è sbagliato?
    Non è detto che sia sbagliato. Spesso quell'errore è dovuto ad un errata "interpretazione" dell'origine da parte di Access. Se si tratta di una maschera (o report) associata e sono presenti presenti anche i due controlli associati ai due campi data_varo e data_alaggio (ora sono costretto ad imparare cosa significa "alaggio"), togli il riferimento alla tabella.
    Del tipo
    =DateDiff('m';[data_varo];[data_alaggio])
    Se l'errore persiste prova a cambiare il nome dei controlli in cui sono inserite le due date, in modo che il nome dei controlli sia diverso da quello del campo associato.
    Attenzione al generatore di espressioni perché non sarebbe la prima volta in cui è più di danno che d'aiuto. Nel senso che può essere utile per avere "un'idea" di come si scrive, poi però va scritto di proprio pugno (informatico: tastiera)
  • Re: Differenza condizionata tra date(risultato in mesi)

    ora sono costretto ad imparare cosa significa "alaggio"


    è riferita all'atto del rimessaggio della barca stessa
    quando viene tirata su dal porto e portata in un deposito attrezzato


    ora provo a seguire le tue istruzioni
    grazie
  • Re: Differenza condizionata tra date(risultato in mesi)

    Allora, ho tolto il riferimento alla tabella e la funzione datediff funziona!

    ora passando alla funzione NZ() però, scrivendola così =DateDiff('m';[data_alaggio];NZ([data_varo];[DATE]))

    non va.
  • Re: Differenza condizionata tra date(risultato in mesi)

    Versione tua

    carlazza ha scritto:


    =DateDiff('m';[data_alaggio];NZ([data_varo];[DATE]))
    Versione max.riservo
    DifferenzaInMesi = DateDiff("m",Data1,nz(Data2,Date))
    Date non è il nome di un campo ma una funzione che restituisce la data odierna. Se la racchiudi tra parentesi quadrate Access crede che sia un campo/controllo e non lo trova, quindi s'arrabbia dando errore.
    In generale non scrivere

    carlazza ha scritto:


    non va.
    ma riporta sempre il tipo - descrizione del problema, altrimenti non si sa dove puntare (salvo che l'errore sia macroscopico)
  • Re: Differenza condizionata tra date(risultato in mesi)

    carlazza ha scritto:


    Allora, ho tolto il riferimento alla tabella e la funzione datediff funziona!

    ora passando alla funzione NZ() però, scrivendola così =DateDiff('m';[data_alaggio];NZ([data_varo];[DATE]))

    non va.
    Certo che cercare con google Access date e leggere il primo link (anche in italiano) deve essere proprio una operazione estenuante
  • Re: Differenza condizionata tra date(risultato in mesi)

    Date non è il nome di un campo ma una funzione che restituisce la data odierna. Se la racchiudi tra parentesi quadrate Access crede che sia un campo/controllo e non lo trova, quindi s'arrabbia dando errore.
    si è vero, me ne sono accorto e l'ho corretta subito dopo aver scritto il post

    poi avevo fatto anche un altro errore a non mettere le due parentesi "()"

    ora funziona e ho imparato una cosa nuova

    grazie a tutti
Devi accedere o registrarti per scrivere nel forum
11 risposte