private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
 {
     try
     {
         if (accion == "cargar")
         {
             switch (origen)
             {
                 case "frmArqueoInter":
                     dsArqueo = BL.VentasBLL.CrearDatasetArqueo(strFechaDesde, strFechaHasta, idPc);
                     break;
                 case "frmArticulosAgrupar":
                     tabla = BL.StockBLL.GetStock();
                     tblArticulosStock = BL.ArticulosBLL.GetArticulosStock();
                     break;
                 case "frmArticulosBorradoMasivo":
                     dtEstatico = BL.PedidosBLL.CrearDataset(strFecha, genero);
                     DataTable tblArticulos = BL.GetDataBLL.Articulos();
                     DataTable tblPedidos = dtEstatico.Tables[0];
                     DataTable tblArticuloBorrar = dtEstatico.Tables[1];
                     foreach (DataRow row in tblArticuloBorrar.Rows)
                     {
                         string articulos = row["IdArticulo"].ToString();
                         DataRow[] rowfound = tblPedidos.Select("Articulo LIKE '" + articulos + "*'");
                         DataRow[] rowfoundZero = tblPedidos.Select("[Stock] = 0 AND Articulo LIKE '" + articulos + "*' AND [Venta] is null");
                         if (rowfoundZero.Count() == rowfound.Count())
                         {
                             DataRow[] rowArticulo = tblArticulos.Select("IdArticuloART LIKE '" + articulos + "*'");
                             foreach (DataRow rowBorrar in rowArticulo)
                             {
                                 rowBorrar.Delete();
                             }
                         }
                     }
                     BL.ArticulosBLL.GrabarDB(tblArticulos);
                     break;
                 case "frmArticulosBorrar":
                     tblArticulosBorrar = BL.ArticulosBLL.GetArticulosStock();
                     break;
                 case "frmFondoCajaCons":
                     dt = BL.FondoCajaBLL.CrearDatasetCons();
                     break;
                 case "frmEmpleadosMovConsInter":
                     tblEstatica = BL.EmpleadosMovBLL.EmpleadosMovCons(strFechaDesde, strFechaHasta, idEmpleado, liquidado);
                     break;
                 case "frmPedido":
                     dtEstatico = BL.PedidosBLL.CrearDataset(strFecha, genero);
                     DataTable tblPedido = dtEstatico.Tables[0];
                     DataTable tblBorrar = dtEstatico.Tables[1];
                     foreach (DataRow row in tblBorrar.Rows)
                     {
                         string articulos = row["IdArticulo"].ToString();
                         DataRow[] rowfound = tblPedido.Select("Articulo LIKE '" + articulos + "*'");
                         DataRow[] rowfoundZero = tblPedido.Select("[Stock] = 0 AND Articulo LIKE '" + articulos + "*' AND [Venta] is null");
                         if (rowfoundZero.Count() == rowfound.Count())
                         {
                             foreach (DataRow rowBorrar in rowfound)
                             {
                                 rowBorrar.Delete();
                             }
                         }
                     }
                     break;
                 case "frmStockCompPesos":
                     tblEstatica = BL.StockMovBLL.GetCompensacionesPesos(strFechaDesde, strFechaHasta, idLocal);
                     break;
                 case "frmStockMovInforme":
                     dsStockMovCons = BL.StockMovBLL.CrearDatasetCons(strFechaDesde, strFechaHasta, idLocal, tipo, opcMov, articulo, descripcion);
                     break;
                 case "frmStock":
                     dtEstatico = BL.StockBLL.CrearDataset(locales, genero, proveedor, articulo, descripcion, activoWeb);
                     break;
                 case "frmVentasDetalleInter":
                     tblEstatica = BL.VentasBLL.GetVentasDetalle(forma, strFechaDesde, strFechaHasta, idLocal, parametros);
                     break;
                 case "frmVentasPesosCons":
                     dsVentasPesosCons = BL.VentasBLL.CrearDatasetVentasPesos(forma, strFechaDesde, strFechaHasta, locales, genero);
                     break;
                 case "frmVentasPesosInter_diarias":
                     tblEstatica = BL.VentasBLL.GetVentasPesosDiarias(strFechaDesde, strFechaHasta, idLocal, formaPago);
                     break;
             }
         }
         else //grabar en base de datos
         {
             switch (origen)
             {
                 case "frmAlicuotasIva":
                     BL.AlicuotasIvaBLL.GrabarDB(tabla, idAlicuota, oldIdAlicuota);
                     break;
                 case "frmArqueoCajaAdmin_borrarTesoreria":
                     BL.TesoreriaMovimientosBLL.BorrarByPK(PK);
                     break;
                 case "frmArqueoCajaAdmin_borrarVenta":
                     BL.VentasBLL.BorrarByPK(PK);
                     break;
                 case "frmArticulos":
                     BL.ArticulosBLL.GrabarDB(tabla);
                     break;
                 case "frmArticulosAgrupar":
                     BL.TransaccionesBLL.GrabarArticulosAgrupar(tblStock, tblArticulos, ref codigoError);
                     break;
                 case "frmArticulosBorrar":
                     BL.ArticulosBLL.GrabarDB(tabla);
                     TratarImagenesService tis = new TratarImagenesService();
                     tis.BorrarImagenes(imagenesBorrar);
                     break;
                 case "frmArticulosGenerar":
                     BL.ArticulosBLL.GrabarDB(tabla);
                     break;
                 case "frmArticulosItems":
                     BL.ArticulosItemsBLL.GrabarDB(tabla);
                     break;
                 case "frmClientes":
                     BL.ClientesBLL.GrabarDB(tabla);
                     break;
                 case "frmColores":
                     BL.ColoresBLL.GrabarDB(tabla);
                     break;
                 case "frmCondicionIva":
                     BL.CondicionIvaBLL.GrabarDB(tabla);
                     break;
                 case "frmEmpleados":
                     BL.EmpleadosBLL.GrabarDB(tabla);
                     break;
                 case "frmEmpleadosMov":
                     BL.EmpleadosMovBLL.GrabarDB(tabla);
                     break;
                 case "frmEmpleadosMovTipo":
                     BL.EmpleadosMovTiposBLL.GrabarDB(tabla);
                     break;
                 case "ExportarDatos":
                     BL.DatosBLL.ExportarDatos();
                     break;
                 case "ImportarDatos":
                     BL.DatosBLL.GetDataPOS(today);
                     break;
                 case "frmFondoCaja":
                     BL.FondoCajaBLL.GrabarDB(tabla);
                     break;
                 case "frmFondoCajaCons":
                     BL.FondoCajaBLL.BorrarByPK(PK);
                     bindingSource1.RemoveCurrent();
                     bindingSource1.EndEdit();
                     break;
                 case "frmFormasPago":
                     BL.FormasPagoBLL.GrabarDB(tabla);
                     break;
                 case "frmGeneros":
                     BL.GenerosBLL.GrabarDB(tabla);
                     break;
                 case "frmLocales":
                     BL.LocalesBLL.GrabarDB(tabla);
                     break;
                 case "frmProveedores":
                     BL.ProveedoresBLL.GrabarDB(tabla);
                     break;
                 case "frmRazonSocial":
                     BL.RazonSocialBLL.GrabarDB(tabla);
                     break;
                 case "frmStockMov":
                     BL.TransaccionesBLL.GrabarStockMovimientos(dsStockMov);
                     break;
                 case "frmStockMov_borrar":
                     BL.StockMovBLL.BorrarByPK(PK);
                     break;
                 case "frmStockEntradas":
                     BL.TransaccionesBLL.GrabarStockMovimientos(dsStockMov);
                     break;
                 case "frmVentas":
                     BL.VentasBLL.GrabarVentas(dsVentas);
                     break;
                 case "frmTesoreriaMov":
                     BL.TesoreriaMovimientosBLL.GrabarDB(dsTesoreriaMov);
                     break;
             }
         }
     }
     catch (ServidorMysqlInaccesibleException)
     {
         servidorCaidoExcepcion = new ServidorMysqlInaccesibleException("No se pudo conectar con el servidor de base de datos."
                     + '\r' + "Consulte al administrador del sistema.");
     }
     catch (WebException)
     {
         this.Visible = false;
         MessageBox.Show("No se pudo conectar con el servidor remoto."
                 + '\r' + "No se importaron los datos."
                 + '\r' + "Intente nuevamente.",
                 "Trend Sistemas", MessageBoxButtons.OK,
                 MessageBoxIcon.Error);
         return;
     }
 }