none
Progressbar com insert no banco RRS feed

  • Pergunta

  • Amigos,

    num botão (gravar) tenho a função de ler um arquivo TXT e salvar os registros no banco.

    Porém, gostaria um progressbar tivesse sua evolução até concluir todos os inserts. A quantidade de registros serão variádos, ou seja, a propriedade maximum será de 0 a infinito. Encontrei vários exemplo, mas não consegui implementar no meu código (abaixo).

     private void bntGravar_Click(object sender, EventArgs e)
            {
    
                if (File.Exists(txtArquivo.Text))
                {
                    using (StreamReader fluxotexto = new StreamReader(txtArquivo.Text))
                        while (true)
                        {
                            string linhatexto = fluxotexto.ReadLine();
                            if (linhatexto == null)
                            {
                                break;
                            }
                            string[] quebra = linhatexto.Split(new Char[] { ';' });
                            cadastra(quebra[0], quebra[1], quebra[2]);
                        }
                }
                else
                {
                    MessageBox.Show("Arquivo não existe");
                }
            }
    
            private void cadastra(string CPF, string NOME, string EMAIL)
            {
                string connetionString = null;
                SqlConnection cnn = default(SqlConnection);
                SqlCommand cmd = default(SqlCommand);
                string sql = null;
                connetionString = @"Data Source=.\SQLEXPRESS;Initial Catalog=CRUD;Integrated Security=SSPI";
    
                sql = String.Format("IF NOT EXISTS (SELECT * FROM teste_importacao WHERE cpf='{0}' )\n\tINSERT INTO teste_importacao(cpf,nome,email) VALUES ('{0}','{1}','{2}')", CPF, NOME, EMAIL);
                LogWriter.WriteLog(sql); //Gera o log da instruação SQL acima.
                //sql = "Insert into teste_importacao (cpf, nome, email) Values ('" + CPF + "','" + NOME + "','" + EMAIL + "')";
                cnn = new SqlConnection(connetionString);
    
                try
                {               
                    cnn.Open();
                    cmd = new SqlCommand(sql, cnn);
                    Int32 contador = Convert.ToInt32(cmd.ExecuteScalar());
                    cmd.Dispose();
                    cnn.Close();
                    lblMensagem.Text = " Arquivo gravado com sucesso!";
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Não foi possível abrir a conexão com o banco de dados ! " + ex.Message.ToString());
                } 
    
    
            }


    Abraços, Julio Malliotti

    segunda-feira, 22 de setembro de 2014 01:32

Respostas

  • Boa tarde Julio, fiz uma pequena alteração no evento click do botão gravar. Segue abaixo.

    private void bntGravar_Click(object sender, EventArgs e) { #region CONTA A QUANTIDADE DE QUEBRA DE LINHA TEM NO ARQUIVO System.Text.RegularExpressions.Regex re = new System.Text.RegularExpressions.Regex("\r\n"); System.IO.StreamReader sr =new System.IO.StreamReader("C:\Folder\Arquivo.txt"); string txt = sr.ReadToEnd(); sr.Close(); int totalLinhas = re.Matches(txt).Count + 1;

    #endregion progressBar1.Minimum = 0; //SETA O VALOR MINIMO DO OBJETO PROGRESSBAR PARA 0 progressBar1.Maximum = totalLinhas; // SETA O VALOR MAXIMO DO OBJETO PARA A QUANTIDADE DE LINHA DO ARQUIVO if (File.Exists(txtArquivo.Text)) { System.IO.StreamReader fluxotexto = new System.IO.StreamReader(txtArquivo.Text) for (int i = 0; i < totalLinhas; i++) { string linhatexto = fluxotexto.ReadLine(); if (linhatexto == null) { break; } string[] quebra = linhatexto.Split(new Char[] { ';' }); cadastra(quebra[0], quebra[1], quebra[2]); progressBar1.Value = i;

    progressBar1.Refresh(); } } else { MessageBox.Show("Arquivo não existe"); } }

    Veja se isso te ajuda.

    Dúvidas estou à disposição!


    Willian Barreto O perfeito é desumano, porque o humano é imperfeito! Antes de imprimir, pense em sua responsabilidade e compromisso com o Meio Ambiente.

    Obrigado. Deu certo.

    Abraços, Julio Malliotti

    • Marcado como Resposta Malliotti terça-feira, 23 de setembro de 2014 12:36
    terça-feira, 23 de setembro de 2014 12:33

