Autore Topic: DateBox.value  (Letto 569 volte)

Offline Picavbg

  • Senatore Gambero
  • ******
  • Post: 1.620
    • Mostra profilo
DateBox.value
« il: 27 Maggio 2018, 15:29:57 »
Oggi ho installato fedora28 e successivamente vi ho installato Gambas3.10. Ho provato ad eseguire il mio programma ContabFam ed ho incontrato una sorpresa inaspettata, infatti rilevando la data digitata dall'utente con l'istruzione
Codice: [Seleziona]
Dim   DataDig As String
.......................................
DataDig = DateBox1.value
DateBox1.value contiene "GG/MM/AAAA 00:00:00"
DataDig, dopo l'istruzione contiene "MM/GG/AAAA 00:00:00, mentre fino a Gambas3.9 la stessa istruzione forniva in DataDig "MM/GG/AAAA"

La novità provoca un errore nell'istruzione successiva che era
Codice: [Seleziona]
DataDig = Right(DataDig, 4) & Left(DataDig, 2) & Mid(DataDig, 4, 2) 
perciò ho dovuto modificare quest'ultima istruzione nella seguente:
Codice: [Seleziona]
DataDig = Mid(DataDig, 7, 4) & Left(DataDig, 2) & Mid(DataDig, 4, 2) [code]
in modo da ottenere in DataDig sempre una data nel formato AAAAMMGG, come occorre al programma.

La strada scelta mi permette di far funzionare il programma sia in Gambas3.10 che in Gambas3.9

Percò: ... occhio.
 :ciao: :ciao:

:ciao:

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.244
  • Tonno verde
    • Mostra profilo
Re:DateBox.value
« Risposta #1 il: 27 Maggio 2018, 19:23:59 »
Ma così non è più semplice?
Codice: [Seleziona]
Public Sub DateBox1_Change()

  Dim myDate As Date
 
  myDate = DateBox1.Value
  Print Format(myDate, "yyyy-mm-dd")

End

 :ciao:
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline Picavbg

  • Senatore Gambero
  • ******
  • Post: 1.620
    • Mostra profilo
Re:DateBox.value
« Risposta #2 il: 27 Maggio 2018, 23:25:20 »
Se hai guardato bene il codice che ho scritto, la mia data si trova dentro un tipo di campo stringa. Per fare quello che proponi tu, dovrei prima convertire la mia stringa in una data e, soltanto a questo punto potrei utilizzare un'istruzione come quella suggerita da te.
Secondo me, faccio prima così.

Inoltre l'istruzione CDate non funziona più come prima e il perchè lo spiego in un'altra discussione, dopo avere fatto un' ulteriore prova,  proprio con l'istruzione che mi hai ricordato nel tuo post.
 ;)
« Ultima modifica: 27 Maggio 2018, 23:26:23 da Picavbg »
:ciao:

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.244
  • Tonno verde
    • Mostra profilo
Re:DateBox.value
« Risposta #3 il: 28 Maggio 2018, 00:05:19 »
.... Ho provato ad eseguire il mio programma ContabFam ed ho incontrato una sorpresa inaspettata, infatti rilevando la data digitata dall'utente con l'istruzione
Codice: [Seleziona]
Dim   DataDig As String
.......................................
DataDig = DateBox1.value
...

Forse quello che non ha capito sei tu.  ;)
DateBox1.Value restituisce un valore di tipo Data e non una stringa.  ;)
Il tuo codice opera una coercizione (detto anche casting implicito) e trasforma una data in una stringa con tutti i rischi del caso.  ;)

Io ti ho passato un codice corretto, basta mettere DataDig = al posto di Print.  ;)
Poi naturalmente ognuno è libero di scrivere il codice come gli pare basta non stupirsi poi quando smette di funzionare.
« Ultima modifica: 28 Maggio 2018, 00:08:33 da Gianluigi »
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline Picavbg

  • Senatore Gambero
  • ******
  • Post: 1.620
    • Mostra profilo
Re:DateBox.value
« Risposta #4 il: 28 Maggio 2018, 12:21:21 »
Oops!  :o
Che figura ...

Scusa Gianluigi, non avevo capito proprio a cosa ti riferivi. É vero, DateBox1.Value restituisce un valore di tipo Data.  :rolleyes: :rolleyes: :rolleyes:
Sono proprio invecchiato. Meglio non prendere più iniziative diel genere "Inforamazioni utili per gli amici"
 :hard:

 :(
:ciao: