LOOP UM DENTRO DO OUTRO

 Tópico anterior Próximo tópico Novo tópico

LOOP UM DENTRO DO OUTRO

VB.NET

 Compartilhe  Compartilhe  Compartilhe
#474060 - 18/05/2017 15:45:33

JOHNSTEVE
COSMOPOLIS-SP
Cadast. em:Janeiro/2016


Boa tarde galera, alguem poderia me da uma ideia nesse loop ? estou tentando fazer 2 LOOP um dentro do outro. com 2 tipos  de Datagrid

  Dgv_Fornecedor_BlocoC100 e   Dgv_ItensProdtCompra_BlocoC170

Acontece que nesse codigo q escrevi, esta duplicando os itens ficando por igual em cada compra.
Tipo.
ID.Compra: 399 : contem os itens: 821,520,206,523
ID.Compra: 400 : contem os itens: 823,773,36
Acontece que no loop q criei um dentro do outro. esta trazendo os 7 itens nas duas compras.
ficando errado da seguinte forma: ID de COmpra 399: 821,520,206,523,823,773,36 - esta pegando os 7 itens  o mesmo para o ID de Compra 400

   If Ckb_NFe_Entradas.Checked = True Then
                    Try 'ENTRADAS - NFE
                        con.Open()
                        Dim sql As String
                        Dim cmd As OleDbCommand
                        For j = 0 To Dgv_Fornecedor_BlocoC100.Rows.Count - 1
                            sql = "SELECT Compras.[codigo], Compras.[modelo], Compras.[serie], Compras.[NumeroNotaFiscal], Compras.[ChaveNFe], Compras.[CodigoFornecedor], Compras.[DataEmissao], Compras.[DataEntrada], Compras.[Valor_Total_Nota], Compras.[Vrl_Total_Produto], Compras.[Vlr_Total_Desconto], Compras.[Vlr_Total_Frete], Compras.[Vlr_Total_Seguro], Compras.[Vlr_Total_OutrasDesp], Compras.[Vlr_total_bsCal_icms], Compras.[Vlr_total_vlr_icms], Compras.[Vlr_total_bsCal_icmsST], Compras.[modFrete], Compras.[Vlr_total_vlr_icmsST], Compras.[Vlr_total_IPI], Compras.[Indicador_Pagamento], Compras.[Vlr_Total_PIS], Compras.[Vlr_Total_COFINS] FROM Compras WHERE DataEntrada between @datainicial and @datafinal and codigo=?"
                            cmd = New OleDbCommand(sql, con)

                            cmd.Parameters.AddWithValue("@datainicial", mskDIni.Value.Date)
                            cmd.Parameters.AddWithValue("@datafinal", mskDFim.Value.Date)
                            cmd.Parameters.Add(New OleDb.OleDbParameter("@codigo", Dgv_Fornecedor_BlocoC100.Rows(j).Cells("codigo").Value.ToString()))

                            Limpa_variaveis_Bloco_C100()

                            dr = cmd.ExecuteReader
                            If dr.HasRows Then
                                dr.Read()
                                If Not IsDBNull(dr.Item("codigo")) Then COD_PART = dr.Item("codigo")
                                COD_PART = Format(CInt(COD_PART), "00000")
                                COD_PART = "F" & COD_PART
                                If Not IsDBNull(dr.Item("modelo")) Then COD_MOD = dr.Item("modelo")
                                If Not IsDBNull(dr.Item("serie")) Then SER = dr.Item("serie")
                              
                                Qtd_Linha_Bloco_C = Qtd_Linha_Bloco_C + 1
                                Qtd_Linha_Bloco_C100 = Qtd_Linha_Bloco_C100 + 1
                                Qtd_Linha_ArquivoDigital = Qtd_Linha_ArquivoDigital + 1


                                If Ckb_Itens.Checked = True Then
                                    For P = 0 To Dgv_ItensProdtCompra_BlocoC170.Rows.Count - 1
                                        sql = "SELECT Compras.DataEntrada, Itens_Compra.id_compra, Itens_Compra.id_produto, produtos.descricao, Itens_Compra.qtd_item, produtos.undMedida, Itens_Compra.vrl_total_item, Itens_Compra.desconto, Itens_Compra.cst, Itens_Compra.Cfop_Nota, produtos.Cst_Ipi FROM produtos INNER JOIN (Compras INNER JOIN Itens_Compra ON Compras.[codigo] = Itens_Compra.[id_compra]) ON produtos.[codigo] = Itens_Compra.[id_produto] WHERE DataEntrada between @datainicial and @datafinal and Itens_Compra.id_produto=? and Itens_Compra.id_compra=?" 'Itens_Compra.id_produto=?"
                                        cmd = New OleDbCommand(sql, con)

                                        cmd.Parameters.AddWithValue("@datainicial", mskDIni.Value.Date)
                                        cmd.Parameters.AddWithValue("@datafinal", mskDFim.Value.Date)
                                        cmd.Parameters.Add(New OleDb.OleDbParameter("@id_produto", Dgv_ItensProdtCompra_BlocoC170.Rows(P).Cells("id_produto").Value.ToString()))
                                        cmd.Parameters.Add(New OleDb.OleDbParameter("@id_compra", Dgv_ItensProdtCompra_BlocoC170.Rows(P).Cells("id_compra").Value.ToString()))

                                        dr = cmd.ExecuteReader
                                        If dr.HasRows Then
                                            dr.Read()
                                            Num_Seq_Item_Doc = Num_Seq_Item_Doc + 1

                                            If Not IsDBNull(dr.Item("id_produto")) Then Cod_Item_Doc = dr.Item("id_produto")
                                            Cod_Item_Doc = Format(CInt(Cod_Item_Doc), "00000")
                                            Cod_Item_Doc = "P" & Cod_Item_Doc
                                            If Not IsDBNull(dr.Item("descricao")) Then Desc_Item_Doc = dr.Item("descricao")
                                    
                                            Qtd_Linha_Bloco_C = Qtd_Linha_Bloco_C + 1
                                            Qtd_Linha_Bloco_C170 = Qtd_Linha_Bloco_C170 + 1
                                            Qtd_Linha_ArquivoDigital = Qtd_Linha_ArquivoDigital + 1

                                        End If
                                    Next
                                End If

                            End If
                        Next
                    Catch ex As Exception
                        MsgBox("Ocorreu um erro ao carregar os dados da Compra - Bloco C100.", MsgBoxStyle.Exclamation)
                    Finally
                        con.Close()
                    End Try
                End If




