• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

PMSF

DataGridView - Gravar conteúdo na base dados

12 posts in this topic

bom dia

após importar dados do ficheiro .txt tenho que grava-los na base de dados (access).

já gravo linha a linha, mas demora um pouco.

é possivel não o fazer linha a linha?!

do genero actualizar base dados?

obrigado

0

Share this post


Link to post
Share on other sites

Sim  é possível, eu faço assim:

Dim ds As DataSet
Dim da As SQLiteDataAdapter

Private Sub gravar()
Dim cb As New SQLiteCommandBuilder(da) 'Cria um comando que te permite actualizar o dataset
da.Update(ds, "Obras") 'Actualiza na tabela as alterações efectuadas
end sub

0

Share this post


Link to post
Share on other sites

ok, vou ler o tópico, mas para isso é necessário q esteja a utilizar um dataset, correcto?

é que neste momento, todos os dados são passados sem dataset.

(por comando sql: "strSql = "insert into tbl" & cbxFarmacia.Text & " (CPR, NOM, FAP) value ... "

se sim como passo os dados que estão na datagridview para o dataset e depois para a tabela dados?!

como disse, vou ler o tópico e tentar obter respostas...

0

Share this post


Link to post
Share on other sites

Em termos objectivos...

Se não estou em erro tu tens que carregar o datagrid baseado no dataset, provavelmente por databinding.

Depois todas as alterações que fizeres estão a ser  feitas em memória em cima do datagrid. No final apenas tens que fazer o update do dataset que está a ser utilizado no datagrid...

0

Share this post


Link to post
Share on other sites

já li esses tópicos e sei que faz isso se, como dizem, tivesse carregado o datagridview pelo dataset, mas não foi isso que aconteceu.

foi carregado através de um ficheiro .txt exportado de outro programa.

o metodo que utilizo também grava bem os dados, a questão é que o faz linha a linha (os dados do .txt têm 19000 linhas) e procurava uma forma mais rápida de o fazer...

estava a pensar criar um dataset vazio, carregar o .txt, actualizar o dataset e passá-lo para a base de dados... mas assim tenho que passar todas as colunas para a base de dados  :hmm:

0

Share this post


Link to post
Share on other sites

Não creio que isso seja alternativa. Mesmo depois do DataSet estar carregado com as informações do teu .txt, a passagem dos campos para a base de dados será também lenta. Mas é uma questão de experimentares.

A passagem de muita informação para determinado sítio é sempre lenta, e vai depender muito da máquina que possuis. Já tens algum método para ler/escrever ficheiros .txt e/ou inserir na base de dados?

0

Share this post


Link to post
Share on other sites

Pois...

Os meus comentários anteriores presumiram sempre que o objectivo era efectivamente carregar o dataset para a base de dados... até porque:

1 - 19000 registos, são sempre 19000 registos... depende de que SGBD estamos a falar, qual a carga da máquina, o tamanho e tipo de cada um dos campos... etc... etc... etc... leva o seu tempo...não é instantâneo.

2 - Por outro lado, a verdade é que nessa abordagem, vais mesmo ter que escrever os dados para dois lados....  se carregares o datagrid directamente pela leitura do txt, vais ter que ler o datagrid para o dataset para depois ires à base de dados...

3 - Alerto ainda que tu não estás num operação de update onde  utilização do dataset tem vantagens adicionais porque segundo me parece ele identifica os registos que foram alterados e só actualiza esses...o que não é o caso..pois tu vais mesmo é fazer insert's...

Enfim...se calhar estás mesmo a usar o melhor método... tens que perceber é se o tempo é ou não aceitável...

0

Share this post


Link to post
Share on other sites

Obrigado por todas as ideias partilhadas.

optei pela seguinte ordem de processos:

1º Abrir ficheiro .txt com dados no formato CSV, e passá-los para uma DataTable

2º Preencher a DataGridView com os dados da DataTable

3º Gravar para a base de dados da aplicação os dados da DataGridView

como o processo é demorado, optei por apresentar uma ProgressBar para o utilizador ter uma confirmação visual que a aplicação está a correr, e quanto falta para acabar.

0

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now