Data dentro de um DBEdit

Delphi

17/07/2016

Ola pessoal.

Estou desenvolvendo um projeto e estou querendo que ao clicar no botão Novo Registro, automaticamente seja inserido a data dentro do DBEdit (nomeei ele como DBEditDATACRIACAO).

Estou inserido o seguinte comando no evento OnClick do meu botão Novo Registro

procedure TfReferencias.SpeedButtonNOVOClick(Sender: TObject);
begin
DBEditDATACRIACAO.Text:= Current_Date;
end;

Então quando pressiono as teclas Shift+F9 me retorna a seguinte mensagem:

http://prntscr.com/btuyyj

Obrigado desde já pela sua atenção.
Rubens Pena

Rubens Pena

Curtidas 0

Respostas

Raylan Zibel

Raylan Zibel

17/07/2016

DBEditDATACRIACAO.Text := DateToStr(Now);


DBEditDATACRIACAO.Field.AsDate := Now;
GOSTEI 0
Rubens Pena

Rubens Pena

17/07/2016

Ola Raylan, tudo bem... :)

Raylan digitei o seguinte comando

procedure TfReferencias.SpeedButtonNOVOClick(Sender: TObject);
begin
DBEditDATACRIACAO.Text:=DateToStr(Now); //<<<<<<<<<<<<<
try
PageControl1.TabIndex := 1;
DBEditSEQUENCIA.SetFocus;
BaseDados.tabelaReferencias.Append;
except
ShowMessage(''Operação Inválida!'');
end;
end;

http://prntscr.com/bu008f

Da uma olhadinha na print Raylan

e quando eu digito o segundo comando da o erro como mostrado na segunda print

http://prntscr.com/bu01b3

O que estou fazendo de errado?
GOSTEI 0
Raylan Zibel

Raylan Zibel

17/07/2016


if not (DBEditDATACRIACAO.DataSource.DataSet.State in [dsInsert, dsEdit]) then
   DBEditDATACRIACAO.DataSource.DataSet.Insert;

DBEditDATACRIACAO.Field.AsDate := Now;



Você só pode passar valor pra um DBField depois do Append/Insert. Você só deve passar valor pro Text do DBEdit se o Dataset correspondente estiver em modo de inserção/edição.
GOSTEI 0
Rubens Pena

Rubens Pena

17/07/2016

Raylan, te passei um email...
GOSTEI 0
Rubens Pena

Rubens Pena

17/07/2016

coloquei o codigo agora da seguinte forma

procedure TfReferencias.SpeedButtonNOVOClick(Sender: TObject);
begin
try
PageControl1.TabIndex := 1;
DBEditSEQUENCIA.SetFocus;
BaseDados.tabelaReferencias.Append;
DBEditDATACRIACAO.Field.AsDateTime; // não aparece a opção AsDate, somente essa
except
ShowMessage('Operação Inválida!');
end;
begin
if not (DBEditDATACRIACAO.DataSource.DataSet.State in [dsInsert, dsEdit]) then
DBEditDATACRIACAO.DataSource.DataSet.Insert;
end;
end;

e nao deu :/
GOSTEI 0
Eduardo Silva.

Eduardo Silva.

17/07/2016

Corrreção:

procedure TfReferencias.SpeedButtonNOVOClick(Sender: TObject);
begin
try
PageControl1.TabIndex := 1;
BaseDados.tabelaReferencias.Append;
// Depois de Inserir(Append ou Insert)
DBEditDATACRIACAO.Field.AsDateTime := Now;
DBEditSEQUENCIA.SetFocus;
except
ShowMessage(''Operação Inválida!'');
end;
end;

Sugestão:

Utilize o Evento OnNewRecord da sua tabela, exemplo:

procedure TBaseDados.TabelaReferenciasNewRecord(DataSet: TDataSet);
begin
TabelaReferencias.FieldByName('DATACRIACAO').AsDateTime := Now;
TabelaReferencias.FieldByName('SEQUENCIA').FocusControl;
end;


[sds]

Eduardo Belo
e-mail: beloelogica@gmail.com
GOSTEI 0
Rubens Pena

Rubens Pena

17/07/2016

Obrigado tanto ao Raylan como ao Eduardo Belo, pela paciência que tiveram comigo em tentar me ajudar. Graças a colaboração de ambos deu certo. A data esta sendo inserida automaticamente. Esse projeto no qual estou trabalhando, ele é muito complexo para uma programador iniciante como eu. Esse formulário de referencias que estou criando, ele vai puxar informações de outros formulários, então vou quebrar muito a mente com ele. Mas no final sairá um ótimo projeto. Mas uma vez obrigado a vocês dois pela ajuda.
GOSTEI 0
POSTAR