Todas as Respostas

  • onde voce coloca o progressbar?


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

    segunda-feira, 22 de setembro de 2014 18:57
    Moderador
  • Boa tarde Julio, fiz uma pequena alteração no evento click do botão gravar. Segue abaixo.

    private void bntGravar_Click(object sender, EventArgs e) { #region CONTA A QUANTIDADE DE QUEBRA DE LINHA TEM NO ARQUIVO System.Text.RegularExpressions.Regex re = new System.Text.RegularExpressions.Regex("\r\n"); System.IO.StreamReader sr =new System.IO.StreamReader("C:\Folder\Arquivo.txt"); string txt = sr.ReadToEnd(); sr.Close(); int totalLinhas = re.Matches(txt).Count + 1;

    #endregion progressBar1.Minimum = 0; //SETA O VALOR MINIMO DO OBJETO PROGRESSBAR PARA 0 progressBar1.Maximum = totalLinhas; // SETA O VALOR MAXIMO DO OBJETO PARA A QUANTIDADE DE LINHA DO ARQUIVO if (File.Exists(txtArquivo.Text)) { System.IO.StreamReader fluxotexto = new System.IO.StreamReader(txtArquivo.Text) for (int i = 0; i < totalLinhas; i++) { string linhatexto = fluxotexto.ReadLine(); if (linhatexto == null) { break; } string[] quebra = linhatexto.Split(new Char[] { ';' }); cadastra(quebra[0], quebra[1], quebra[2]); progressBar1.Value = i;

    progressBar1.Refresh(); } } else { MessageBox.Show("Arquivo não existe"); } }

    Veja se isso te ajuda.

    Dúvidas estou à disposição!


    Willian Barreto O perfeito é desumano, porque o humano é imperfeito! Antes de imprimir, pense em sua responsabilidade e compromisso com o Meio Ambiente.

    • Sugerido como Resposta Mr. GMSOFT segunda-feira, 22 de setembro de 2014 20:05
    segunda-feira, 22 de setembro de 2014 19:59
  • Boa tarde Julio, fiz uma pequena alteração no evento click do botão gravar. Segue abaixo.

    private void bntGravar_Click(object sender, EventArgs e) { #region CONTA A QUANTIDADE DE QUEBRA DE LINHA TEM NO ARQUIVO System.Text.RegularExpressions.Regex re = new System.Text.RegularExpressions.Regex("\r\n"); System.IO.StreamReader sr =new System.IO.StreamReader("C:\Folder\Arquivo.txt"); string txt = sr.ReadToEnd(); sr.Close(); int totalLinhas = re.Matches(txt).Count + 1;

    #endregion progressBar1.Minimum = 0; //SETA O VALOR MINIMO DO OBJETO PROGRESSBAR PARA 0 progressBar1.Maximum = totalLinhas; // SETA O VALOR MAXIMO DO OBJETO PARA A QUANTIDADE DE LINHA DO ARQUIVO if (File.Exists(txtArquivo.Text)) { System.IO.StreamReader fluxotexto = new System.IO.StreamReader(txtArquivo.Text) for (int i = 0; i < totalLinhas; i++) { string linhatexto = fluxotexto.ReadLine(); if (linhatexto == null) { break; } string[] quebra = linhatexto.Split(new Char[] { ';' }); cadastra(quebra[0], quebra[1], quebra[2]); progressBar1.Value = i;

    progressBar1.Refresh(); } } else { MessageBox.Show("Arquivo não existe"); } }

    Veja se isso te ajuda.

    Dúvidas estou à disposição!


    Willian Barreto O perfeito é desumano, porque o humano é imperfeito! Antes de imprimir, pense em sua responsabilidade e compromisso com o Meio Ambiente.

    Obrigado. Deu certo.

    Abraços, Julio Malliotti

    • Marcado como Resposta Malliotti terça-feira, 23 de setembro de 2014 12:36
    terça-feira, 23 de setembro de 2014 12:33
  • Se precisar estamos ai.

    Willian Barreto O perfeito é desumano, porque o humano é imperfeito! Antes de imprimir, pense em sua responsabilidade e compromisso com o Meio Ambiente.

    terça-feira, 23 de setembro de 2014 21:16