Delphi + FDQuery (FireDAC) + DataSource

Delphi

FireDAC

CRUD - Delphi

11/11/2020

Estou fazendo ligação dos componentes DataSource e FDQuery.
Com os componentes devidamente conectados, faço o select no FDQuery, carrego o FieldEditor com os campos, e puxo pra tela..

Estou utilizando os comandos Append, Post, ApplyUpdates..

A dúvida é se eu consigo inserir algum campo a mais que não está no FDQuery.
Exemplo: Gostaria de colocar Insert/Update o campo de InseridoPor, AtualizadoPor (que viria do usuário logado no sistema)
Mas esses campos não estão em tela, estão vem variaveis globais.
Existe essa opção? Um jeito que consiga insert/update em um "FDQuery.POST"
Gabriel Kenji

Gabriel Kenji

Curtidas 0

Respostas

Emerson Nascimento

Emerson Nascimento

11/11/2020

coloque todos os campos na query e adicione-os no FieldEditor. e altere a propriedade Visible para False nos campos InseridoPor e AtualizadoPor, assim não aparecerão em grades, por exemplo.
implemente o evento BeforePost para gravar o conteúdo desses campos:
procedure TFormX.FDQuery1BeforePost(DataSet: TDataSet);
begin
  if FDQuery1.State = dsEdit then
    Dataset.FieldByName('AtualizadoPor').AsString := login.usuario
  else
  if FDQuery1.State = dsInsert then
    Dataset.FieldByName('InseridoPor').AsString := login.usuario
end;
GOSTEI 0
Gabriel Kenji

Gabriel Kenji

11/11/2020

coloque todos os campos na query e adicione-os no FieldEditor. e altere a propriedade Visible para False nos campos InseridoPor e AtualizadoPor, assim não aparecerão em grades, por exemplo.
implemente o evento BeforePost para gravar o conteúdo desses campos:
procedure TFormX.FDQuery1BeforePost(DataSet: TDataSet);
begin
  if FDQuery1.State = dsEdit then
    Dataset.FieldByName('AtualizadoPor').AsString := login.usuario
  else
  if FDQuery1.State = dsInsert then
    Dataset.FieldByName('InseridoPor').AsString := login.usuario
end;


Nossa, resolveu minha vida.. Muito obrigado.

Porem aconteceu um negócio estranho:
- Quando eu faço a ligação do meu DBEdit com DataSource/FieldEditor (FDQuery) os acentos continuam a funcionar normalmente.
- Se eu passo por parâmetro igual você mostrou pra mim, os acentos não funcionam, grava caracteres estranhos: 'São Paulo' fica 'São Paulo'
Banco de Dados: MariaDB
Firedac..
GOSTEI 0
Emerson Nascimento

Emerson Nascimento

11/11/2020

troque
.AsString :=
por
.Value :=
GOSTEI 0
POSTAR