/*Esto es la parte mas importante, pues es la que sincroniza con el servidor trae la informacion y la inserta en sql server por medio de datatables*/
        public static void EjecutaOrdenes(string Proyecto, string Filtro, int IdFecha)
        {
            string Mensaje = "";

             DataDataContext db = new DataDataContext();
             db.CommandTimeout = 900000;

             /*DIA 11-11-2014 3:57 PM COMENTADA ESTA LINEA*/
            /* if (db.ValidarSiHayRegistros() >= 1)
             {

                 Mensaje = "Servidor ocupado, intente nuevamente";
                 return;

             }
             else
             {*/

                 string sConnectionString1 = ConfigurationManager.ConnectionStrings["ArchivoCostosConnectionString"].ConnectionString;
                 string sConnectionString2 = ConfigurationManager.ConnectionStrings["ArchivoCostosConnectionString"].ConnectionString;
                 string sConnectionString3 = ConfigurationManager.ConnectionStrings["ArchivoCostosConnectionString"].ConnectionString;
                 string sConnectionString4 = ConfigurationManager.ConnectionStrings["ArchivoCostosConnectionString"].ConnectionString;
                 string sConnectionString5 = ConfigurationManager.ConnectionStrings["ArchivoCostosConnectionString"].ConnectionString;

                 //Abrir la Conexion
                 Utilidades cn = new Utilidades();

                 //Ejecutar los Comando que Deseemos.
                // Recordemos que el Metodo Ejecutar no Regresa un Objeto del tipo DataSet que es como una Colecion de Tablas. Y si queremos poner el resultado del comando en una Tabla hariamos lo siguiente:
               //Antes de Terminar permiten Recomendarles la forma de utilizar la clase Conexion y el Manejo de Excepciones.

                 try
                 {

                     SqlBulkCopy copia = new SqlBulkCopy(sConnectionString1);
                     SqlBulkCopy copia2 = new SqlBulkCopy(sConnectionString2);
                     SqlBulkCopy copia3 = new SqlBulkCopy(sConnectionString3);
                     SqlBulkCopy copia4 = new SqlBulkCopy(sConnectionString4);
                     SqlBulkCopy copia5 = new SqlBulkCopy(sConnectionString5);

                     /*Copia a las tablas ordenes y ordenes temporales*/
                     cn.Abrir1();
                         DataTable TablaOrdenes = cn.VerTabla1(Consultas.Ordenes(Proyecto, IdFecha), "OrdenesTemp");
                         copia.DestinationTableName = "OrdenesTemp";
                         copia.BulkCopyTimeout = 900000;
                         copia.WriteToServer(TablaOrdenes);
                         copia.DestinationTableName = "Ordenes";
                         copia.WriteToServer(TablaOrdenes);
                     cn.Cerrar1();

                     /*Copia a las tablas costoentrado y costoentrado temporales*/
                     cn.Abrir2();
                         DataTable TablaConsultas = cn.VerTabla2(Consultas.CostoEntrado(Proyecto, IdFecha), "CostoEntradoTemp");
                         copia2.DestinationTableName = "CostoEntradoTemp";
                         copia2.BulkCopyTimeout = 900000;
                         copia2.WriteToServer(TablaConsultas);
                         copia2.DestinationTableName = "CostoEntrado";
                         copia2.WriteToServer(TablaConsultas);
                     cn.Cerrar2();

                     /*Copia a las tablas Pedidos y Pedidos temporales*/
                     cn.Abrir3();
                         DataTable TablaPedidos = cn.VerTabla3(Consultas.Pedidos(Proyecto, IdFecha), "PedidosTemp");
                         copia3.DestinationTableName = "PedidosTemp";
                         copia3.BulkCopyTimeout = 900000;
                         copia3.WriteToServer(TablaPedidos);
                         copia3.DestinationTableName = "Pedidos";
                         copia3.WriteToServer(TablaPedidos);
                     cn.Cerrar3();

                     /*Copia a las tablas Salidas y Salidas temporales*/
                     cn.Abrir4();
                         DataTable TablaSalidas = cn.VerTabla4(Consultas.Salidas(Proyecto, IdFecha), "SalidasTemp");
                         copia4.DestinationTableName = "SalidasTemp";
                         copia4.BulkCopyTimeout = 900000;
                         copia4.WriteToServer(TablaSalidas);
                         copia4.DestinationTableName = "Salidas";
                         copia4.WriteToServer(TablaSalidas);
                     cn.Cerrar4();

                     /*Copia a las tablas CostosPptoProgTemp temporales*/
                     cn.Abrir5();
                         DataTable TablaCostoPresProg = cn.VerTabla5(Consultas.CostosPresuProg(Proyecto, Filtro, IdFecha), "CostosPptoProgTemp");
                         copia5.DestinationTableName = "CostosPptoProgTemp";
                         copia5.BulkCopyTimeout = 900000;
                         copia5.WriteToServer(TablaCostoPresProg);
                     cn.Cerrar5();

                     //Guarda una copia de la fecha con los campos calculados de las vistas
                     GuardarCopia(IdFecha);

                     //cerrar las conexiones de las tablas
                     TablaOrdenes.Dispose();
                     TablaConsultas.Dispose();
                     TablaPedidos.Dispose();
                     TablaSalidas.Dispose();
                     TablaCostoPresProg.Dispose();

                     //metodo para vaciar las tablas temporales
                     db.VaciarTablasTemporales();

                     //metodos para borrar las areas
                     db.BorrarAreas();
                     //metodos para guardar las areas
                     Consultas.GuardarAreas();

                 }

                 catch (Exception ex) // Maneja los Posibles Errores
                 {
                      //Metodo para insertar el error
                      db.InsertarError(ex.Message.ToString(),DateTime.Now);
                 }

                 finally
                 {
                     //metodo para cerrar las conexiones
                     cn.Cerrar1();
                     cn.Cerrar2();
                     cn.Cerrar3();
                     cn.Cerrar4();
                     cn.Cerrar5();
                 }
        }