Fórum Problemas com Insert usando FireDAC #505673
29/12/2014
0
Estou com a seguinte situação aqui, clico para abrir o formulário de clientes por exemplo. A tabela sempre vem fechada por padrão, se o cliente precisar consultar algo ele utiliza os campos de pesquisa para filtrar somente aqui que ele necessita.
Ao clicar no botão incluir, abro a tabela e dou o Insert, só que ao salvar a operação me retorna todos os registros que tem na tabela. E desta forma fica inviável, pois se avenho com ela fechada eu queria que ai incluir ela se mantivesse fechada e só me mostrasse o item que acabei de incluir ou itens que incluí vários na sequencia.
Não estou conseguindo fazer este processo, se alguém puder ajudar agradeço. Segue comando usados no botão incluir e salvar.
// Botão incluir
procedure TFrmCadModelo.ActIncluirExecute(Sender: TObject);
begin
inherited;
try
PgcDados.ActivePage:= TabCadastro;
FDQuery.Close;
if not FDQuery.Active then
begin
{ Controlando os campos }
pnlFiltros.Enabled := False;
PnlCadastro.Enabled := True;
FDQuery.Open;
FDQuery.Insert;
FDQuery.FieldByName(PrefixoTabela + 'ATIVO').AsString := 'S';
FDQuery.FieldByName(PrefixoTabela + 'MARCA').AsString := 'N';
FDQuery.FieldByName(PrefixoTabela + 'INCLUIDOEM').AsDateTime := Now;
FDQuery.FieldByName(PrefixoTabela + 'RESPONSAVELINC').AsString := 'INCLUIDO';
FDQuery.FieldByName(PrefixoTabela + 'ALTERADOEM').AsDateTime := Now;
FDQuery.FieldByName(PrefixoTabela + 'RESPONSAVELALT').AsString := 'INCLUIDO';
end;
except on E : Exception do
raise Exception.Create('Erro ao Incluir o Registro: ' + E.Message);
end;
end;
// Botão Salvar
procedure TFrmCadModelo.ActSalvarExecute(Sender: TObject);
begin
inherited;
if ConsisteCampos then
begin
try
FDQuery.Post;
FDQuery.ApplyUpdates(0);
pgcDados.ActivePage := TabConsulta;
{ Controlando os campos }
pnlFiltros.Enabled := True;
PnlCadastro.Enabled := False;
mensagem := 'O Registro foi Incluído ou ALterado com Sucesso!';
Application.MessageBox(PChar(mensagem),'Informação', MB_OK + MB_ICONINFORMATION);
except on E : Exception do
raise Exception.Create('Erro ao Salvar o Registro: ' + E.Message);
end;
end;
end;
Jiraya San
Curtir tópico
+ 0Posts
29/12/2014
Renato Rubinho
Coloca um filtro na query trazendo apenas registros que te interessem.
Ex:
PrefixoTabela + 'INCLUIDOEM' >= :W_INCLUIDOEM
onde: :W_INCLUIDOEM = '29/12/2014'
Abraççç,
rrubinho
Gostei + 0
29/12/2014
Jiraya San
SELECT * FROM CLIENTES WHERE CLI_CODIGO = :ID
Aproveitando você saberia me dizer como resolver outra questão: Ao incluir algum registro, por padrão eu deixo o campo ativo = S e marca = N. Até aí tudo bem grava no banco corretamente, mas quando realizo uma consulta me é mostrado como na imagem abaixo:
[img]http://arquivo.devmedia.com.br/forum/imagem/390998-20141229-154120.jpg[/img]
Na tela de edição, ele vem com o CheckBox sempre desta forma e não como está no DBGrid mostrando se está ou não Checado. E se você perceber no DBGrid ele fica com um S ou N do lado da imagem que foi usada para simular um CheckBox no DBGrid.
Estas duas coisas não conseguiu achar uma solução. Se puder ajudar agradeço.
Gostei + 0
29/12/2014
Jiraya San
SELECT * FROM CLIENTES WHERE CLI_CODIGO = :ID
Aproveitando você saberia me dizer como resolver outra questão: Ao incluir algum registro, por padrão eu deixo o campo ativo = S e marca = N. Até aí tudo bem grava no banco corretamente, mas quando realizo uma consulta me é mostrado como na imagem abaixo:
[img]http://arquivo.devmedia.com.br/forum/imagem/390998-20141229-154120.jpg[/img]
Na tela de edição, ele vem com o CheckBox sempre desta forma e não como está no DBGrid mostrando se está ou não Checado. E se você perceber no DBGrid ele fica com um S ou N do lado da imagem que foi usada para simular um CheckBox no DBGrid.
Estas duas coisas não conseguiu achar uma solução. Se puder ajudar agradeço.
Referente ao Problema do DBGrid e CheckBox vou dar uma olhada neste Posto que você respondeu e ver o que consigo com relação a isso:
[url]https://www.devmedia.com.br/forum/me-ajudem-com-checkbox-na-grid/505519[/url]
Gostei + 0
29/12/2014
Jiraya San
with FDQuery do
begin
if Column.FieldName = PrefixoTabela + 'ATIVO' then
begin
dbgDados.Canvas.Font.Color := dbgDados.Canvas.Brush.Color;
dbgDados.Canvas.FillRect(Rect);
Check := 0;
if FDQuery.FieldByName(PrefixoTabela + 'ATIVO').Value = 'S' then
Check := DFCS_CHECKED
else
Check := 0;
R:= Rect;
InflateRect(R,-2,-2);
DrawFrameControl(dbgDados.Canvas.Handle,R,DFC_BUTTON, DFCS_BUTTONCHECK or Check);
end;
end;
Não conseguiu deixar a fonte transparente.
Gostei + 0
29/12/2014
Renato Rubinho
Apenas sugeri colocar a mesma cor da font e da célula para, por lógica, ficar transparente.
Vamos ver o que ele responde e se funcionou.
Para validar, force as duas cores com branco para ver se funciona.
dbgDados.Canvas.Font.Color := clWindow;
dbgDados.Canvas.Brush.Color := clWindow;
Gostei + 0
30/12/2014
Jiraya San
Você já passou por algo como na última imagem que mandei? Referente ao CheckBox?
[img]http://arquivo.devmedia.com.br/forum/imagem/390998-20141229-154120.jpg[/img]
Gostei + 0
30/12/2014
Renato Rubinho
De onde é essa imagem com o os checkboxes azuis ?
Gostei + 0
06/01/2015
Jiraya San
Então segue abaixo um exemplo de como está hoje:
1 - Quando consulto no DBGrid aparece desta forma;
2 - Se vou alterar ou visualizar na tela de cadastro aparece desta forma;
3 - E o correto deveria já vir Checado ou Não de acordo com o que está na tabela.
Não consegui resolver isso. Obs os campos Ativo e Marca no banco de dados estão como Char(1) e gravo eles como sendo: S ou N
[img]http://arquivo.devmedia.com.br/forum/imagem/390998-20150106-155709.jpg[/img]
Gostei + 0
06/01/2015
Renato Rubinho
Não tenho Delphi com Firedac para testar, mas está com cara que você não setou o datasource, datafield ou o tipo de dado e valores para marcado/desmarcado (ValueChecked / ValueUnchecked - caso sejam iguais aos DataControls padrões) nos checkboxes "Ativo" e "Marca" da Tab-Cadastro.
Abraççç,
rrubinho
Gostei + 0
09/01/2015
Jiraya San
Gostei + 0
13/10/2015
Jiraya San
Só para constar, o problema que citei acima sobre não ficar marcado os chekbox era problema de BIOS.
Eu estava esquecendo de setar as propriedades:
ValueChecked e ValueUnChecked de acordo com minha tabela.
Gostei + 0
13/10/2015
Jiraya San
Só para constar, o problema que citei acima sobre não ficar marcado os chekbox era problema de BIOS.
Eu estava esquecendo de setar as propriedades:
ValueChecked e ValueUnChecked de acordo com minha tabela.
RESOLVIDO
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)