CARGA BANCO DE DADOS COM GRIDVIEW

LEONARDOSILVEIR 27/12/2010 10:37:41
#360431
Pessoal mais um vez precisa da ajuda de vocês, preciso dar carga em uma tabela no meu BD em access atraves de um gridview, primeiramente preencho o gridview com os dados salvos em uma planilha em excel, após carregar os dados do excel no gridview, preciso imputar estes dados em uma tabela especifica no meu db. Estou utilizando o codigo abaixo para dar carga no banco, porém como utilizo muitos dados a solução ficou bem lenta para efetuar a carga, será que existe alguma outra forma mais rápida de efetuar a inserção destes dados?

Private Sub Btn_Salvar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btn_Salvar.Click
[txt-color=#0000f0] On Error GoTo MiscError
Dim conecção As New OleDbConnection([Ô]Provider=Microsoft.Jet.OLEDB.4.0;Data Source=.\Cadastro.mdb;Jet OLEDB:Database Password=xxxxxxxx[Ô])

For i As Integer = 0 To Me.DataGridView1.Rows.Count - 2
Dim sintaxe As String = ([Ô]INSERT INTO DADOS_OC (OC_NUMBER, NOME_REQUISITANTE, NOME_COMPRADOR, ID_FORNECEDOR, NOME_CURTO, CNPJ) VALUES (@OC_NUMBER, @NOME_REQUISITANTE, @NOME_COMPRADOR, @ID_FORNECEDOR, @NOME_CURTO, @CNPJ)[Ô])
Dim command As New OleDbCommand(sintaxe, conecção)
command.Parameters.Add([Ô]@OC_NUMBER[Ô], OleDb.OleDbType.VarChar).Value = Me.DataGridView1.Rows(i).Cells(0).Value
command.Parameters.Add([Ô]@NOME_REQUISITANTE[Ô], OleDb.OleDbType.VarChar).Value = Me.DataGridView1.Rows(i).Cells(1).Value
command.Parameters.Add([Ô]@NOME_COMPRADOR[Ô], OleDb.OleDbType.VarChar).Value = Me.DataGridView1.Rows(i).Cells(2).Value
command.Parameters.Add([Ô]@ID_FORNECEDOR[Ô], OleDb.OleDbType.VarChar).Value = Me.DataGridView1.Rows(i).Cells(3).Value
command.Parameters.Add([Ô]@NOME_CURTO[Ô], OleDb.OleDbType.VarChar).Value = Me.DataGridView1.Rows(i).Cells(4).Value
command.Parameters.Add([Ô]@CNPJ[Ô], OleDb.OleDbType.VarChar).Value = Me.DataGridView1.Rows(i).Cells(5).Value
conecção.Open()
Dim execute As String = command.ExecuteScalar()
conecção.Close()
sintaxe = Nothing
Next
DataGridView1.Columns.Clear()
MsgBox([Ô]Dados Inseridos com Sucesso![Ô], vbInformation)
CAMINHO_ARQUIVO.Text = [Ô][Ô]
Exit Sub
MiscError:
MsgBox([Ô]Error [Ô] & Err.Number & _
vbCrLf & Err.Description)[/txt-color]
End Sub
RODRIGOFERRO 27/12/2010 11:12:24
#360439
Resposta escolhida
Voce esta abrindo e fechando a conexao a cada loop se voce tiver 1500 loops ese vai abrir e fechar 1500x

tente abrir a conexao antes do loop e fecha-la apos o Loop. mais ou menos dessa forma


Private Sub Btn_Salvar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btn_Salvar.Click
On Error GoTo MiscError
Dim conecção As New OleDbConnection([Ô]Provider=Microsoft.Jet.OLEDB.4.0;Data Source=.\Cadastro.mdb;Jet OLEDB:Database Password=xxxxxxxx[Ô])

[ô]Abrindo Conexao
conecção.Open()

For i As Integer = 0 To Me.DataGridView1.Rows.Count - 2
Dim sintaxe As String = ([Ô]INSERT INTO DADOS_OC (OC_NUMBER, NOME_REQUISITANTE, NOME_COMPRADOR, ID_FORNECEDOR, NOME_CURTO, CNPJ) VALUES (@OC_NUMBER, @NOME_REQUISITANTE, @NOME_COMPRADOR, @ID_FORNECEDOR, @NOME_CURTO, @CNPJ)[Ô])
Dim command As New OleDbCommand(sintaxe, conecção)
command.Parameters.Add([Ô]@OC_NUMBER[Ô], OleDb.OleDbType.VarChar).Value = Me.DataGridView1.Rows(i).Cells(0).Value
command.Parameters.Add([Ô]@NOME_REQUISITANTE[Ô], OleDb.OleDbType.VarChar).Value = Me.DataGridView1.Rows(i).Cells(1).Value
command.Parameters.Add([Ô]@NOME_COMPRADOR[Ô], OleDb.OleDbType.VarChar).Value = Me.DataGridView1.Rows(i).Cells(2).Value
command.Parameters.Add([Ô]@ID_FORNECEDOR[Ô], OleDb.OleDbType.VarChar).Value = Me.DataGridView1.Rows(i).Cells(3).Value
command.Parameters.Add([Ô]@NOME_CURTO[Ô], OleDb.OleDbType.VarChar).Value = Me.DataGridView1.Rows(i).Cells(4).Value
command.Parameters.Add([Ô]@CNPJ[Ô], OleDb.OleDbType.VarChar).Value = Me.DataGridView1.Rows(i).Cells(5).Value
Dim execute As String = command.ExecuteScalar()
sintaxe = Nothing
Next
DataGridView1.Columns.Clear()
MsgBox([Ô]Dados Inseridos com Sucesso![Ô], vbInformation)
CAMINHO_ARQUIVO.Text = [Ô][Ô]

[ô]Fexando Conexao
conecção.Close()

Exit Sub
MiscError:
MsgBox([Ô]Error [Ô] & Err.Number & _
vbCrLf & Err.Description)
End Sub


Veja se melhor ai...
LEONARDOSILVEIR 27/12/2010 11:18:49
#360442
Boa ajuda mano, uma coisa bem simples que não me atentei! problema resolvido.
Tópico encerrado , respostas não são mais permitidas