none
Salvar dados do datagridviewer em um banco de dados SDF RRS feed

  • Pergunta

  • Boa noite pessoal!

    Pelo nível da minha pergunta ficará claro que sou iniciante, por isso preciso de uma ajuda detalhada para resolver um procedimento básico, a seguir descrito:

    Vasculhando os fóruns aqui, descobri uma maneira de importar os dados de uma planilha excel para um datagridviewer, até aí funciona perfeitamente, entretanto o código disponibilizado não descreveu como salvar as informações no bando de dados.

    No meu caso, tenho um banco de dados "paddados.sdf", tendo uma tabela "PAD" localizado em "c:\dados" e utilizo o VISUAL BASIC 2012, já tentei adaptar inúmeras soluções apresentadas, mas sempre aparece um erro diferente o que me impede de concluir o trabalho. 

    Pode parecer preguiça, pois poderia alimentar via projeto, haja vista que as rotinas de inserir, alterar e excluir estão todas implementadas. Acontece que são mais de 10.000 linhas, com 20 colunas cada no excel, levaria meses para fazer isso, correndo o risco de cadastrar um processo errado.

    Concluindo, como faço para implementar o código para salvar os dados na tabela PAD.

    Grato!

    Apresento a seguir o código até a fase de preenchimento do grid:

           

    Imports System.Data.OleDb
    Imports System.Data.SqlClient

    Public Class importaexcel

        'Lê os dados do Arquivo Excel
        Private Function LerExcel(arquivo As String, nomeAba As String) As DataSet
            Dim dts As New DataSet
            'String de Conexão
            Dim conexao As String = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
                                    "Data Source=" & _
                                    arquivo & _
                                    ";Extended Properties=Excel 8.0;"
            'Comando SQL
            Dim sql As String = "select * from [" + nomeAba + "]"
            Dim conn As OleDbConnection = Nothing

            Try
                conn = New OleDbConnection(conexao)
                Dim cmd As New OleDbCommand(sql, conn)
                Dim da As New OleDbDataAdapter(cmd)
                'Aqui Preenchemos o DataSet
                da.Fill(dts)
            Catch ex As Exception
                MessageBox.Show("Erro na Leitura do Arquivo.")
            Finally
                If conn IsNot Nothing AndAlso conn.State = ConnectionState.Open Then
                    conn.Close()
                End If
            End Try

            Return dts
        End Function

        Private Sub Button1_Click_1(sender As Object, e As EventArgs) Handles Button1.Click

            Dim arquivo As New OpenFileDialog
            'Abrimos a seleção do arquivo excel
            If arquivo.ShowDialog = Windows.Forms.DialogResult.OK Then
            End If
            DGVEXCEL.DataSource = LerExcel(arquivo.FileName, "Plan1$").Tables(0)
            dgvcopia.DataSource = DGVEXCEL.DataSource

        End Sub


    End Class


    • Editado EDSON PASSOS quinta-feira, 17 de julho de 2014 19:09
    quinta-feira, 17 de julho de 2014 18:47

Respostas

  • Deu certo. rs...

    Cara você me quebrou um galho enorme. 

    Sei que tem uma pontuação no fórum, como faço para marcar seu nome como item resolvido?

     rs que bom que conseguiu,

      para marcar uma resposta Edson basta selecionar a opção "Marcar como Resposta" e vai mudar o ícone da sua Thread como Respondido.

     Lembrando que a importância de marcar seu post como resolvido é que outros usuarios possam pesquisar a solução para o problema também. Qualquer dúvida pode postar !

    • Marcado como Resposta EDSON PASSOS sexta-feira, 18 de julho de 2014 19:35
    sexta-feira, 18 de julho de 2014 19:15
  • Marquei.

    Obrigado pela disposição e paciência de transmitir conhecimento.

    Valeu!

    • Marcado como Resposta EDSON PASSOS sexta-feira, 18 de julho de 2014 19:36
    sexta-feira, 18 de julho de 2014 19:36

