Fórum Preencher DBGrid automaticamente. #364432
30/09/2008
0
Tenho duas Tabelas (TabMateriais e TabCompras). Coloquei um DBGrid pra preencher os campos da TABCompras e um Picklist na Coluna [0] do DBGrid preenchido com a lista de um campo do TABmaterial. Eu gostaria que quando o usuário clicasse no picklist, alguns campos do DBGrid fossem preenchidos automaticamente. Os campos [Unidade] e [ValorUnitario] são idênticos para as duas tabelas.
Quem puder ajudar, sou grato.
Abelha
Curtir tópico
+ 0Posts
30/09/2008
Pestana_
O dbGrid é somente um ´espelho´ do componente dataSet, refletindo os dados contidos nos fields do dataSet, então, se você atribuir ou até mesmo alterar valores nos fields do dataSet o dbGrid passará a enchegar estes valores.
Experimente utilizar o método (Append ou Insert) ou Edit do dataSet para adicionar ou alterar valores no dataSet e verifique se não atualiza o dbGrid.
Isto serve para qualquer componete dataSet, basta ter o raciocinio de como funciona!
espero ter ajudado!
Gostei + 0
30/09/2008
Abelha
Pela teoria que vc passou consegui fazer o preenchimento automático:
procedure TFormCompra.PreecheColunas; begin with QMaterial do //Query begin close; SQL.Clear; sql.Add(´select * from TABMateriais where (Material) =:VMaterial´); Parambyname(´VMaterial´).Value:=DBGrid1.Fields[0].DisplayText; OPEN; end; With QCompras do begin Edit; FieldByName(´Unidade´).value :=QMaterial.FieldByName(´Unidade´).value; FieldByName(´ValorUnitario´).value :=QMaterial.FieldByName(´ValorUnitario´).value; FieldByName(´ValorTotal´).value:=FieldByName(´ValorUnitario´).value * FieldByName(´Quantidade´).value; end; end;
mas agora tenho outra dúvida: quero usar o DBGrid apenas para inserir novos registros, então, quando abrir o form não quero que os registros existentes sejam visualizados.
Se tiver alguma dica, fala aê. Valeu.
Gostei + 0
01/10/2008
Pestana_
Gostei + 0
01/10/2008
Abelha
Gostei + 0
02/10/2008
Pestana_
select * from nomeTabela where codigo = 0
para retornar todos os campo vazio, depois você da um Append ou Insert no dataSet.
verifique se resolve!
Gostei + 0
02/10/2008
Abelha
Essa dica resolveu pra exibir o DBGrid limpo, mas quando insiro os valores, aparece só a linha do registro que está sendo inserido no momento. Por exemplo, se for inserir 3 registros, só o último é exibido.
Pra contornar esse problema eu usei de um ´artifício´ que não sei se é bom, pois conheço muito pouco ainda.
Fiz o seguinte: Crei outra tabela identica a primeira, só que os registros desta são sempre deletados na inicialização do form. Quando o usuário dá o comando pra gravar, os registros dessa tabela são todos copiados para a primeira. Essa segunda tabela é que está lincada ao DBGrid. É uma gambiarra, mas está funcionando bem. O problema é que vou gastar um pocu mais de memória, mas não muito, porque os registros que não são necessários são sempre deletados.
Se tiver outra dica pra mehorar, agradeço.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)