Duvida com tabelas no Delphi

Tenho uma tabela de cliente e vendas
Eu qeria q no formulário de vendas a hora que digitasse o código do cliente aparecesse o nome.
Eu sei fazer aparecer em um lookup, mas queria q aparecesse por um Edit normal.

Vlw pela atençao

Amigo, eu quero lhe dar um conselho. Por favor, não me interprete mal.
Eu recomendo que vc procure um bom livro sobre a linguagem que quer usar e estude.
E não fique só no Delphi, ele ainda é importante mas está perdendo espaço. Procure aprender uma nova linguagem.
Eu também programo em Delphi e posso lhe dizer com segurança: a sua dúvida é algo básico, arroz-com-feijão de quem conhece o Delphi. Programar é mais do que inserir componentes em uma tela e configurá-los. Eu poderia simplesmente responder sua dúvida, mas tem um porém:

  • não acho certo lhe dar tudo mastigado uma coisa que já tem em n apostilas da net. Isso alimenta aquela atitude de querer tudo pronto, "preciso fazer isso, como faz?"
    Acredite em mim quando digo essas coisas pelo seu futuro.
    Quanto às linguagens, posso sugerir:
  • para vc ter uma posição melhor no mercado: Java, C#, C++, PHP
  • para vc ampliar seu leque: Ruby (com Ruby on Rails), Groovy (com Grails), Python.

entao cara
eu sou novo ainda na area de programaçao
to no 2º semestre de tecnico em informatica e pretendo fazer ciencias da computação quando terminar o ensino medio.
eu estou vendo o basico do delphi e nao estou conseguindo fazer isso que perguntar
Semestre que vem eu vou aprender C# tbm
mas valeu pela dica…

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.