Mostrar dados em uma dbgrid

Delphi

08/06/2011

Tenho uma dbgrid que mostra os dadios de uma tabela de produtos, porem ela esta linkada com uma tabela de unidade e quando link no adotable a unidade mostra somente o codigo da unidade e nao a descrição como faço para alterar isso
Daniel

Daniel

Curtidas 0

Respostas

Eliel Martins

Eliel Martins

08/06/2011

  Olá Daniel !


  Ficou um pouco confuso a sua descrição do seu problema, mas pelo que entendi você quer que mostre em uma grid os dados do produto mais a descrição da unidade, se for isso, você precisa utilizar uma Query e fazer o um SELECT da seguinte forma :

  
 
         SELECT P.CODIGO_PRODUTO, P.NOME_PRODUTO, U.NOME_UNIDADE, U.CODIGO_UNIDADE
            FROM PRODUTO P
           INNER JOIN UNIDADE U ON (P.CODIGO_UNIDADE = U.CODIGO_UNIDADE)
   


   Ai você liga essa query em um DataSource e liga no DBGrid, foi isso que entendi do seu tópico, se não for isso, detalha mais para eu tentar te ajudar, blz ?

   Espero ter ajudado em alguma coisa, abraço.


   Eliel G. Martins
GOSTEI 0
Daniel

Daniel

08/06/2011

  Olá Daniel !


  Ficou um pouco confuso a sua descrição do seu problema, mas pelo que entendi você quer que mostre em uma grid os dados do produto mais a descrição da unidade, se for isso, você precisa utilizar uma Query e fazer o um SELECT da seguinte forma :

  
 
         SELECT P.CODIGO_PRODUTO, P.NOME_PRODUTO, U.NOME_UNIDADE, U.CODIGO_UNIDADE
            FROM PRODUTO P
           INNER JOIN UNIDADE U ON (P.CODIGO_UNIDADE = U.CODIGO_UNIDADE)
   


   Ai você liga essa query em um DataSource e liga no DBGrid, foi isso que entendi do seu tópico, se não for isso, detalha mais para eu tentar te ajudar, blz ?

   Espero ter ajudado em alguma coisa, abraço.


   Eliel G. Martins
Quando vou cadastrar o produto tem um campo de cadastro de unidade que utilizo outra tabela (utilizo uma dblookupcombobox linkada com a outra tabela) e salvo o codigo da unidade e nao a descrição, no produto visualizo normal esta descrição, porem quando vou linkar a tabela produto no dbgrid, na descrição unidade ela me mostra o codigo da unidade e nao a descrição dela.
GOSTEI 0
Eliel Martins

Eliel Martins

08/06/2011

 
  Daniel, então Select que te passei vai funcionar perfeitamente, porque na tabela de produto você grava é código da unidade e não a descrição, o que você deve fazer para linkar com a DBGrid é não utilzar Table e sim uma Query, com isso você faz o SQL que te passei fazendo o JOIN com a tabela Unidade, com isso você terá o produto + a descrição da unidade. Por isso que indiquei para você usar a Query, onde na consulta você faz o relacionamento entre as tabelas.

  Eliel G. Martins
GOSTEI 0
Daniel

Daniel

08/06/2011

 
  Daniel, então Select que te passei vai funcionar perfeitamente, porque na tabela de produto você grava é código da unidade e não a descrição, o que você deve fazer para linkar com a DBGrid é não utilzar Table e sim uma Query, com isso você faz o SQL que te passei fazendo o JOIN com a tabela Unidade, com isso você terá o produto + a descrição da unidade. Por isso que indiquei para você usar a Query, onde na consulta você faz o relacionamento entre as tabelas.

  Eliel G. Martins
    Boa noite Eliel,   Não entendi muito bem, então vou descrever meu cenário aqui...   Tenho duas tabelas...   TABELAPRODUTO Codigo Produto Unidade Valor ICMS AUTONUM TEXTO NUMERO MONETARIO TEXTO     TABELAUNIDADE Codigo Unidade AUTONUM TEXTO     No campo UNIDADE da TABELAPRODUTO, fica armazenado valor do campo CODIGO da TABELAUNIDADE...   Então, vamos imaginar o seguinte:   TABELAPRODUTO Codigo Produto Unidade Valor ICMS 1 SOLA 1 2,30 12% 2 METAL 4 0,30 12% 3 COURO 2 38,00 12%     TABELAUNIDADE Codigo Unidade 1 PR 2 M2 3 KG 4 PC   A tabela produtos, está sendo exibida em um DBGrid, porém, quando o conteúdo é exibido, o valor do campo Unidade, obviamente é o código da unidade, não o nome, visto que no campo está gravado o seu código.   Preciso, de alguma forma fazer com que ele busque na TABELAUNIDADE o nome da UNIDADE e exiba no lugar do código....   fico no aguardo,  
