Gestione campi data

Ciao a tutti! Ho ancora bisogno di voi per un problema che non riesco a capire e a risolvere.
Ho una tabella SQL Server con un campo DateTime. Ho una classe con una propriet “DataFrom” di tipo Date.
Ho queste semplici righe di codice:
Dim d As New Date
classe.DataFrom = d

e, in un metodo “Save” eseguo un INSERT con uno statement SQL usando la propriet classe.DataFrom

Dal debug risulta tutto corretto: lo statement SQL riporta correttamente il valore da inserire nel campo data ‘2017-12-05 …’
Vado a vedere il record inserito e trovo la data ‘2017-05-12 …’ (nel formato americano).

Non so come fare per risolvere la questione: qualcuno mi pu aiutare?

Grazie mille.

Nedi

Dopo una lunga ricerca ho risolto il problema: nello statement SQL bisogna convertire la data da inserire nel formato italiano.
In pratica occorre prima predisporre una stringa con la data nel formato “yyyymmdd”, dopo di che la si inserisce con CONVERT(DATETIME, ‘data’, 105)

Sperando che possa servire a qualcuno…

No, non farlo.

Il formato yyyy-mm-dd il formato data sql (cos non ci sono problemi di interpretazione)
La lettura la puoi fare con CONVERT (per averla in italiano) o meglio ancora la fai fare a Xojo leggendo la data con:
dim dataNuova as Xojo.Core.Date=Xojo.Core.Date.fromText(’…la data nel formato yyyy-mm-dd’)
e poi mostrandola come preferisci usando i parametri di toText

O con l’oggetto date del vecchio framework
dim d as new date
d.sqlDate="… la data nel formato yyyy-mm-dd"
e poi usi i vari metodi per mostrarla

Non confondere mai come viene mostrato un dato con come viene visualizzato.
Ad esempio salvandole in SQLite come yyyy-mm-dd hai dopo a disposizione una marea di funzioni per le query che altrimenti non potrebbero lavorare.

Ciao Antonio, grazie per la risposta. Il mio problema non la lettura dei campi data, ma la scrittura su SQL Server: senza la funzione CONVERT il formato delle date scritte sui record sempre yyyy-dd-mm. Se il giorno un valore compreso tra 1 e 12 il record viene scritto nel formato yyyy-dd-mm; ma se il giorno supera 12 il programma va in errore.
L’unico sistema che sono riuscito a trovare eseguire INSERT/UPDATE con statements SQL usando la funzione CONVERT: se conosci altri sistemi sar ben lieto di adottarli.
Tempo fa mi accennavi qualcosa in merito alla licenza di Xojo (sto ancora utilizzando il vecchio RealBasic 2012): giunto il momento per me di passare a Xojo 2017r3, che mi sembra, a prima vista, molto veloce e stabile.
Grazie ancora.
Nedi

Il formato standard SQLDate ovvero YYYY-MM-DD
Controllerei i parametri del db.
In ogni caso puoi provare con YYYYMMDD => ovvero sqlDate.replaceAll("-", “”)

o anche utilizzando la convert migliore: CONVERT(DATETIME, ‘data’, 120)

Per la licenza ti scrivo in privato domani

Grazie Antonio!