Ciao raga
devo calcolare il giorno di un anno dal 1 gennaio esempio:
10/01/19 = 10
03/02/19 = 34
sto usando Datediff ma mi da problemi con il risultato
01/01/19 = 0
02/01/19 = 0
03/01/19 = 1
il codice che uso è:
Anno = Year(ValueBox68.value)
Data1 = "01/01/" & Anno
Label79.caption = DateDiff(Data1, ValueBox68.value, gb.day)
Immagino che sia Data1 che Anno siano di tipo string, se così è dovresti cambiare il codice così:
Label79.Caption = DateDiff(Date(Data1), ValueBox68.value, gb.day)
oppure Label79.Caption = DateDiff(Val(Data1), ValueBox68.value, gb.day)
Immagino che sia Data1 che Anno siano di tipo string
A rigore, la variabile "Anno" dovrebbe essere di tipo Intero, giacché la Funzione Year( ) restituisce appunto un dato di tipo Intero.
Si hai ragione, non ho fatto caso al codice precedente il Diff perché subito colpito dall'evidente errore.
Comunque sia, Date1 dovrebbe essere (è) una stringa a cui l'intero di Anno viene passato in coercizione e pertanto il codice da me suggerito dovrebbe funzionare.
Prendo spunto dalla variazione di tipo implicito detta appunto coercizione nel codice di dex per ribadire un'ulteriore volta che dovremmo sempre variare i tipi esplicitamente in questo caso:
Data1 = "01/01" &/ Cstr(Anno)
Lo so che Gambas è sufficientemente intelligente per farlo implicitamente, ma questo dimostra che se noi fossimo abituati a fare sempre la variazione del tipo difficilmente incorreremmo nell'errore di passare una stringa al posto di una data.
Tuttalpiù in questo caso saremmo potuti incorrere nell'errore di fare un CDate, ma questo è un altro discorso.
Ciao raga
grazie a voi ho risolto
Dim Data1 As Date
Dim Anno As Integer
Anno = Year(ValueBox68.value)
Data1 = Date(anno, 1, 1)
Label79.caption = DateDiff(Data1, ValueBox68.value, gb.day) + 1
@cogier
simpatico il programmino che hai fatto