Newsgroup: it.comp.lang.visual-basic
Titolo: Bug VB5 ?

Scusate qualcuno di voi sa dirmi perchč la funzione
 format$( NumeroMese, "mmmm")
restituisce sempre Gennaio per valori di NumeroMese > 1 ? E se NumeroMese =
1 il mese restituito č Dicembre !!!!
L'unico modo per avere un nome di mese decente č fare cosě:
 For i=1 to 12
  Mia_Data = "01/"& i & "/1999"
  Nome_Mese = Format$(Mia_Data,"mmmm")
 Next i
Dove sbaglio ?

L'unico modo per avere un nome di mese decente  fare cos:


Il problema è che la funzione Month fa il contrario di quello che voglio io,
cioè da una data mi dà il numero di mese.Io invece voglio il nome del mese
dal numero.
E poi non si speigherebbe perchè con 1 dà dicembre e  con altri interi mi dà
gennaio !!
Forse il problema è un altro, ma quale ???

vero... è un'altra clamorosa falla o quanto meno è inspiegabile
l'utilizzo....
dunque....
 format$( da 2 a 32, "mmmm") = gennaio
 format$( da 33 a 60, "mmmm") = febbraio
ecc ecc
per farti restituire il mese devi indicare un tot di giorni... quindi per
ottenere Marzo devi mettere un numero a tua scelta fra 61 e 92.... l'enigma
sta nel fatto che la numerazione dei giorni parte da 2 !!!!!  ehehehhehe
ahahahahahha uuuuuuuuuuuuuuuuuuuuuuuuuuuuuahahahahahahahhahahahhah
(perdonatemi la clamorosa risatona) 0 e 1 vanno bene per dicembre
bye

Ho letto la tua e-mail e sono andato anch'io a verificare, e quello che tu
dici e' vero, pero' non penso che si tratta di un bug, ma piu' semplicemente
di un nostro errore di interpretazione delle varie sfaccettature della
funzione format.
Premesso che :
mese = format (now, "mmmm")  dove "now" e' la datadi sistema
odierna(20/04/99)restituisce aprile, e fin qui tutto bene il problema nasce
se al posto di now, ci mettiamo un intero che rappresenta il mese.
 IL problema e' che l'intero che noi passiamo alla funzione format , e'
interpretato dalla stessa, come il numero  di giorni passati dall'anno 1900.
Infatti
mese = format (33, "mmmm")
mese conterra' "febbraio", 61 restituira' "marzo", 92 restituira' "aprile" e
via dicendo.
Per verificare se le mie convinzioni erano esatte ho provato a calcolare il
numero di giorni passati dal 1900 (di solito tutti i pc iniziano a contare
le date da 1/1/1900) ad oggi 20/04/99.
99 x 365           = 36135 giorni (dal 1900 compreso al31/12/98)
99 / 4                = 24,75  arr. a 25 (giorni da agg. per gli anni
bisestili)
31+28+31+20 = 110     (giorni dal 1/1/99 al 20/4/99)
totgiornitrascosi = 36270
quindi:
mese = format(totgiornitrascorsi, "mmmm")
mese conterra' "aprile".
Se aggiungiamo 11 giorni per arrivare a maggio cioe' 36281 "mese"conterra'
maggio.
Faccio presente che anche per me questa e' una novita'  e potrebbe anche non
essere cosi' fatemi sapere se siete daccordo con questa tesi.
ciao Lorenzo
la mia E-mail: 
tw...@tin.it


Usa:
format$(dateserial(1,1,1),"mmmm") => Gennaio
format$(dateserial(1,2,1),"mmmm") => Febbraio
...
format$(dateserial(1,12,1),"mmmm") => Dicembre
1 per anno e giorno sono fittizi, tanto per avere una data con il mese
indicato
Se usi
format$(1, "mmmm") VB crede che 1 sia 31/12/1899 (prova a fare CDate(1)) e
quindi ti ritorna Dicembre.
Nessun errore quindi.
Ciao.

...


In effetti io ora utilizzo date fittizie. Credo che l'ipotesi posta in ng
sia proprio quella corretta.
Grazie. Ciao.


