Usuário com melhor resposta
ProgressBar

Pergunta
-
Boa tarde galera,
tenho a rotina abaixo, que executa uma procedure no banco de dados e depois faz uma varredura de dados através de um for e inseri em uma outra tabela, e essa rotina as vezes demora um pouco, então pensei de colocar um progressbar para o usuário ter ideia do tempo.
Como faço isso?
Tenho que colocar minha rotina dentro do timer, ou do progressbar, ou em botão da forma que está hoje e chamo o progressbar?
or (int a = 0; a <= dgvExecPlan.Rows.Count - 1; a++)
{
txtCodProdFicTec.Text = dgvExecPlan.Rows[a].Cells[0].Value.ToString();
txtQtd.Text = dgvExecPlan.Rows[a].Cells[1].Value.ToString();
SqlConnection conn = new SqlConnection(@"SERVER=SERVER;DATABASE=TESTE_PCP_1;UID=sa;PASSWORD=634zambow6pic08;");
string dataIni = DataCalcFicTec.Text;
string data1 = dataIni.Substring(3, 2) + "-" + dataIni.Substring(0, 2) + "-" + dataIni.Substring(6, 4);
SqlDataAdapter sda = new SqlDataAdapter("EXECUTE USER_NECESS_COMPRA '1', '" + txtCodProdFicTec.Text + "', '" + data1 + "', '" + txtQtd.Text + "', 'Sim'", conn);
DataTable dt = new DataTable();
sda.Fill(dt);
dgvExpFicTec.DataSource = dt;
{
SqlConnection conn1 = new SqlConnection(@"SERVER=SERVER;DATABASE=TESTE_PCP_1;UID=sa;PASSWORD=634zambow6pic08;");
string sql = "INSERT INTO USER_COMP_MAT_PRI(ProdCodEstr, ProdNome, ProdUnidMed, FicTecProdQtd) VALUES (@ProdCodEstr, @ProdNome, @ProdUnidMed, @FicTecProdQtd)";
for (int i = 0; i <= dgvExpFicTec.Rows.Count - 1; i++)
try
{
{
SqlCommand comando = new SqlCommand(sql, conn1);
comando.Parameters.Clear();
comando.Parameters.AddWithValue("ProdCodEstr", dgvExpFicTec.Rows[i].Cells[0].Value);
comando.Parameters.AddWithValue("ProdNome", dgvExpFicTec.Rows[i].Cells[1].Value);
comando.Parameters.AddWithValue("ProdUnidMed", dgvExpFicTec.Rows[i].Cells[3].Value);
comando.Parameters.AddWithValue("FicTecProdQtd", dgvExpFicTec.Rows[i].Cells[4].Value);
conn1.Open();
comando.ExecuteNonQuery();
}
conn1.Close();
}
finally
{
SqlDataAdapter sda1 = new SqlDataAdapter("select ProdCodEstr, (select ProdNome FROM PRODUTO WITH(NOLOCK) WHERE ProdCodEstr = USER_COMP_MAT_PRI.ProdCodEstr) as ProdNome, ProdUnidMed 'UnidMed', sum(FicTecProdQtd) as FicTecProdQtd from USER_COMP_MAT_PRI WITH(NOLOCK) where ProdNome not like '%MÃO DE OBRA%' and ProdCodEstr like '%" + txtFamilia.Text + "%' group by ProdCodEstr, ProdUnidMed ORDER BY ProdCodEstr", conn1);
DataTable dt1 = new DataTable();
sda1.Fill(dt1);
dgvCompMatPri.DataSource = dt1;
conn1.Close();
}
Desde já Grato!
Respostas
-
- Editado Lailson Conceição segunda-feira, 2 de maio de 2016 23:45
- Sugerido como Resposta Manoel Neto MSYS terça-feira, 3 de maio de 2016 20:04
- Marcado como Resposta Marcos SJ quarta-feira, 4 de maio de 2016 17:43
Todas as Respostas
-
- Editado Lailson Conceição segunda-feira, 2 de maio de 2016 23:45
- Sugerido como Resposta Manoel Neto MSYS terça-feira, 3 de maio de 2016 20:04
- Marcado como Resposta Marcos SJ quarta-feira, 4 de maio de 2016 17:43
-
Sugiro também como é uma carregamento logo e pesado cria (Threads) para que o progress bar nao fiquei lento e fassa a contagem, também que o sistema não fiquei lento.
A orientação Lailson Conceição é útil e tem essa informação.
At. te. Manoel Neto
- Editado Manoel Neto MSYS terça-feira, 3 de maio de 2016 00:09
-