GOSTEI 0
Adalton Goncalves

Adalton Goncalves

08/06/2011

Vamos ver se entendi:

Você está usando o DBLookupComboBox e ele está mostrando o codigo, que é o que está sendo salvo na tabela,mas vc necessitaria da UNIDADE.

Se todos os dados foram corretamente alterados no DB, utilizando os Joins devidos, no delphi vai ter de direcionar da seguinte forma.

na propriedade de seu DBLookupComboBox:

ListSource - Ligar a DataSource da Tabela ao qual vai Ter o registro selecionado;

ListField - Ligar o campo que será listado quando o usuário abrir a janela para seleção do registro;

KeyField - Ligar o campo de ligação entre as duas tabelas, ao qual terá o seu valor enviado para gravação.


DataSource: Ligar o DataSource da tabela PRODUTO
Data Field: Ligar tabelaProduto.Unidade
ListSource: Ligar o DataSource da tabela UNIDADE
KeyField: Selecione o Field tabelaUNIDADE.CODIGO
ListField: Selecione o Field tabelaUNIDADE.UNIDADE


Espero ter ajudado.



GOSTEI 0
Daniel

Daniel

08/06/2011

Vamos ver se entendi:

Você está usando o DBLookupComboBox e ele está mostrando o codigo, que é o que está sendo salvo na tabela,mas vc necessitaria da UNIDADE.

Se todos os dados foram corretamente alterados no DB, utilizando os Joins devidos, no delphi vai ter de direcionar da seguinte forma.

na propriedade de seu DBLookupComboBox:

ListSource - Ligar a DataSource da Tabela ao qual vai Ter o registro selecionado;

ListField - Ligar o campo que será listado quando o usuário abrir a janela para seleção do registro;

KeyField - Ligar o campo de ligação entre as duas tabelas, ao qual terá o seu valor enviado para gravação.


DataSource: Ligar o DataSource da tabela PRODUTO
Data Field: Ligar tabelaProduto.Unidade
ListSource: Ligar o DataSource da tabela UNIDADE
KeyField: Selecione o Field tabelaUNIDADE.CODIGO
ListField: Selecione o Field tabelaUNIDADE.UNIDADE


Espero ter ajudado.



na verdade o db esta funcionando perfeitamente ao visualizar os cadastros que fiz ele me mostra a unidade, porem em outro formulario de exclusao, onde mostro os dados atraves de uma dbgrid ele me traz o codigo. E minha duvida é na montagem do join, pois entendo muito pouci de sql 
GOSTEI 0
Daniel

Daniel

08/06/2011

Vamos ver se entendi:

Você está usando o DBLookupComboBox e ele está mostrando o codigo, que é o que está sendo salvo na tabela,mas vc necessitaria da UNIDADE.

Se todos os dados foram corretamente alterados no DB, utilizando os Joins devidos, no delphi vai ter de direcionar da seguinte forma.

na propriedade de seu DBLookupComboBox:

ListSource - Ligar a DataSource da Tabela ao qual vai Ter o registro selecionado;

ListField - Ligar o campo que será listado quando o usuário abrir a janela para seleção do registro;

KeyField - Ligar o campo de ligação entre as duas tabelas, ao qual terá o seu valor enviado para gravação.


DataSource: Ligar o DataSource da tabela PRODUTO
Data Field: Ligar tabelaProduto.Unidade
ListSource: Ligar o DataSource da tabela UNIDADE
KeyField: Selecione o Field tabelaUNIDADE.CODIGO
ListField: Selecione o Field tabelaUNIDADE.UNIDADE


Espero ter ajudado.



na verdade o db esta funcionando perfeitamente ao visualizar os cadastros que fiz ele me mostra a unidade, porem em outro formulario de exclusao, onde mostro os dados atraves de uma dbgrid ele me traz o codigo. E minha duvida é na montagem do join, pois entendo muito pouci de sql 
GOSTEI 0
Wilson Junior

Wilson Junior

08/06/2011

Faça o SQL como o Eliel colocou.
Qualquer coisa olhe este link http://www.luis.blog.br/join-ou-juncoes-sql-inner-left-right-e-full-outer-join.aspx

Espero ter colaborado.
GOSTEI 0
José

José

08/06/2011

Este tópico esta sendo fechado por inatividade. Se necessário, sinalizar para que seja reaberto ou abrir um novo.
GOSTEI 0
POSTAR