Newsgroup: it.comp.lang.delphi
Titolo: tdatetime e ado access

perché ADO/Access non salva la porzione "time" dei valori di tipoTDateTime
sul database??
Grazie
Alberto.

Alberto.
	Ciao
	MassimoB
 
---------------------------
http:\\
www.massimobeschi.it


L'inserimento dei dati viene fatto da programma e la parte time non c'č
neanche se apro la tabella con access.
Se invece inserisco i valori da access allora mi si salva anche time.
Nessun controllo, uso semplicemente una cosa del tipo
data_ora := Now;
Se stampo data_ora a questo punto appare correttamente la data e l'ora.
Poi tramite un TAdoCommand inserisco nel db il valore di data_ora.
Penso che non sia necessario postare codice, detto questo.
In acecss quel campo č di tipo Data/Ora.
Visto che il problema non sussiste se uso solo access e nemmeno da parte di
delphi fino all'esecuzione dell'inserimento, temo che sia un problema di
ADO, o driver.

ADO, o driver.
Io penso sia un problema legato a come dai i valori
all'AdoCommand. 
Poi, comunque, con Ado tutto è possibile :)


 ha scritto nel messaggio
news:o5rtc.12432$G%.7945@tornado.fastwebnet.it...

Il codice è questo (sono query parametriche)
 AdoCommand.Parameters.ParamByName('data_ora').Value := Ordine.DataOra;
Execute;
e la proprietà commandtext di adocommand é:
"INSERT INTO Ordinazioni (data_ora) VALUES (:data_ora)"
il formato di data/ora? quello di default, io non ho scelto nessun formato.
Devo per forza impostarne uno?

Devo per forza impostarne uno?
Non non è necessario ma era una info utile :)


 ha scritto nel messaggio
news:Zvrtc.12473$G%.9655@tornado.fastwebnet.it...

Non esiste la proprietà AsDateTime in quel contesto.
Almeno così dice il  compilatore di Delphi6

Almeno così dice il  compilatore di Delphi6
Hai ragione ... scusami, essendo il .Value un variant,
credevo fosse più o meno come il FieldByName del
dataset ... non l'avevo provato nella IDE :(
L'ultima cosa che i viene in mente di chiederti è: Hai
impostato il DataType del parametro a ftDateTime?


 ha scritto nel messaggio
news:NJrtc.12490$G%.2325@tornado.fastwebnet.it...

No, perchè dovrei farlo?
Cmq ho provato così ma niente ancora:
function TDBOrdini.InsertOrdine(Ordine: TOrdine): boolean;
var
  DBRecordOrdini: TDBRecordOrdini;
begin
  Result := True;
  with DM.OrdiniCmdIns do
  begin
    Parameters.ParamByName('data_ora').DataType := ftDateTime;
    Parameters.ParamByName('data_ora').Value := Ordine.DataOra;
    Execute;
    DM.OrdiniQuery.Close;
    DM.OrdiniQuery.Open;
    DM.OrdiniQuery.Last;
    Ordine.TID := DM.OrdiniQuery.FieldByName('TID').AsInteger;
    DM.OrdiniQuery.Close;
  end;
  DBRecordOrdini := nil;
  try
    DBRecordOrdini := TDBRecordOrdini.Create;
    DBRecordOrdini.InsertRecordOrdini(Ordine);
  finally
    DBRecordOrdini.Free;
  end;
end;

No, perchè dovrei farlo?
Perchè se no il parametro non sa come formattare
correttamente l'Input traformandolo in Output, per poi
poterlo far interpretare correttamente al Parser SQL
del Database.
Comunque interessato dalla problematica ho fatto una
demo stupidissima che inserisce un record con un campo
data impostata alla data corrente.
Nel DB ho solo creato una tabella clienti con i campo
id(AoutoInc),Nome(Testo),Data(Data/Ora), sul click di
un bottone eseguo il codice seguente
  With AdoCommand Do
  Begin
    Parameters.ParamByName('nome').Value := EditNome.Text;
    Parameters.ParamByName('data').Value := Now();
    Execute;
  End;
  ADOQuery.Requery;
la tabella viene visualizzata mediante una DBGrid ed
una Query semplice semplice.
Nella griglia il campo data viene visualizzato
correttamente con data e ora.
Uso Delphi 6 Ent con tutte le Patch eseguite,
Access2000 MDac 2.7 ... hum ... che altro ... se ti
può servire OS WinXp pro
Ti posto dopo i saluti anche uno stralcio del dfm della
demo per farti vedere come ho impostati il command ed i
parametri :)
Ciao MassimoB.
--------------------------- 
http:\\
www.massimobeschi.it
-----------------------------------------------------------------------------------------
  object ADOQuery: TADOQuery
    Active = True
    ConnectionString =
      'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Documents and Se' +
      'ttings\Massimo\Desktop\db1.mdb;Persist Security Info=False'
    CursorType = ctStatic
    Parameters = <>
    SQL.Strings = (
      'Select * From clienti')
    Left = 32
    Top = 32
  end
  object ADOCommand: TADOCommand
    CommandText = 'INSERT INTO Clienti (nome,data) VALUES (:Nome,:data)'
    ConnectionString =
      'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Documents and Se' +
      'ttings\Massimo\Desktop\db1.mdb;Persist Security Info=False'
    ExecuteOptions = [eoExecuteNoRecords]
    Parameters = <
      item
        Name = 'nome'
        DataType = ftString
        Value = Null
      end
      item
        Name = 'data'
        DataType = ftDateTime
        Value = Null
      end>
    Left = 32
    Top = 64
  end

 ha scritto nel messaggio
news:PKttc.12648$G%.9888@tornado.fastwebnet.it...

grazie.
Io in effetti non ho patchato niente!
dove le trovo?

dove le trovo?
:s Sito Borland, no? :)


Ciao, io non ho mai usato un ADOCommand perchè uso solo TDataSource e 
TADOTable senza mai un problema. TRamite il DataSource inserisci quello che 
vuoi nel campo in questione.
Inviato da 
www.mynewsgate.net