Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    12

    [ADO.NET] memorizzazione data/ora in campo access

    Ho bisogno di memorizzare in un unico campo, in un database access, la data e l'ora odierna (ad esempio "27/01/2003 10.30.00").

    Per farlo utilizzo il seguente codice:

    '------------------
    Dim row As DataRow = dsNomeDataset.NomeTabella.NewRow
    '...
    'memorizzo la data/ora nel campo "Data"
    Dim d As New DateTime()
    row("Data") = d.Now
    '...
    '...
    dsNomeDataset.NomeTabella.Rows.Add(row)
    '...
    'e poi invio le modifiche al database
    '-------------------

    Il codice sembra funzionare, ma quando poi si va a controllare cosa è stato effettivamente memorizzato nel database access, si scopre che appare solo la data e non l'ora (in realtà viene memorizzata l'ora 00.00.00).

    La cosa strana è che facendo un po' di verifiche risulta che nel dataset residente in memoria la data e l'ora vengono memorizzate correttamente. Il problema sembra verificarsi quindi solo quando le modifiche vengono inviate ad access.

    C'è qualcuno che ha avuto lo stesso problema o che sa come risolverlo?

  2. #2
    Utente di HTML.it L'avatar di darkblOOd
    Registrato dal
    Jul 2001
    Messaggi
    2,212
    che tipo di dato hai associato al campo access?

    che tipo di dato ti risulta nel dataset?

    prova ad usare d.ToLongDate o qualcosa del genere (non mi ricordo il nome del metodo)

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    12
    Ho provato come mi hai suggerito tu, ma purtropppo la situazione non cambia.

    Per quanto riuarda le domande che mi hai fatto:
    - in Access il campo è impostato come Data/Ora, con formato "Data generica" (anche se credo non abbia molta importanza se non per la visualizzazione in access).
    - nel Dataset, invece, il campo è impostato come dateTime.

    In quest'ultimo ho provato ad impostare il campo anche come date o come string ma non cambia nulla.

    Boh... per me resta un mistero. Infatti come dicevo in precedenza se provo ad estrarre dal dataset il valore memorizzato vedo che appare come "28/02/2003 10.16", se vado in access, appare solo "28/02/2003" perchè l'ora viene impostata automaticamente su "0:00".

  4. #4
    Utente di HTML.it L'avatar di darkblOOd
    Registrato dal
    Jul 2001
    Messaggi
    2,212
    il problema non sta ne nel db ne nel dataset, l'orario te lo taglia VB

    devi trovare il modo di passare il valore completo in formato DataOra Estesa.

    altrimenti VB ti passa sempre solo la data e sia il db che il dataset mettono di default 00:00:00


  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    12

    Risolto!

    Ho pensato che se il problema stava solo nel trasferimento dei dati al database access, poteva essere colpa del dataAdapter.
    Ho allora provato a guardare, nelle proprietà del dataAdapter, com'era impostato l'InsertCommand e più precisamente i suoi Parameters.
    Il parametro relativo al campo che volevo aggiungere era impostato come DBDate ed ho provato a cambiarlo, scegliendo fra i tipi disponibili, in Date.
    Ora la cosa funziona.

    Probabilmente quando il dataAdapter inviava la query di inserimento nuovo record, tagliava l'ora perchè il parametro relativo era impostato per comportarsi così. Cambiando il formato del parametro tutto è andato a posto.

    Grazie per le risposte veloci che mi hai dato.

  6. #6

    Grazie Delfo!!!

    Non so come ringraziarti... mi hai risolto un problemino non da poco.... ciauzzz:quote:

  7. #7
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    12
    ehehehehe... non sai quanto ci ho sudato io all'epoca.
    Fa piacere sapere di essere stato utile anche a qualcun altro.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.