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

Scadenza

  1. #1
    Falco69 non è in linea Scolaretto
    Buongiorno a tutti quanti.
    Come sempre anticipatamente ringrazio tutti.

    Problema:
    Devo calcolare una data per delle scadenze in una query. Ok facile

    GG: campo numerico
    DataD: campo data

    Exp: DateAdd("g";[GG];[DataD])
    
    Il problema che "DataD" deve essere il primo giorno.

    Non riesco a ricordare/trovare la soluzione
    Ho "risolto" così:
    Exp: DateAdd("g";[GG];([DataD]-1))
    
    ma sono convinto che è sbagliato...

    PS: mi sono impallato... (piano con le bacchettate )

  2. #2
    Quote Originariamente inviato da Falco69 Visualizza il messaggio
    Il problema che "DataD" deve essere il primo giorno.
    il primo giorno di cosa? partendo da quando?
    Se puoi scrivere un esempio concreto, semplice, così da evitare fraintendimenti, credo che il thread verrà risolto in pochissimo tempo.

  3. #3
    Falco69 non è in linea Scolaretto
    Quote Originariamente inviato da Phil_cattivocarattere Visualizza il messaggio
    il primo giorno di cosa? partendo da quando?
    Se puoi scrivere un esempio concreto, semplice, così da evitare fraintendimenti, credo che il thread verrà risolto in pochissimo tempo.
    Scusa...
    DataD è una data che inserisco manualmente ed il conteggio deve essere il primo giorno da dove iniziare.
    Esempio:
    con DateAdd se sommo 40 giorni ottengo: 01/01/2019 + 40= 10/02/2019;
    DateAdd("g";[GG];[DataD])
    Io voglio ottenere: 01/01/2019 + 40 = 09/02/2019. (in questo caso la data finale conteggia anche 01/01/2019)
    DateAdd("g";[GG];([DataD]-1))
    ma la seconda, secondo me, è un errore...

    Thanks...

  4. #4
    Quote Originariamente inviato da Falco69 Visualizza il messaggio
    con DateAdd se sommo 40 giorni ottengo: 01/01/2019 + 40= 10/02/2019;
    Ed è giusto.
    Esempio ancora più semplice, che serve a spiegare la "logica" che sta alla base della funzione DateAdd
    ? DateAdd("d", 1, #01/01/2019#)
    02/01/2019
    
    Perfetto, o no? Non avrebbe senso aggiungere 1 giorno... ed ottenere ancora 01/01/2019.
    Se per esigenze tue specifiche (di solito non funziona così) vuoi che si consideri anche il giorno iniziale come giorno da calcolare, userei DateAdd in questo modo
    DateAdd("g"; ([GG]-1); [DataD])
    
    Da un punto di vista del risultato non cambia niente, rispetto alla tua soluzione da primo post, ma in questo modo non vai a metter mano con operazioni aritmetiche classiche ad un dato che rappresenta una data, ma agisci su qualcosa che è già un numero (lo so che anche una data è memorizzata come numero ma... insomma... non si prende una data e si sottrae 1 per togliere un giorno, con le date si usano le funzioni specifiche perché gli errori sono dietro l'angolo).

  5. #5
    Falco69 non è in linea Scolaretto
    Intanto thanks 1000
    Effettuo la modifica.

    Purtroppo non posso agire sui due campi sono parametri che "devo" rispettare come mi vengono dati quindi devo giocare con qualche cosa che mi faccia arrivare alla soluzione.

    Perfetto, o no? Non avrebbe senso aggiungere 1 giorno... ed ottenere ancora 01/01/2019.
    Per me quella è soluzione giusta.
    Spiego: in quella situazione per me l'inizio lo considero 01/01/2019 (indifferentemente dall'orario di partenza che possano essere le 00:00 o le 08:00 e cosi via...) se sommo 1 giorno sono obbligato a conteggiare il giorno di partenza ovvero 01/01/2019 e le ore 24:00 del 01/01/2019 come termine.

    Spero di essere riuscito a spiegare la cosa.

    Grazie di tutto sempre e della spiegazione.

  6. #6
    Quote Originariamente inviato da Falco69 Visualizza il messaggio
    Spiego: in quella situazione per me l'inizio lo considero 01/01/2019
    ...
    Spero di essere riuscito a spiegare la cosa.
    Ehm... no, però credo sia dovuto al fatto che non conosco l'uso che devi fare di quei risultati, poi io sono abituato a considerare i giorni come "giorni interi" e non come gruppi di 24 ore.

    Nota a margine, ma non più di tanto:
    ...le ore 24:00 del 01/01/2019 come termine.
    Esistono le 24:00 del 01/01/2019? Ignorando (solo qui, non sulla strada) i cartelli in cui per indicare il divieto di sosta permanente scrivono 0-24, se aggiungi un secondo alle 23:59:59 del 01/01/2019 (o altra data a tua scelta) che cosa ottieni?
    ? DateAdd("s", 1, #01/01/2019 23:59:59#)
    
    Vuoi vederlo per esteso?
    ? Format(DateAdd("s", 1, #01/01/2019 23:59:59#), "dd/mm/yyyy hh:mm:ss")
    
    Nota a margine con la precisazione "non più di tanto" perché se entrano in gioco anche le ore (minuti e secondi) la questione deve essere affrontata in modo diverso e magari la soluzione che ti ho proposto non va bene. Questo puoi saperlo solo tu.
    Ultima modifica di Phil_cattivocarattere; 28-05-2019 13:53 

  7. #7
    Falco69 non è in linea Scolaretto
    Problema risolto per le mie esigenze ho utilizzato il consiglio di phil.
    Thank mille a tutti quanti

+ Rispondi al messaggio

Potrebbero interessarti anche ...

  1. Data di Scadenza
    Da seatleon nel forum Microsoft Access
    Risposte: 5
    Ultimo Post: 28-03-2015, 06:00
  2. scadenza fatture DF e DF FM
    Da fabrizio3596 nel forum Microsoft Word
    Risposte: 2
    Ultimo Post: 15-03-2014, 09:33
  3. controllo scadenza
    Da delfino73 nel forum Microsoft Word
    Risposte: 1
    Ultimo Post: 07-09-2009, 17:57
  4. [VB6] Software a scadenza
    Da BASIC6 nel forum Visual Basic 6
    Risposte: 3
    Ultimo Post: 31-12-2005, 17:37
  5. dati con scadenza
    Da zetapat nel forum PHP
    Risposte: 1
    Ultimo Post: 24-10-2005, 21:15