Ho bisogno di un chiarimento.
Contravvenendo alla prima legge dell'informatica che dice che "quando qualcosa funziona non devi sognarti di toccarla!", sto convertendo un plico di datareader da oledb.oledbdatareader a sqldatareader e inciampo su alcune cose che non capisco bene.
Col vecchio datareader oledb, se prendevo un reader.item("campodata") e il campo nel db era di tipo data, io lo potevo trattare ugualmente come se fosse una stringa e infatti mi facevo delle stringhe splittando l'item su "-" (in db avevo ad esempio 2012-12-25) e splittando mi potevo poi prendere parte delle stringhe e farmi le date come volevo, es:
dim appoggio() as string
appoggio = split(reader.item("campodata"), "-")
dim var1 as string = appoggio(2) & "/" & appoggio(1) & "/" & appoggio(0)
dim var2 as string = appoggio(0) & "/" & appoggio(1) & "/" & appoggio(2)
....
Ora con l'sqldatareader invece l'item conserva le caratteristiche di datatype del campo della tabella, perciò il reader.item("campodata") è a tutti gli effetti un oggetto di tipo date e non posso trattarlo come una stringa, cioè se splitto su "-" come facevo prima succede cacao.
Not only, ma usandolo forzato a stringa con
reader.item("campodata").tostring
la forzatura effettua anche una conversione di formato per cui, in debug, vedo che il dato che in db era
2012-12-25
mi diventa
25/12/2012 00:00:000
convertito con non so quale criterio (perchè, tanto per dire, usa il formato data gg/mm/aaaa piuttosto che non un altro formato?)
Questa cosa mi procura prurito in posti innominabili perchè ho ambienti diversi in sviluppo e produzione, server locale in sviluppo e server statunitense in produzione, e sinceramente adesso non so come trattare quel reader.item("campodata") per farne quel che mi serve.
Chi mi fa una lezione "for dummies"?

Rispondi quotando