AJUDA COM SELECT E INNER JOIN

SANROMAN 19/11/2015 16:41:04
#454169
Boa tarde, rapaziada

Montei um select com inner join e está acontecendo o seguinte:

Ao selecionar o dados da tabela com o select, retorna todos os dados da tabela que estão contidos no select. Até ai perfeito
.
Se insiro na tabela dados com código superior, aos dados que retornaram com o select, também funciona perfeitamente, mas se insiro na tabela algum dado com código menor que os dados do último select só retorna, ao selecionar os dados com o select, os dados que tiverem um código menor que o código do último select, exemplo

código 1 - funciona
código 2 - funciona
código 10 - funciona
código 7 - só retorna os três primeiro códigos
código 11 - funciona
código 6 - só retorna os códigos 1,2, 10 e 11.

Segue o código para análise:

 Private Sub selProdComp()

Dim sqlCon As New SqlConnection(strCmd)
Dim strSql As String = [Ô]SELECT C.CodProdComp, C.ProdComp, C.QtdeProdComp, C.ValorProdComp, C.CodProduto, [Ô] & _
[Ô]P.idProdutos, P.NomeProduto, P.PrecoVista [Ô] & _
[Ô]FROM TB_ProdutoComposto C [Ô] & _
[Ô]INNER JOIN TB_Produtos P ON C.CodProduto = P.idProdutos [Ô] & _
[Ô]WHERE C.CodProduto = [Ô] & txtIdProdutos.Text & [Ô][Ô] & _
[Ô]GROUP BY C.CodProdComp, C.ProdComp, C.QtdeProdComp, C.ValorProdComp, C.CodProduto, P.idProdutos, P.NomeProduto, P.PrecoVista [Ô] & _
[Ô]ORDER BY C.CodProduto ASC[Ô]

Dim sqlCmd As New SqlCommand(strSql, sqlCon)
Dim dr As SqlDataReader

sqlCmd.Connection.Open()
dr = sqlCmd.ExecuteReader

Do While (dr.Read)
Dim lvItem As New ListViewItem(New String() {dr.GetValue(0).ToString, dr.GetString(1).ToString, dr.GetInt32(2).ToString, dr.GetDecimal(3).ToString([Ô]N[Ô], nfi)})
frmProdutoComposto.listProdutos.Items.Add(lvItem)
frmProdutoComposto.txtIdProdutos.Text = dr([Ô]idProdutos[Ô]).ToString
frmProdutoComposto.txtNomeProduto.Text = dr([Ô]NomeProduto[Ô]).ToString
frmProdutoComposto.txtValorProd.Text = dr([Ô]PrecoVista[Ô]).ToString
Loop

If frmProdutoComposto.txtIdProdutos.Text = String.Empty Then
frmProdutoComposto.txtIdProdutos.Text = txtIdProdutos.Text
frmProdutoComposto.txtNomeProduto.Text = txtNomeProduto.Text
frmProdutoComposto.txtValorProd.Text = txtPrecoVista.Text
End If

somarProduto()
dr.Close()
sqlCon.Close()

frmProdutoComposto.ShowDialog()

End Sub


Já tentei com While e Do While e o resultado é o mesmo.

Se alguém puder me ajudar, agradeço desde já.
NICKOSOFT 19/11/2015 18:23:35
#454172
Mas vc viu se nessa parte

C.CodProduto = P.idProdutos [Ô] & _
[Ô]WHERE C.CodProduto = [Ô] & txtIdProdutos.Text & [Ô][Ô] & _

O c.codproduto 7 e 6 existem em p.idprodutos? Inner join so mostra resultados q atendam os 2, caso queira mostrar mesmo sem correspondente precisa usar left ou right join
Tópico encerrado , respostas não são mais permitidas