Ver Mensaje Individual
  #1 (permalink)  
Antiguo 23/04/2010, 11:40
Avatar de DarkWatch
DarkWatch
 
Fecha de Ingreso: marzo-2010
Ubicación: Mexico
Mensajes: 177
Antigüedad: 14 años, 11 meses
Puntos: 2
Ayuda con un Proceso de Inesrt... C#

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