Estoy haciendo una aplicacion, el cual cargo una tabla de acces, pero esta tabla tiene mas de 20 mil registros, y esta tabla la paso a una tabla de SQL, como el proceso es muy largo y tarda varios minutos, lo vincule a un backgroundworker, y un progres bar para que el usuario pudiera ver el porcentaje del proceso, parece funcionar muy bien sin embargo, la tabla de acces tiene un total de 20 mil registro, y despues de terminar mi proceso la tabla de SQL, inserto solo 19,500 registro, aque se deberá esto? o alguna idea de como podre hacer esto de una manera mas sencilla, alguna idea diferente...
les Paso el Código...
Codigo de insertar en SQL, ya cargue la tabla acces a un dataset..
Código:
El metodo de Nom.Guardar(Var); tiene este codigo...private void bwNomina_DoWork(object sender, DoWorkEventArgs e) { for (int i = 0; i < dsTrab.Tables["Nomina"].Rows.Count; i++) if (bwNomina.CancellationPending == true) { e.Cancel = true; break; } else { if (rbnomina.Checked) { var.Clave = int.Parse(dsTrab.Tables["Nomina"].Rows[i]["Num_Trabajador"].ToString()); var.Año = int.Parse(dsTrab.Tables["Nomina"].Rows[i]["AAAA"].ToString()); var.Periodo = int.Parse(dsTrab.Tables["Nomina"].Rows[i]["Periodo"].ToString()); var.Claveper = int.Parse(dsTrab.Tables["Nomina"].Rows[i]["Clave"].ToString()); var.Importe = double.Parse(dsTrab.Tables["Nomina"].Rows[i]["Cantidad"].ToString()); var.Unidades = double.Parse(dsTrab.Tables["Nomina"].Rows[i]["Unidades"].ToString()); var.Mes = int.Parse(dsTrab.Tables["Nomina"].Rows[i]["Mes"].ToString()); var.Cclave = int.Parse(dsTrab.Tables["Nomina"].Rows[i]["Cclave"].ToString()); var.FecIni = dsTrab.Tables["Nomina"].Rows[i]["FechaInicio"].ToString(); var.FecFin = dsTrab.Tables["Nomina"].Rows[i]["FechaFinal"].ToString(); Nom.Guarda(var); } bwNomina.ReportProgress(i); } }
Código:
Si pueden ayudarme porfavor se los agradeceria, o alguna idea por favorpublic void Guarda(AccesImportar var) { try { conex.Open(); comand = new SqlCommand("sp_AltaNomina", conex); comand.CommandType = CommandType.StoredProcedure; comand.Parameters.AddWithValue("@Num_Trabajador", var.Clave); comand.Parameters.AddWithValue("@AAAA", var.Año); comand.Parameters.AddWithValue("@Periodo", var.Periodo); comand.Parameters.AddWithValue("@Clave", var.Claveper); comand.Parameters.AddWithValue("@Cantidad", var.Importe); comand.Parameters.AddWithValue("@Unidades", var.Unidades); comand.Parameters.AddWithValue("@Mes", var.Mes); comand.Parameters.AddWithValue("@Cclave", var.Cclave); comand.Parameters.AddWithValue("@FechaInicio", var.FecIni); comand.Parameters.AddWithValue("@FechaFinal", var.FecFin); comand.ExecuteNonQuery(); conex.Close(); } catch { conex.Close(); throw; } }