Todas as Respostas

  • Olá Edson,

     as colunas de sua tabela são iguais as de seu DataGridView ?

    quinta-feira, 17 de julho de 2014 19:32
  • Opá, obrigado pela atenção.

    O datagrid não está vinculado à tabela do banco, ele traz exatamente como disposto na planilha excel.

    A planilha excel apresenta os mesmos campos da tabela, só falta agora o pulo do gato, que é conectar o datagrid á tabela e salvar os dados.

    Caso você conheça uma forma mais prática de fazer isso, também atenderia muito bem ao meu objetivo.


    quinta-feira, 17 de julho de 2014 19:38
  • Tem como fazer diretamente,

      mas isso depende, se é interessante o usuario ver o que será salvo no datagrid ou não...

      Você já fez sua classe de conexão a sua tabela sql ?

    sexta-feira, 18 de julho de 2014 14:46
  • Na verdade só eu usarei este programa quando precisar importar processos do excel para o banco de dados, portanto não há restrições quanto a usuários. A única etapa que fiz até agora foi a apresentada acima, a qual apenas disponibiliza os dados do excel no datagrid.

    sexta-feira, 18 de julho de 2014 15:14
  • Entendi,

     veja se consegue se conectar ao seu banco usando este Tutorial aqui !

      Quando conseguir posta que eu lhe ajudo a fazer sua classe para salvar os dados.

    sexta-feira, 18 de julho de 2014 16:39
  • Tentarei agora, obrigado pela ajuda.
    sexta-feira, 18 de julho de 2014 16:52
  • Acabei de analisar o tutorial.

    O banco já está conectado ao projeto, já criei o dataset,  tableadapter, tudo funcionando beleza. A única coisa que me falta é pegar as informações do datagrid e salvar na tabela pad.

    Encaminhei por email as duas telas para você conferir.

    sexta-feira, 18 de julho de 2014 17:09
  • Daniel, para tentar ser mais claro vou mostrar como faço em outros formulários:

    Para inserir dados na tabela via textbox faço assim:

    PADTableAdapter.InsertQuery(textbox1.text,textbox2.text, textbox3.text,...)

    Me.PADTableAdapter.Fill(Me.PADDADOSDataSet.PAD)

    Mas no caso em tela, que os dados vêm do datagrid não sei o que colocar entre parenteses.

    PADTableAdapter.InsertQuery(????????????????????????????????????????????????????)

    sexta-feira, 18 de julho de 2014 17:31
  • Veja se isso lhe ajuda :

    For Each linha As DataGridViewRow In DataGridView1.Rows
    
                'MOSTRO O VALOR DA LINHA ATUAL NA CELULA 0
                MessageBox.Show(linha.Cells(0).Value)
                'MOSTRO O VALOR DA LINHA ATUAL NA CELULA 0
                MessageBox.Show(linha.Cells(1).Value)
    
                'NO SEU CASO FICARIA MAIS OU MENOS
                PADTableAdapter.InsertQuery(linha.Cells(0).Value, linha.Cells(1).Value)
    
            Next

    sexta-feira, 18 de julho de 2014 17:58
  • Daniel,  nesse caso terei que fazer isso para as 10.000 linhas?

    sexta-feira, 18 de julho de 2014 18:46
  • Daniel,  nesse caso terei que fazer isso para as 10.000 linhas?

     Não ! O loop faz isso mas vai ser inserido dez mil linhas isso vai levar um tempo.... 


    sexta-feira, 18 de julho de 2014 18:59
  • Deu certo. rs...

    Cara você me quebrou um galho enorme. 

    Sei que tem uma pontuação no fórum, como faço para marcar seu nome como item resolvido?

    sexta-feira, 18 de julho de 2014 19:06
  • Deu certo. rs...

    Cara você me quebrou um galho enorme. 

    Sei que tem uma pontuação no fórum, como faço para marcar seu nome como item resolvido?

     rs que bom que conseguiu,

      para marcar uma resposta Edson basta selecionar a opção "Marcar como Resposta" e vai mudar o ícone da sua Thread como Respondido.

     Lembrando que a importância de marcar seu post como resolvido é que outros usuarios possam pesquisar a solução para o problema também. Qualquer dúvida pode postar !

    • Marcado como Resposta EDSON PASSOS sexta-feira, 18 de julho de 2014 19:35
    sexta-feira, 18 de julho de 2014 19:15
  • Marquei.

    Obrigado pela disposição e paciência de transmitir conhecimento.

    Valeu!

    • Marcado como Resposta EDSON PASSOS sexta-feira, 18 de julho de 2014 19:36
    sexta-feira, 18 de julho de 2014 19:36