#474061 - 18/05/2017 15:50:12

JOHNSTEVE
COSMOPOLIS-SP
Cadast. em:Janeiro/2016


 Anexos estao visíveis somente para usuários registrados

Nesse print da para ter uma ideia do que esta acontecendo no Loop.



#474067 - 18/05/2017 20:08:42

KERPLUNK
RIO GRANDE DO SUL
Cadast. em:Junho/2009


Membro da equipe
Caramba, não é à toa que vocês ficam doidos! Amigo, simplifique sua vida, use OOP.

_______________________________________________________________________
Gostaria de ter seu sistema Desktop "traduzido" para uma interface web? Podemos conversar...
Virei Oráculo!
The end is nigh, be ready for the nukes!


Resposta escolhida #474069 - 18/05/2017 21:50:30

NILSONTRES
SAO PAULO
Cadast. em:Março/2012


Porque vc não faz uma sql utilizando inner join ?
na tabela de itens vc deve ter o id da compra.



#474071 - 19/05/2017 07:43:51

JOHNSTEVE
COSMOPOLIS-SP
Cadast. em:Janeiro/2016


Citação:
:
Porque vc não faz uma sql utilizando inner join ?
na tabela de itens vc deve ter o id da compra.


Boa ideia NILSONTRES, vou fazer aqui vlw



#474075 - 19/05/2017 13:33:26

JOHNSTEVE
COSMOPOLIS-SP
Cadast. em:Janeiro/2016


Citação:
:
Porque vc não faz uma sql utilizando inner join ?
na tabela de itens vc deve ter o id da compra.


Deu certo Nilson vlw



 Tópico anterior Próximo tópico Novo tópico


Tópico encerrado, respostas não sao permitidas
Encerrado por JOHNSTEVE em 19/05/2017 13:33:39