Ir para conteúdo
Fórum Script Brasil
  • 0

Preencher campo data ao clicar no botão novo


nsouza

Pergunta

Bom dia,

tenho um campo chamado dbDataCadastro no formulario, no banco de dados em SQLSERVER o formato esta "datetime", no campo "dbDataCadastro" do formulário tem um mask edit (!99/99/0000;1;_), eu gostaria que ao clicar no botão Novo Registro (bitNovo) adiciona-se a data atual neste campo.

Tentei a função DateTime, mas disse que não aceitava o argumente.

alguém pode ajudar?

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Coloquei no evento onEnter do campo, quando mandei executar deu a mensagem que

a minha tabela não tava no modo de edicao ou inserção.

Tem como criar este procedimento quando eu clicar no botão novo?

eu gostaria que ao clicar no botão Novo Registro (bitNovo) adiciona-se a data atual neste campo.

Coloque no envento OnEnter do componente

dbDataCadastro.Text := datetostr(now);

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

nsouza, não esqueça de que qualquer alteração no seu dataset só pode ser realizada quando ele estiver em modo de inserção ou edição (dsInsert ou dsEdit).

No caso do exemplo do colega Jhonas, onde ele sugeriu o evento OnEnter, você teria que testar o Status do se o dataset para saber se você pode fazer alguma atribuição a um campo dele.

O datasource ligado ao componente dbDataCadastro também possui esta propriedade e você pode usá-la para fazer o teste:

procedure TForm1.dbDataCadastroEnter(Sender :TObject);
begin
  if dbDataCadastro.DataSource.State in [dsInsert, dsEdit] then
    dbDataCadastro.Text := DateToStr(Now);
end;
a atribuição também poderia ser feita assim:
procedure TForm1.dbDataCadastroEnter(Sender :TObject);
begin
  if dbDataCadastro.DataSource.State in [dsInsert, dsEdit] then
    dbDataCadastro.Field.Value := Now;
end;
ou outra variante:
procedure TForm1.dbDataCadastroEnter(Sender :TObject);
begin
  if dbDataCadastro.DataSource.State in [dsInsert, dsEdit] then
    dbDataCadastro.Field.AsDateTime := Now;
end;
Mas quando você diz que ao clicar no botão...
eu gostaria que ao clicar no botão Novo Registro (bitNovo) adiciona-se a data atual neste campo.
Então, não era para ter dúvidas sobre onde fazer isto: seria no OnClick do botão, logo após colocar o dataset em modo inserção/edição. Assim, esta é uma outra possibilidade:
TForm1.bitNovoClick(Sender :TObject);
begin
  dataset.Append;

 // observe que existem várias formas de atribuir um 
 // valor a um campo, em qualquer lugar que você o faça
 // quando você adicionou os fields em design-time
  datasetDatCadastro.Value := Now;

 // ou quando você não adiciona em os fields em design-time
 // dataset.FieldByName('DatCadastro').Value := Now;

 // ou quando você sabe a ordem correta do field na lista, supondo que seja o 2º...
 // dataset.Fields[1].Value := Now;

 // ou outra forma menos convencional 
 // dataset.FieldValues['DatCadastro'] := Now;
end;

onde dataset é o nome do seu componente deste tipo (seja TTable, TQuery, TClienteDataSet,....) e DatCadastro o nome do campo na tabela em questão.

Mas, em questões específicas de inicialização quando da criação de um novo registro, você pode usar o evento OnNewRecord do dataset e lá fazer todas as inicializações necessárias.

Tenha o foco sempre nos fields do dataset, ou seja, preferencialmente manipule ele e mão os componentes data-aware (como é o caso TDBEdit). Toda alteração realizada nos campos (fields) se refletirão automaticamente nos componentes data-aware e ao olhar o código, fica mais claro o que você está fazendo - em que campo de que tabela está mexendo.

Tudo é uma questão de você escolher um método e tentar usá-lo como seu padrão. ;)

Abraços

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...