none
rotina para pegar varios produtos no datagridview RRS feed

  • Pergunta

  • Boa Tarde Pessoal!!!

    Estou precisando de uma rotina para pegar linha a linha de um datagridview, vou explicar.

    Tenho um codigo que gera xml da nfe, na parte de produtos e preciso identidicar o numero de cada item e assim sucessivamente, como o codigo esta rodando so com 4 produtos sta facil, fiz um if para pegar o numero do item e gera o codigo, o problema que agora vai rodar esse xml com mais 50 produtos ou ate 100 produtos, no if fica muito longo o codigo e acho que e errado tambem, a questão e preciso pegar o numero do item final por exemplo 10 itens, esses 10 itens vai estar em um datagridview linha apos linha 10 itens, ai coloca no codigo xml o numero do item e gera o codigo, abaixo vai o exemplo do codigo xml na parte de produtos.

    If Me.txttotalregistro.Text = "1" Then ' a soma da coluna registros no datagridview 

                        .WriteStartElement("det") ' abre Item Produto 1 "det"
                        .WriteAttributeString("nItem", "1") ''' aqui no exemplo esta 1 item e aqui que preciso fazer a magica acontecer e se tiver 51 item e preciso pegar linha a linha e executar o codigo abaixo, para sair no xml os 51 itens exemplo.

                        .WriteStartElement("prod") ' abre Produto 1

                        .WriteStartElement("cProd")
                        Me.dgvprodnfe.CurrentCell = Me.dgvprodnfe.Rows(dgvprodnfe.Rows.Count - 1).Cells(1)
                        .WriteString(dgvprodnfe.CurrentCell.Value)
                        .WriteEndElement()

                        .WriteStartElement("xProd")
                        Me.dgvprodnfe.CurrentCell = Me.dgvprodnfe.Rows(dgvprodnfe.Rows.Count - 1).Cells(2)
                        .WriteString(dgvprodnfe.CurrentCell.Value)
                        .WriteEndElement()

                        .WriteStartElement("NCM")
                        Me.dgvprodnfe.CurrentCell = Me.dgvprodnfe.Rows(dgvprodnfe.Rows.Count - 1).Cells(3)
                        .WriteString(dgvprodnfe.CurrentCell.Value)
                        .WriteEndElement()

                       

                        .WriteEndElement()

    Se tiver alguem que possa dar um exemplo pra isso acontecer,

    agradeço demais.

    Pablo Sousa


    PabloSousa

    sábado, 6 de janeiro de 2018 17:50

Respostas

  • Olá Pablo_1977

    Seria mais ou menos assim:

    For linha As Integer = 0 To dgvprodnfe.Rows.Count -1
    	 
    	.WriteStartElement("det") ' abre Item Produto 1 "det"
    	.WriteAttributeString("nItem", linha+1) ''' aqui no exemplo esta 1 item e aqui que preciso fazer a magica acontecer e se tiver 51 item e preciso pegar linha a linha e executar o codigo abaixo, para sair no xml os 51 itens exemplo.
    
    	.WriteStartElement("prod") ' abre Produto 1
    
    	.WriteStartElement("cProd")
    	.WriteString(Me.dgvprodnfe.Rows(linha).Cells(1).Value) 'Usando seu código, apenas acrescentando variavel LINHA
    	.WriteEndElement()
    
    	...
    	...
    	 
    Next

    Abraços!

     

    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    Rafael Almeida
    Microsoft Developer .NET
    Microsoft Certified Professional
    Development Leader at JAMSOFT Informática
    Email: ralms@ralms.net
    Blog -  GitHub  -  LinkedIn -  Twitter

    • Sugerido como Resposta AndreAlvesLimaModerator segunda-feira, 8 de janeiro de 2018 14:26
    • Marcado como Resposta Pablo_1977 segunda-feira, 8 de janeiro de 2018 14:42
    segunda-feira, 8 de janeiro de 2018 11:42

Todas as Respostas

  • Olá Pablo_1977

    Seria mais ou menos assim:

    For linha As Integer = 0 To dgvprodnfe.Rows.Count -1
    	 
    	.WriteStartElement("det") ' abre Item Produto 1 "det"
    	.WriteAttributeString("nItem", linha+1) ''' aqui no exemplo esta 1 item e aqui que preciso fazer a magica acontecer e se tiver 51 item e preciso pegar linha a linha e executar o codigo abaixo, para sair no xml os 51 itens exemplo.
    
    	.WriteStartElement("prod") ' abre Produto 1
    
    	.WriteStartElement("cProd")
    	.WriteString(Me.dgvprodnfe.Rows(linha).Cells(1).Value) 'Usando seu código, apenas acrescentando variavel LINHA
    	.WriteEndElement()
    
    	...
    	...
    	 
    Next

    Abraços!

     

    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    Rafael Almeida
    Microsoft Developer .NET
    Microsoft Certified Professional
    Development Leader at JAMSOFT Informática
    Email: ralms@ralms.net
    Blog -  GitHub  -  LinkedIn -  Twitter

    • Sugerido como Resposta AndreAlvesLimaModerator segunda-feira, 8 de janeiro de 2018 14:26
    • Marcado como Resposta Pablo_1977 segunda-feira, 8 de janeiro de 2018 14:42
    segunda-feira, 8 de janeiro de 2018 11:42
  • Bom dia Rafael!!!

    Bacana Rafael obrigado pela atenção, vou testar e coloco a resposta.

    Muito Obrigado!!!

    Pablo Sousa


    PabloSousa

    segunda-feira, 8 de janeiro de 2018 13:19
  • Boa Tarde Rafael!!!

    Rafael excelente deu tudo certo, agradeço demais a ajuda.

    Muito obrigado!!!

    Pablo Sousa.


    PabloSousa

    segunda-feira, 8 de janeiro de 2018 14:42