//::Salva pos do DataGrid para o BD:: public void salvarInvent() { int cont = 0; // Contador de linhas int contEx = 0; // Contador de exceções string posicao, produto, descricao, umb, referencia, metodo_inv, uc, tipo_dep, status_inv; string data_criacao2, hora_criacao2, data_ativacao2, hora_ativacao2, data_contagem2, tempo_contagem2, data_lancamento2, hora_registro2; double qtd_registrada, qtd_cont_inv, qtd_dif; DateTime data_criacao, hora_criacao, data_ativacao, hora_ativacao, data_contagem, tempo_contagem, data_lancamento, hora_registro; int doc_inv, ordem, contador; LiteBD LiteBD = new LiteBD(); ToolStripProgressBar BarraProgresso = new ToolStripProgressBar(); lblStripSalvar.Text = "Salvando Inventários:"; frmPrincipal.statusStrip1.Items.Add(lblStripSalvar); frmPrincipal.statusStrip1.Items.Add(BarraProgresso); BarraProgresso.Maximum = dgvPos.RowCount; lblStripPorcent.Text = "0%"; frmPrincipal.statusStrip1.Items.Add(lblStripPorcent); Thread backgroundThread = new Thread( new ThreadStart(() => { LiteBD.AbrirConexao(); LiteBD.InsertDeleteUpdate("DELETE FROM Inventarios"); for (cont = 0; cont < dgvPos.RowCount; cont++) { try { doc_inv = Convert.ToInt32(string.IsNullOrEmpty(dgvPos.Rows[cont].Cells[0].Value.ToString()) ? 0 : dgvPos.Rows[cont].Cells[0].Value); ordem = Convert.ToInt32(string.IsNullOrEmpty(dgvPos.Rows[cont].Cells[1].Value.ToString()) ? 0 : dgvPos.Rows[cont].Cells[1].Value); posicao = dgvPos.Rows[cont].Cells[2].Value.ToString(); produto = dgvPos.Rows[cont].Cells[3].Value.ToString(); descricao = dgvPos.Rows[cont].Cells[4].Value.ToString().Replace("\"", "").Replace("'", ""); qtd_registrada = Convert.ToDouble(dgvPos.Rows[cont].Cells[5].Value.ToString()); qtd_cont_inv = Convert.ToDouble(dgvPos.Rows[cont].Cells[6].Value.ToString()); qtd_dif = Convert.ToDouble(dgvPos.Rows[cont].Cells[7].Value.ToString()); umb = dgvPos.Rows[cont].Cells[8].Value.ToString(); referencia = dgvPos.Rows[cont].Cells[9].Value.ToString(); metodo_inv = dgvPos.Rows[cont].Cells[10].Value.ToString(); data_criacao = DateTime.Parse( string.IsNullOrEmpty(dgvPos.Rows[cont].Cells[11].Value.ToString()) ? "01/01/9999": dgvPos.Rows[cont].Cells[11].Value.ToString().Substring(0, 10)); hora_criacao = DateTime.Parse( string.IsNullOrEmpty(dgvPos.Rows[cont].Cells[12].Value.ToString()) ? "99:99" : dgvPos.Rows[cont].Cells[12].Value.ToString()); data_ativacao = DateTime.Parse( string.IsNullOrEmpty(dgvPos.Rows[cont].Cells[13].Value.ToString()) ? "01/01/9999" : dgvPos.Rows[cont].Cells[13].Value.ToString().Substring(0, 10)); hora_ativacao = DateTime.Parse( string.IsNullOrEmpty(dgvPos.Rows[cont].Cells[14].Value.ToString()) ? "99:99" : dgvPos.Rows[cont].Cells[14].Value.ToString()); data_contagem = DateTime.Parse( string.IsNullOrEmpty(dgvPos.Rows[cont].Cells[15].Value.ToString()) ? "01/01/9999" : dgvPos.Rows[cont].Cells[15].Value.ToString().Substring(0, 10)); tempo_contagem = DateTime.Parse( string.IsNullOrEmpty(dgvPos.Rows[cont].Cells[16].Value.ToString()) ? "99:99" : dgvPos.Rows[cont].Cells[16].Value.ToString()); contador = Convert.ToInt32( string.IsNullOrEmpty(dgvPos.Rows[cont].Cells[17].Value.ToString()) ? 0 : dgvPos.Rows[cont].Cells[17].Value); // se a célula for vazia então 0 data_lancamento = DateTime.Parse( string.IsNullOrEmpty(dgvPos.Rows[cont].Cells[18].Value.ToString()) ? "01/01/9999" : dgvPos.Rows[cont].Cells[18].Value.ToString()); hora_registro = DateTime.Parse(dgvPos.Rows[cont].Cells[19].Value.ToString()); uc = dgvPos.Rows[cont].Cells[20].Value.ToString(); tipo_dep = dgvPos.Rows[cont].Cells[21].Value.ToString(); status_inv = dgvPos.Rows[cont].Cells[22].Value.ToString(); } catch (Exception ex) { MessageBox.Show("Dado inconsistente, por favor, importe a planilha novamente!" + "\n \n" + "Detalhe: " + ex.Message, "Erro na importação", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } //Convertendo datas para o formato do banco de dados data_criacao2 = (string.Format("{0,2:00}", data_criacao.Year) + "-" + string.Format("{0,2:00}", data_criacao.Month) + "-" + string.Format("{0,2:00}", data_criacao.Day)); data_ativacao2 = data_ativacao.Year.ToString() + "-" + string.Format("{0,2:00}", data_ativacao.Month) + "-" + string.Format("{0,2:00}", data_ativacao.Day); data_contagem2 = string.Format("{0,2:00}", data_contagem.Year) + "-" + string.Format("{0,2:00}", data_contagem.Month) + "-" + string.Format("{0,2:00}", data_contagem.Day); data_lancamento2 = data_lancamento.Year.ToString() + "-" + string.Format("{0,2:00}", data_lancamento.Month) + "-" + string.Format("{0,2:00}", data_lancamento.Day); hora_criacao2 = hora_criacao.Hour.ToString("00") + ":" + hora_ativacao.Minute.ToString("00"); hora_ativacao2 = hora_ativacao.Hour.ToString("00") + ":" + hora_ativacao.Minute.ToString("00"); tempo_contagem2 = tempo_contagem.Hour.ToString("00") + ":" + tempo_contagem.Minute.ToString("00"); hora_registro2 = hora_registro.Hour.ToString("00") + ":" + hora_registro.Minute.ToString("00"); SQL = "INSERT INTO Inventarios (doc_inv, ordem, posicao, produto, descricao_produto, qtd_registrada, qtd_cont_inv, qtd_dif, umb, " + "referencia, metodo_inv, data_criacao, hora_criacao, data_ativacao, hora_ativacao, data_contagem, tempo_contagem, contador, data_lancamento, hora_registro, uc, tipo_dep, status_inv)" + "values (" + doc_inv + ", " + ordem + ",'" + posicao + "','" + produto + "','" + descricao + "',REPLACE('" + qtd_registrada + "',',', '.'), REPLACE('" + qtd_cont_inv + "',',','.'), REPLACE('" + qtd_dif + "', ',', '.'),'" + umb + "','" + referencia + "', '" + metodo_inv + "','" + data_criacao2 + "','" + hora_criacao2 + "','" + data_ativacao2 + "','" + hora_ativacao2 + "','" + data_contagem2 + "', '" + tempo_contagem2 + "'," + contador + ",'" + data_lancamento2 + "','" + hora_registro2 + "','" + uc + "', '" + tipo_dep + "', '" + status_inv + "' )"; try { LiteBD.InsertDeleteUpdate(SQL); } catch (OleDbException) { contEx += 1; } catch (Exception ex) { MessageBox.Show("Erro desconhecido, contate o administrador do sistema! \n" + ex.Message, "Importação de Inventários", MessageBoxButtons.OK, MessageBoxIcon.Error); } BarraProgresso.Value = cont; lblStripPorcent.Text = Math.Round(((decimal)cont / (decimal)dgvPos.RowCount) * 100, 1).ToString() + "%"; if (produto == "") { produto = "0"; } if (cont == dgvPos.RowCount - 1) { // Se a thread já finalizou, destrói a Progressbar BarraProgresso.Dispose(); lblStripSalvar.Dispose(); lblStripPorcent.Dispose(); if (contEx == 0) { MessageBox.Show("Inventários salvo com sucesso!!!", "Importação de Inventários", MessageBoxButtons.OK, MessageBoxIcon.Information); } else { MessageBox.Show("Não foi possível salvar " + contEx + " linhas!", "Importação de Inventários", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } //txtUltimoInventario.Text = Conexao.consultaScalar("SELECT DAT_post & ' ÀS ' & MAX(hr_post) AS hr_post FROM INVENTARIO WHERE (((INVENTARIO.[DAT_POST])=(SELECT Max(dat_POST) FROM INVENTARIO))) group by dat_post"); } //if } //for LiteBD.FecharConexao(); } ));//thread backgroundThread.Start(); }