Na verdade aonde eu qero q puxe as informações é em um um campo do DBGRID
Então, amigo, isso vai depender de qual framework vc está usando (dbExpress, dbGo, Interbase Express, Zeos, etc.).
Pra te dar um norte, pesquise sobre “executando query com [biblioteca X]” (coloque o nome dos componentes que está usando).
entao cara, eu uso o zeos
A parte de código SQL eu sei como faz, só estou um pouco confuso na hra q eu vou especificar qual campo do DBGrid eu qero inserir as informações.
No DBGrid tem o codigo da venda, codigo do produto, nome do produto, preco do produto e quantidade comprada.
Eu queria puchar da tabela estoque o nome e o preço do produto a hora q inserisse o código do produto.
Eu nao estou conseguindo especificar os campos dentro do DBGrid.
Se fosse um Edit simples eu saberia, mas é q o DBGrid q ta complicando hehehe
O DBGrid tem a propriedade Columns.
Ela abre uma janelinha de coleção onde vc adiciona colunas.
Depois vc marca cada uma e muda a propriedade FieldName.
Os campos do DBGrid não tem como fazer eventos??
Eu clico em um campo e vou nos eventos e não tem nada…
Vlw pelas dicas amigo.
Rodrigo1895
[quote] Os campos do DBGrid não tem como fazer eventos??
Eu clico em um campo e vou nos eventos e não tem nada… [/quote]
Não. Os eventos relativos aos campos do grid tem que ser tratados nos eventos do grid ou do objeto Table/Query, não nos eventos das colunas (que, como você notou, não existem).
[quote]Eu queria puchar da tabela estoque o nome e o preço do produto a hora q inserisse o código do produto.
Eu nao estou conseguindo especificar os campos dentro do DBGrid. [/quote]
Uma opção é usar um campo calculado. Usando o evento OnCalcFields (do objeto Table/Query, não do grid), quando o código do produto estiver preenchido o código é carregado da forma que você achar melhor (pode usar uma query ou uma function).
Outra opção é usar um campo lookup, que liga sua tabela de pedido/venda/itens à tabela (componente table/query) de produto. Assim, quando o código do produto for preenchido, a descrição é carregada.
Pessoalmente, acho um pouco chato usar o dbgrid diretamente para inserção, como você está fazendo. Prefiro fazer tudo com edit’s, usando o dbgrid somente para exibir o que já foi cadastrado.
Abraço.
O lookup eu consegui, mas se clicar no lookup mostra todos os produtos cadastrados.
Dentro desse evento de campo calculado eu ponho comando SQL?? Nunca vi isso
na tabela estoque tenho :
codproduto
nome
preco_custo
preco_venda
etc…
na tabela itens_venda tenho:
codvenda
codproduto
nomeproduto
quantidade_vendida
preco_unitario
etc…
a tabela itens de venda ta dentro de um DBGRID
qeria q ao digitar o código do produto, ele jogasse o nome e o preco de venda dentro do DBGRID automaticamanete…
Rodrigo1895
Sim, esse é o comportamento “padrão” dele. Uma opção é você colocar o lookup como readonly = true, assim, mesmo que ele exiba os produtos, não vai alterar o valor do campo.
Dentro do campo calculado você pode fazer o que quiser. Pode, por exemplo, carregar uma tabela (PesqProd, por exemplo) à parte e pegar o nome do produto e passar para o campo calculado.
[quote]na tabela estoque tenho :
codproduto
nome
preco_custo
preco_venda
etc…
na tabela itens_venda tenho:
codvenda
codproduto
nomeproduto
quantidade_vendida
preco_unitario
etc… [/quote]
O campo nomeproduto da tabela itens_venda é de que tipo? É ele que você quer preencher com o nome do produto?
Já lhe mostrei algumas opções para isso. Não é nada tão mirabolante que um pouco de pesquisa não te permita fazer.
Abraço.
O campo nomeproduto da tabela itens_venda é do tipo varchar e é este campo que eu quero preencher com o nome que estiver na tabela estoque.
Mas não consegui ainda.
Sou novato inda na area de programaçao
UP
^^
Vc pode usar o evento OnChange do campo do código do produto. Nesse evento vc chama uma Query que procura o tal produto e seta o valor do nome e do preço de acordo. Como eu lhe disse anteriormente, pesquise sobre como fazer uma Query com Zeos.
Ninguém vai lhe dar “resposta pronta”, essas coisas são bem básicas mesmo e já demos uma diretriz do que vc pode pesquisar. Digo para tomar cuidado pq já está tentando programar sem conhecer o básico do funcionamento dos componentes. Sugiro que procure uma boa apostila/livro para dar uma estudada um pouco + a fundo.
Procure estudar sobre:
- eventos do Query
- eventos dos campos na Query
- abrindo/navegando pela query
- ler/setar valores de campos programaticamente
Entao cara, uma query eu ja sei fazer…
O que eu nao consigo é fazer o evento, como eu já disse nos campos do DBGRID não tem nenhum evento que possa ser feito.
UP
Tópico movido para outras linguagens.
Foi mal por ter colocado em lugar errado.
E ai alguem mais pra me dar uma luz?
Rodrigo1895
Por isso sugeri o uso de campos calculados e lookup. Esqueça o grid. O máximo que você poderia fazer com ele é usar eventos como o OnCellExit (quando o foco sair da coluna) ou OnKeyPress (capturando quando o usuário tecla enter ou tab). Mesmo desses casos, você ainda terá que buscar a descrição do produto de algum lugar, seja de outra Table (objeto table), seja através de sql.
Usando um campo calculado para a descrição, você poderia ter algo assim:
[i]procedure TForm3.TableItensCalcFields(DataSet: TDataSet);
begin
QueryPesquisaDescricaoProduto.Close;
QueryPesquisaDescricaoProduto.SQL := 'select DESCRICAO from PRODUTO where id = ’ + TableItensIdProduto.AsString;
QueryPesquisaDescricaoProduto.Open;
TableItensDescricaoProduto.AsString := TablePesquisaDescricaoProdutoDescricaoProduto.AsString;
end;[/i]
Faça seus testes, pesquise e adapte seu código.
Abraço.
Vou fazer aqui
Dpois posto o resultado
cara, acho que voce usasse um clientdataset com campos lookup ficaria mais facil