none
Salvar Dados do DataGridView No Sql2008 RRS feed

  • Pergunta

  • Boa noite Pessoal, estou desenvolvendo uma solução .NET no Visual Studio 2012 todo em camadas, tenho um form de entrada de itens que alimenta um DGV, a medida que são inseridos os dados pelos text box, são acrescentadas linhas no grid apos essa inserção necessito listar todo o conteúdo do grid e levar pro banco, estou tendo dificuldade em listar estes dados e levar para o banco. já virei horas vendo posts sobre o assunto mas nada que resolva meu problema. pelo que pesquisei o correto seria carregar um data table pelo datasource do grid e depois carregar uma coleção de dados e  levar para a regra de negócios e enfim para o banco mas não ta dando certo alguém pode me dar um HELP.

    segue o trecho de código que não ta dando certo.

    private void button1_Click(object sender, EventArgs e)
            {
                DataTable GRID = new DataTable();
                GRID = (DataTable)DGW_Estoque.DataSource;
                
                try
                {
                    if (DGW_Estoque.Rows.Count > 0)
                        
                        foreach (DataRow linha in GRID.Rows)
                        {
                            Estoque estoque = new Estoque();

                            estoque.DataAtual = Convert.ToDateTime(linha["DataAtual"]);
                            estoque.DataDoc = Convert.ToDateTime(linha["DataDoc"]);
                            estoque.Fornecedor = Convert.ToString(linha["Fornecedor"]);
                            estoque.Ndoc = Convert.ToInt16(linha["Ndoc"]);
                            estoque.DescProd = Convert.ToString(linha["DescProd"]);
                            estoque.NCM = Convert.ToInt16(linha["NCM"]);
                            estoque.CST = Convert.ToInt16(linha["CST"]);
                            estoque.CFOP = Convert.ToInt16(linha["CFOP"]);
                            estoque.UN = Convert.ToString(linha["UN"]);
                            estoque.Qtd = Convert.ToDecimal(linha["Qtd"]);
                            estoque.VUnit = Convert.ToDecimal(linha["VUnit"]);
                            estoque.VDesc = Convert.ToDecimal(linha["VDesc"]);
                            estoque.SubTotal = Convert.ToDecimal(linha["SubTotal"]);
                            estoque.BCICMS = Convert.ToDecimal(linha["BCICMS"]);
                            estoque.VICMS = Convert.ToDecimal(linha["VICMS"]);
                            estoque.VIPI = Convert.ToDecimal(linha["VIPI"]);
                            estoque.AliqICMS = Convert.ToDecimal(linha["AliqICMS"]);
                            estoque.AliqIPI = Convert.ToDecimal(linha["AliqIPI"]);
                            estoque.CentroCusto = Convert.ToString(linha["CentroCusto"]);
                            estoque.FormaPgto = Convert.ToString(linha["FormaPgto"]);
                            estoque.Total = Convert.ToDecimal(linha["Total"]);
                            EstoqueNegocios estoqueNegocios = new EstoqueNegocios();
                            string retorno = estoqueNegocios.Inserir(estoque);

    Grato!

     
    quinta-feira, 7 de maio de 2015 23:42

Respostas

  • Tende dessa maneira (Considerando que o script de inserção de dados esteja correto):

     for(int linha=0;linha<=DataGridView.Rows.Count;linha++)
                        {
                            Estoque estoque = new Estoque();
    
                            estoque.DataAtual = Convert.ToDateTime(DataGridView.Rows[linha].Cells[0].value);
                            estoque.DataDoc = Convert.ToDateTime(DataGridView.Rows[linha].Cells[1].value);
                            estoque.Fornecedor = Convert.ToString(DataGridView.Rows[linha].Cells[2].value);
                            estoque.Ndoc = Convert.ToInt16(DataGridView.Rows[linha].Cells[3].value);
                            estoque.DescProd = Convert.ToString(DataGridView.Rows[linha].Cells[4].value);
                            estoque.NCM = Convert.ToInt16(DataGridView.Rows[linha].Cells[5].value);
                            estoque.CST = Convert.ToInt16(DataGridView.Rows[linha].Cells[6].value);
                            estoque.CFOP = Convert.ToInt16(DataGridView.Rows[linha].Cells[7].value);
                            estoque.UN = Convert.ToString(DataGridView.Rows[linha].Cells[8].value);
                            estoque.Qtd = Convert.ToDecimal(DataGridView.Rows[linha].Cells[9].value);
                            estoque.VUnit = Convert.ToDecimal(DataGridView.Rows[linha].Cells[10].value);
                            estoque.VDesc = Convert.ToDecimal(DataGridView.Rows[linha].Cells[11].value);
                            estoque.SubTotal = Convert.ToDecimal(DataGridView.Rows[linha].Cells[12].value);
                            estoque.BCICMS = Convert.ToDecimal(DataGridView.Rows[linha].Cells[13].value);
                            estoque.VICMS = Convert.ToDecimal(DataGridView.Rows[linha].Cells[14].value);
                            estoque.VIPI = Convert.ToDecimal(DataGridView.Rows[linha].Cells[15].value);
                            estoque.AliqICMS = Convert.ToDecimal(DataGridView.Rows[linha].Cells[16].value);
                            estoque.AliqIPI = Convert.ToDecimal(DataGridView.Rows[linha].Cells[17].value);
                            estoque.CentroCusto = Convert.ToString(DataGridView.Rows[linha].Cells[18].value);
                            estoque.FormaPgto = Convert.ToString(DataGridView.Rows[linha].Cells[19].value);
                            estoque.Total = Convert.ToDecimal(DataGridView.Rows[linha].Cells[20].value);
    
                            EstoqueNegocios estoqueNegocios = new EstoqueNegocios();
                            string retorno = estoqueNegocios.Inserir(estoque);
    }


    GTSA vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel


    sexta-feira, 8 de maio de 2015 20:07

Todas as Respostas

  • por favor, coloque o erro que esta acontecendo.

    MCP - MCSD Se a Resposta foi util, por favor marque como Valida assim esta contribuindo para gratificar toda a ajuda de nossos colegas. Paulo Caleffi

    sexta-feira, 8 de maio de 2015 10:45
  • Quais os erros que ocorrem?

    GTSA vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel

    sexta-feira, 8 de maio de 2015 12:00
  • Voce vai ter converter o teu datagridview em datatable depois grava na tabela 

    A flower cannot blossom without sunshine, and man cannot live without love.

    sexta-feira, 8 de maio de 2015 19:14
    Moderador
  • Tende dessa maneira (Considerando que o script de inserção de dados esteja correto):

     for(int linha=0;linha<=DataGridView.Rows.Count;linha++)
                        {
                            Estoque estoque = new Estoque();
    
                            estoque.DataAtual = Convert.ToDateTime(DataGridView.Rows[linha].Cells[0].value);
                            estoque.DataDoc = Convert.ToDateTime(DataGridView.Rows[linha].Cells[1].value);
                            estoque.Fornecedor = Convert.ToString(DataGridView.Rows[linha].Cells[2].value);
                            estoque.Ndoc = Convert.ToInt16(DataGridView.Rows[linha].Cells[3].value);
                            estoque.DescProd = Convert.ToString(DataGridView.Rows[linha].Cells[4].value);
                            estoque.NCM = Convert.ToInt16(DataGridView.Rows[linha].Cells[5].value);
                            estoque.CST = Convert.ToInt16(DataGridView.Rows[linha].Cells[6].value);
                            estoque.CFOP = Convert.ToInt16(DataGridView.Rows[linha].Cells[7].value);
                            estoque.UN = Convert.ToString(DataGridView.Rows[linha].Cells[8].value);
                            estoque.Qtd = Convert.ToDecimal(DataGridView.Rows[linha].Cells[9].value);
                            estoque.VUnit = Convert.ToDecimal(DataGridView.Rows[linha].Cells[10].value);
                            estoque.VDesc = Convert.ToDecimal(DataGridView.Rows[linha].Cells[11].value);
                            estoque.SubTotal = Convert.ToDecimal(DataGridView.Rows[linha].Cells[12].value);
                            estoque.BCICMS = Convert.ToDecimal(DataGridView.Rows[linha].Cells[13].value);
                            estoque.VICMS = Convert.ToDecimal(DataGridView.Rows[linha].Cells[14].value);
                            estoque.VIPI = Convert.ToDecimal(DataGridView.Rows[linha].Cells[15].value);
                            estoque.AliqICMS = Convert.ToDecimal(DataGridView.Rows[linha].Cells[16].value);
                            estoque.AliqIPI = Convert.ToDecimal(DataGridView.Rows[linha].Cells[17].value);
                            estoque.CentroCusto = Convert.ToString(DataGridView.Rows[linha].Cells[18].value);
                            estoque.FormaPgto = Convert.ToString(DataGridView.Rows[linha].Cells[19].value);
                            estoque.Total = Convert.ToDecimal(DataGridView.Rows[linha].Cells[20].value);
    
                            EstoqueNegocios estoqueNegocios = new EstoqueNegocios();
                            string retorno = estoqueNegocios.Inserir(estoque);
    }


    GTSA vantagem de ser inteligente é que podemos fingir que somos imbecis enquanto ao contrario é completamente impossivel


    sexta-feira, 8 de maio de 2015 20:07