Que tal compañero...
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:
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);
}
}
El metodo de Nom.Guardar(Var); tiene este codigo...
Código:
public 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; }
}
Si pueden ayudarme porfavor se los agradeceria, o alguna idea por favor