Inserir dados automaticamente

Delphi

17/07/2003

Alguém sabe me dizer como faço para que um campo de minha tabela receba a data do sistema automaticamente, ou seja, quando eu cadastrar um cliente fique gravado a data (do sistema) em que ele foi cadastrado.

Também como faço para que um campo dessa mesma tabela o código do cliente seja gravado automaticamente.


Denysk

Denysk

Curtidas 0

Respostas

Ilanocf

Ilanocf

17/07/2003

No evento OnClick do botão Novo:
Crie uma variável:
Vamos supor q o campo q vc quer q conte automático se chame CodigoDoCadastro e o campo q vc quer q seja inserida a data se chame DataDoCadastro.

procedure TForm1.Button1Click(Sender: TObject);
Var
VCodigo:Integer;
begin
Tabela.Last;
VCodigo:=TabelaCodigoDoCadastro.Value + 1;
Tabela.Append;
TabelaCodigoDoCadastro.Value:=VCodigo;
TabelaDataDoCadastro.Text:=DateToStr(Date);
end;


GOSTEI 0
Midas

Midas

17/07/2003

No evento OnClick do botão Novo: Crie uma variável: Vamos supor q o campo q vc quer q conte automático se chame CodigoDoCadastro e o campo q vc quer q seja inserida a data se chame DataDoCadastro. procedure TForm1.Button1Click(Sender: TObject); Var VCodigo:Integer; begin Tabela.Last; VCodigo:=TabelaCodigoDoCadastro.Value + 1; Tabela.Append; TabelaCodigoDoCadastro.Value:=VCodigo; TabelaDataDoCadastro.Text:=DateToStr(Date); end;

CORRIGINDO A ULTIMA LINHA
editdatacadastro.text:=date();
tabeladatadocadastro.value:=strtodate(editdatacadastro.text);


GOSTEI 0
Jairroberto

Jairroberto

17/07/2003

Olá, amigo!

É bastante aconselhado que este tipo de ação faça parte das rotinas que compõem as regras de acesso ao banco de dados no seu aplicativo. Sendo assim, uma solução adequada seria executar estas ações no evento BeforePost da tabela, que ocorre imediatamente antes da tentativa do sistema de gravar as informações do registro que está sendo incluído ou editado no banco de dados. Veja um exemplo:

procedure TForm1.Table1BeforePost(DataSet: TDataSet);
begin
  if Table1.State = dsInsert then
    Table1DataHoraCadastro.Value := Now;
  if Table1Codigo.IsNull then
    Table1Codigo.Value := NovoCodigo;
end;


Observe que, no exemplo, ´NovoCodigo´ pode ser uma propriedade ou função onde é calculado o novo código para o novo registro da tabela a partir de uma tabela ´sombra´ ou de um SELECT ou Stored Procedure.

Veja que calculando o código no momento da gravação, o risco de ocorrer um erro por tentar incluir dois códigos iguais em um ambiente de rede com dois ou mais usuário simultâneos são bem menores do que se o código for gerado logo no início do processo de inclusão. Há também a vantagem de você gerar este código em um Data Module, sendo que qualquer formulário que usar o Data Module e fizer uma inclusão não terá que conter nenhum código de tratamento desta mesma situação, pois todos estarão seguindo a mesma ´Regra de Negócio´ do banco de dados.

A propósito, em bancos de dados SGDB, como o Firebird ou Interbase, este tipo de ação pode ser realizada por Triggers dentro do próprio banco, o que é ainda mais recomendado.


Um abraço,
Jair


GOSTEI 0
R3yz0r

R3yz0r

17/07/2003

æ faz o seguinte quando for pra salvar ou mostrar ou sei la oq:

[b:1a05355df2]variével:=timetostr(time); [/b:1a05355df2]//hora do sistema
[b:1a05355df2]variável:=datetostr(date); [/b:1a05355df2]//data do sistema

simples rapido e eficiente
tu pode por exemplo adicionar diratemante a propriedade *.value do caompo desejado que funciona.

Falow e boas compilações!! :)


GOSTEI 0
Denysk

Denysk

17/07/2003

æ galera valeu mesmo, deu certo, funcionou direitinho como eu queria!

Brigadão.


GOSTEI 0
POSTAR