PEGAR DESCRICAO NO MSFLEXGRID

ADILSOO 05/06/2012 19:41:05
#403611
Boa noite gente, bom, estou em andamento em um sistema de vendas, e cheguei a um certo ponto, estava indo tudo bem, até que agora estou montando a tela de alteração de vendas, quando digito o código da venda ele puxa todos os dados, itens e tudo, só que oque acontece..., no grid ele adiciona todos os itens também, só que tem um problema, no Banco eu só gravo o CÓDIGO da descrição do item, e sendo assim ele só adiciona o código, logicamente né, mas aí que tá, qual seria a melhor forma de eu ir até a tabela CADITENS e pegar a descrição? ou não precisa ir até a outra tabela de cadastros pra pegar a descrição? desde já agradeço a ajuda de todos, abraços...

Ta aí uma foto do grid...
TECLA 05/06/2012 20:52:39
#403614
Resposta escolhida
A consulta que você está fazendo para alimentar a grade, precisa ser feita com uma JUNÇÃO (JOIN) da tabela que contém a descrição do item.

Exemplo:
SELECT CategoryName, ProductName 
FROM Categories
LEFT JOIN Products
ON Categories.CategoryID = Products.CategoryID;
ADILSOO 06/06/2012 07:14:29
#403622
Eu fiz assim eu deu certo, ex: antes de eu adicionar ao grid eu vejo qual [txt-color=#0000f0]CodItem[/txt-color] será adicionado, nesse caso como eu já sei qual código eu vou la na tabela de cadastros e pego a descricão, jogo numa variavel e adiciono no grid, funcionou certinho, mas não sei, acho que esse não é o meio de se fazer isso, agora não sei se devo usar o pensamento, deu certo deixa.. eu acho que não..., quero achar o metodo certo..
MARCELO.TREZE 06/06/2012 13:21:49
#403658
Colega entendi sua duvida, mas veja bem o que o colega TECLA propôs, que é o que resolve o problema, você não precisa ir buscar na tabela gravar em um varivel e exibir, basta criar uma query que busca os dados nas duas tabelas com o uso de join, exemplo postado acima por TECLA, esta é a maneira que a maioria utiliza entendeu

ADILSOO 07/06/2012 16:26:36
#403728
Bom, dei uma pesquisada e acho que consegui mais ou menos, só que quando eu mando ele adicionar até que seja EOF, ele já sai, porque EOF ou BOF são verdadeiros, tentei dar um MOVEFIRST mais não deu também, estou usando assim...

 sSQL = [Ô]SELECT * FROM (tabitens INNER JOIN tabprod ON tabitens.coddescricao=tabprod.nomeprod)[Ô]
[txt-color=#0000f0]Set[/txt-color] rsItens = Conexao.Execute(sSQL)

[txt-color=#0000f0]Do While Not[/txt-color] rsItens.EOF = [txt-color=#0000f0]True[/txt-color]
If rsItens!codcompra = txtcodcompra.Text [txt-color=#0000f0]Then[/txt-color]
gridcompras.AddItem [Ô][Ô] & vbTab & rsItens!coddescricao & vbTab & rsItens!nomeprod & vbTab & rsItens!qtde & vbTab & rsItens!unit & vbTab & rsItens!total
[txt-color=#0000f0]End If[/txt-color]
rsItens.MoveNext
[txt-color=#0000f0]Loop[/txt-color]


Oque pode estar errado?
MARCELO.TREZE 08/06/2012 01:25:51
#403751
veja bem tabitens coddescricao deveria ser igual a tabprod.codproduto, ou seja codigo deve ser igual codigo e nome ou descricao deve ser igual a nome ou descricao, codigo nao pode ser igual nome, tipo como 0001 vai ser igual a tapete
ADILSOO 08/06/2012 07:01:47
#403753
Ow Marcelo bom dia, estou no trabalho, não testei dessa maneira, mas então nesse caso, seria assim?
 tabitens.coddescricao = tabprod.codprod 

Será que é isso? Igual um relacionamento entre tabelas?

E aqui, eu vou setar uma tabela só?
Set rsItens = Conexao.Execute(sSQL)


Porque aqui na hora de eu adicionar na grade eu teria que pegar a descricão de uma e o código da outra certo? Mas como ja relacionei posso fazer assim? Certo?
gridcompras.AddItem rsItens!coddescricao & vbTab & rsItens!nomeprod


Bom, foi isso que eu entendi até agora..
MARCELO.TREZE 08/06/2012 20:52:02
#403808
sim poderá fazer desta maneira, desde que seja codigo com codigo.

ADILSOO 09/06/2012 13:36:05
#403828
consegui... só uma pergunta, é possivel com mais de 2 tabelas? valeu...
ADILSOO 10/06/2012 20:30:37
#403840
Muito obrigado, consegui.
Tópico encerrado , respostas não são mais permitidas