Delphi + FDQuery (FireDAC) + DataSource

11/11/2020

0

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

Responder

Posts

11/11/2020

Emerson Nascimento

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;
Responder

11/11/2020

Gabriel Kenji

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..
Responder

11/11/2020

Emerson Nascimento

troque
.AsString :=
por
.Value :=
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar