Delphi + FDQuery (FireDAC) + DataSource
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"
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
Curtidas 0
Respostas
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:
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
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:
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
11/11/2020
troque
.AsString :=
por
.Value :=
.AsString :=
por
.Value :=
GOSTEI 0