示例#1
0
        private DbCommand cambiarModo(Modo modoEjecucion)
        {
            this.modoActual = modoEjecucion;

            if (modoActual.Equals(Modo.DATABASE))
            {
                CLICK_ERROR = CLICK_ERROR_DATABASE;
                CLICK_OK    = CLICK_OK_DATABASE;
                DESCRIPCION = DESCRIPCION_DATABASE;
                Comun.RellenarComboBasesDatos(conexionActual, cmbDatos);
                return(Comando.DropDatabase(conexionActual, false));
            }
            else if (modoActual.Equals(Modo.TABLE))
            {
                CLICK_ERROR = CLICK_ERROR_TABLE;
                CLICK_OK    = CLICK_OK_TABLE;
                DESCRIPCION = DESCRIPCION_TABLE;
                Comun.RellenarComboTablas(conexionActual, cmbDatos);
                return(Comando.DropTable(conexionActual));
            }
            return(null);
        }
示例#2
0
    public void Update()
    {
        if (timer.tiempo <= 0)
        {
            modo = Modo.Hide;
        }

        if (timer.tiempo == 5)
        {
            modo = Modo.Show;
        }


        if (modo.Equals(Modo.Hide))
        {
            if (transparencia <= 0)
            {
                modo = Modo.Nothing;
            }
            else
            {
                transparencia -= Time.deltaTime;
                sprite.color   = new Color(sprite.color.r, sprite.color.g, sprite.color.b, transparencia);
            }
        }

        if (modo.Equals(Modo.Show))
        {
            if (transparencia >= 1)
            {
                modo = Modo.Nothing;
            }
            else
            {
                transparencia += Time.deltaTime * 8;
                sprite.color   = new Color(sprite.color.r, sprite.color.g, sprite.color.b, transparencia);
            }
        }
    }
示例#3
0
        private void btn_Click(object sender, RoutedEventArgs e)
        {
            if (!Comun.ElegidaTablaDefecto(cmbDatos) && !Comun.ElegidaBaseDatosDefecto(cmbDatos))
            {
                comandoEnviar.CommandText = GenerarComandoEnvio(false);

                int resultado = Operacion.ExecuteNonQuery(conexionActual, comandoEnviar);
                // Bien
                if (resultado != Operacion.ERROR)
                {
                    Msj.Info(CLICK_OK + "\"" + cmbDatos.SelectedItem + "\"" + " eliminada con con éxito.");
                }

                // Si la base de datos no se ha podido borrar por conexión abierta, preguntar forzado
                if (modoActual.Equals(Modo.DATABASE) && resultado == Operacion.ERROR)
                {
                    MessageBoxResult opcionElegir =
                        MessageBox.Show("Error al eliminar la base de datos.\r\n" +
                                        "¿Desea forzar el borrado?", "Alerta", MessageBoxButton.YesNo,
                                        MessageBoxImage.Warning);

                    if (opcionElegir.Equals(MessageBoxResult.Yes))
                    {
                        comandoEnviar.CommandText = GenerarComandoEnvio(true);
                        resultado = Operacion.ExecuteNonQuery(conexionActual, comandoEnviar);
                        // Bien
                        if (resultado == -1)
                        {
                            Msj.Info(CLICK_OK + "\"" + cmbDatos.SelectedItem + "\"" + " eliminada con con éxito.");
                        }
                    }
                }
            }
            else
            {
                Msj.Error(CLICK_ERROR);
            }
        }
示例#4
0
        /// <summary>Accept()
        /// Permite realizar las acciones de inserccion y de edicion; cuando se presiona el boton aceptar.
        /// </summary>
        public void Accept()
        {
            if (Validar())
            {
                try
                {
                    if (Modo.Equals("N"))
                    {
                        string code = TxtCod.Text;

                        string camp = String.Format("SELECT {0} FROM {1} WHERE delmrk = 1 AND {2} = '{3}'", PerfilAct.CampoCodigo,
                                                    PerfilAct.Tabla, PerfilAct.CampoCodigo, code);

                        DataSet ds = DataBase.ExecuteQuery(camp, "datos", CommandType.Text, null, ConexionDB.getInstancia().Conexion(Database, null));

                        if (ds.Tables[0].Rows.Count <= 0)
                        {
                            String sql = String.Format("INSERT INTO {0} ({1},{2}) VALUES ('{3}','{4}')", PerfilAct.Tabla,
                                                       PerfilAct.CampoCodigo, PerfilAct.CampoNombre, code, TxtNombre.Text);

                            bool IsDone = DataBase.ExecuteNonQuery(sql, CommandType.Text, null, ConexionDB.getInstancia().Conexion(Database, null));

                            if (IsDone)
                            {
                                string cons = String.Format("SELECT {0} FROM {1} WHERE delmrk = 1 AND {2} = '{3}'", PerfilAct.Llave,
                                                            PerfilAct.Tabla, PerfilAct.CampoCodigo, code);

                                DataSet dsCons = DataBase.ExecuteQuery(cons, "datos", CommandType.Text, null, ConexionDB.getInstancia().Conexion(Database, null));

                                ID = dsCons.Tables[0].Rows[0][PerfilAct.Llave].ToString();
                                //AlertInfo info = new AlertInfo(Resources.SystemMessage, String.Format(Resources.SaveSuccess, TxtNombre.Text), Resources.Check);
                                //alertControl1.Show(this, info);
                                this.TxtCod.Text    = String.Empty;
                                this.TxtNombre.Text = String.Empty;
                                this.TxtCod.Focus();
                                if (!DesdeMenu)
                                {
                                    DialogResult = DialogResult.OK;
                                }
                                else
                                {
                                    LimpiarForm();
                                    agrego = true;
                                }
                            }
                        }
                        else
                        {
                            XtraMessageBox.Show("Ya existe un registro con ese Código", GLReferences.Properties.Resources.AppName, MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button2);
                            TxtCod.Focus();
                        }
                    }
                    else
                    {
                        String sql = String.Format("UPDATE {0} SET {1} = '{2}', {3} = '{4}' WHERE {5} = '{6}'", PerfilAct.Tabla,
                                                   PerfilAct.CampoCodigo, TxtCod.Text, PerfilAct.CampoNombre, TxtNombre.Text, PerfilAct.Llave, ID);

                        bool IsDone = DataBase.ExecuteNonQuery(sql, CommandType.Text, null, ConexionDB.getInstancia().Conexion(Database, null));

                        if (IsDone)
                        {
                            //  AlertInfo info = new AlertInfo(Resources.SystemMessage, String.Format(Resources.SaveSuccess, TxtNombre.Text), Resources.Check);
                            //  alertControl1.Show(this, info);
                            this.TxtNombre.Text = String.Empty;
                            this.TxtNombre.Focus();
                            DialogResult = DialogResult.OK;
                        }
                    }
                }
                catch (Exception ex)
                {
                    XtraMessageBox.Show(ex.Message, Resources.AppName, MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button2);
                    return;
                }
            }
        }
示例#5
0
        public static double OpMulti(Modo _modo)
        {
            dValorPow1   = 0; dValorPow2 = 0; cont = 0;
            temporizador = Stopwatch.StartNew();

            /*
             * Se utiliza la versión del ciclo (FOR) en modo paralelo.
             * Observemos como se presentan inconvenientes en el resultado, debido
             * a la posibilidad de que múltiples instancias o subprocesos
             * accedan al cuerpo del método.
             */
            if (_modo.Equals(Modo.ParallelFor))
            {
                Parallel.For(0, lim, cont =>
                {
                    dValorPow1 += Convert.ToInt64(Math.Pow(cont, 2));
                    //cont += 1;
                });

                Console.WriteLine("Parallel.For");
            }

            /*
             * Para evitar los inconvenientes ocasionados por la concurrencia
             * al utilizar variables compartidas, se utiliza una instrucción que
             * indica que ciertas instrucciones deben ejecutarse en exclusión mutua.
             *
             * En este caso se utiliza un lock(). Si bien se soluciona el problema,
             * se afecta el rendimiento o las ventajas del multiprocesamiento
             */
            else if (_modo.Equals(Modo.ParallelFor_ExclusionMutua))
            {
                object sync = new object();

                Parallel.For(0, lim, cont =>
                {
                    /*
                     * Dentro del lock, las intrucciones únicamente pueden ser ejecutadas por
                     * un proceso o instancia a la vez
                     */
                    lock (sync)
                    {
                        dValorPow1 += Convert.ToInt64(Math.Pow(cont, 2));
                    }
                });

                Console.WriteLine("Parallel.For con exclusión mútua (LOCK)");
            }

            /*
             * Se introducen condiciones sobre la ejecución multicore de manera
             * que limita el número de procesos a la cantidad de CPU´s
             * detectados (físicos y lógicos)
             */
            else if (_modo.Equals(Modo.ParallelFor_LimitadoPorCores))
            {
                int    degreeOfParallelism = Environment.ProcessorCount;
                object sync = new object();

                Parallel.For(0, degreeOfParallelism, workerId =>
                {
                    var max = lim * (workerId + 1) / degreeOfParallelism;
                    for (int i = (int)lim * workerId / degreeOfParallelism; i < max; i++)
                    {
                        lock (sync)
                        {
                            dValorPow1 += Convert.ToInt64(Math.Pow(i, 2));
                        }
                    }
                });

                Console.WriteLine("Parallel.For limitado por los (" + degreeOfParallelism + ") procesadores detectados");
            }

            /*
             * Se utiliza el método Parallel.Invoke, que permite
             * ejecutar en paralelo (en la medida de lo posible) las acciones
             * que se le suministran.
             *
             * En este caso, se divide en dos las iteraciones, de manera
             * que se emplean dos ciclos para realizar los cálculos en forma simultánea
             */
            else if (_modo.Equals(Modo.ParallelInvoke))
            {
                Parallel.Invoke(() =>
                {
                    for (double cont = 0; cont < (lim / 2); cont++)
                    {
                        dValorPow1 += Convert.ToInt64(Math.Pow(cont, 2));
                    }
                }
                                , () =>
                {
                    for (double cont = (lim / 2); cont < lim; cont++)
                    {
                        dValorPow2 += Convert.ToInt64(Math.Pow(cont, 2));
                    }
                });

                Console.WriteLine("Parallel.Invoke()");
            }

            /*
             * Se utiliza el mecanismo de "hilos locales a nivel de datos" o "thread-local data",
             * de manera que se realizan los cálculos sin necesidad de acceder direactamente al recurso compartido.
             *
             * Se ejecutan las tareas en hilos-locales y se actualiza el resultado una vez que las
             * iteraciones de la tarea se han completado.
             */
            else if (_modo.Equals(Modo.ParallelForEach_ThreadLocalData))
            {
                object sync = new object();

                Parallel.ForEach(Enumerable.Range(0, Convert.ToInt32(lim)),
                                 () => 0L,
                                 (value, pls, localTotal) =>
                {
                    return(localTotal += Convert.ToInt64(Math.Pow(value, 2)));
                },
                                 localTotal =>
                {
                    lock (sync)
                    {
                        dValorPow1 += localTotal;
                    }
                });

                Console.WriteLine("Parallel.ForEach with thread-local data");
            }

            Console.WriteLine("Tiempo de ejecución - modalidad concurrente: " + temporizador.ElapsedMilliseconds + " milisegundos");
            Console.WriteLine("Resultado = " + (dValorPow1 + dValorPow2));

            return(dValorPow1 + dValorPow2);
        }
示例#6
0
        /// <summary>
        /// Método que se ejecuta al presionar el botón Aceptar
        /// Inserta el registro en la tabla cuando la propiedad Modo tiene un valor "N", en caso contrario lo actualiza
        /// </summary>
        public void Accept()
        {
            try
            {
                if (!String.IsNullOrEmpty(TxtNombre.Text))
                {
                    if (Modo.Equals("N"))
                    {
                        string code = Funciones.getInstancia().GetNextCode(PerfilAct.Tabla, PerfilAct.Llave,
                                                                           ConexionDB.getInstancia().Conexion(Database, null), PerfilAct.CampoCodigo);

                        string camp = "";
                        //camp = camp.Vector2Cadena(",", PerfilAct.Campos);
                        camp = PerfilAct.CampoCodigo + "," + PerfilAct.CampoNombre;
                        var sql = string.Format("INSERT INTO {0} ({1}) VALUES ({2})", PerfilAct.Tabla,
                                                camp, String.Format("'{0}', '{1}'", code, TxtNombre.Text));

                        var IsDone = DataBase.ExecuteNonQuery(sql, CommandType.Text, null, ConexionDB.getInstancia().Conexion(Database, null));

                        if (IsDone)
                        {
                            string cons = String.Format("SELECT {0} FROM {1} WHERE delmrk = 1 AND {2} = '{3}'", PerfilAct.Llave,
                                                        PerfilAct.Tabla, PerfilAct.CampoCodigo, code);

                            DataSet ds = DataBase.ExecuteQuery(cons, "datos", CommandType.Text, null, ConexionDB.getInstancia().Conexion(Database, null));

                            ID = ds.Tables[0].Rows[0][PerfilAct.Llave].ToString();
                            //AlertInfo info = new AlertInfo(Resources.SystemMessage, String.Format(Resources.SaveSuccess, TxtNombre.Text), Resources.Check);
                            //alertControl1.Show(this, info);
                            this.TxtNombre.Text = String.Empty;
                            this.TxtNombre.Focus();
                            if (!DesdeMenu)
                            {
                                DialogResult = DialogResult.OK;
                            }
                            else
                            {
                                agrego = true;
                                this.TxtNombre.Text = String.Empty;
                            }
                        }
                    }
                    else
                    {
                        String sql = String.Format("UPDATE {0} SET {1} = '{2}' WHERE {3} = '{4}'", PerfilAct.Tabla,
                                                   PerfilAct.CampoNombre, TxtNombre.Text, PerfilAct.Llave, ID);

                        bool IsDone = DataBase.ExecuteNonQuery(sql, CommandType.Text, null, ConexionDB.getInstancia().Conexion(Database, null));

                        if (IsDone)
                        {
                            //AlertInfo info = new AlertInfo(Resources.SystemMessage, String.Format(Resources.SaveSuccess, TxtNombre.Text), Resources.Check);
                            //alertControl1.Show(this, info);
                            this.TxtNombre.Text = String.Empty;
                            this.TxtNombre.Focus();
                            DialogResult = DialogResult.OK;
                        }
                    }
                }
                else
                {
                    XtraMessageBox.Show("El nombre no puede quedar vacío", GLReferences.Properties.Resources.AppName, MessageBoxButtons.OK, MessageBoxIcon.Information);
                    TxtNombre.Focus();
                }
            }
            catch (Exception ex)
            {
                XtraMessageBox.Show(ex.Message, Resources.AppName, MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button2);
                return;
            }
        }
        //Carga de datos del documento
        private void CargarDatos()
        {
            // Encabezado

            string campos = " dh.Resolucion, dh.Documento, dh.Serie, dh.DocNo, dh.ReferenciaDoc, dh.Fecha, dh.Empresa, ";

            campos += " dh.Sucursal, dh.Caja, dh.Usuario, dh.Divisa, bg.Name Moneda, dh.TasaCambio, dh.TipoGeneracion, ";
            campos += " dh.NombreCliente, dh.DireccionCliente, dh.NITCliente, dh.ValorNeto, dh.IVA, dh.Descuento,  ";
            campos += " dh.Exento, dh.Total, dh.Estado, dh.Observacion, dh.Estado, dh.Parametros ";

            string[] join = { "left join Badge bg on dh.Divisa = bg.BadgeID " };

            string whr = "dh.Resolucion = '" + this.Resolucion + "' and dh.Documento = '" + this.TipoDoc + "' ";

            whr += " and dh.Serie = '" + this.SerieDoc + "' and dh.DocNo = '" + this.NoDocumento + "' ";
            whr += " and TrxVoided = 0 ";

            DocHeader = con.obtenerDatos("documentheader dh", campos, join, whr);

            // Detalle

            campos  = "Resolucion, Documento, Serie, DocNo, Linea, Codigo, Descripcion, Tipo, Metrica, ";
            campos += "Cantidad, PrecioUnitario, Importe, IVA, Total, Exento";

            whr  = "Resolucion = '" + this.Resolucion + "' and Documento = '" + this.TipoDoc + "' ";
            whr += " and Serie = '" + this.SerieDoc + "' and DocNo = '" + this.NoDocumento + "' ";

            DocDetail = con.obtenerDatos("documentdetail", campos, whr);

            // Datos Proveedor

            campos  = " cd.Resolucion, cd.Fecha, cd.Documento, cd.Serie, cd.Ultimo, cd.Liquidado, ";
            campos += " df.FormatName, sp.Name Proveedor, sp.ClassName, sp.ProviderAuth, sp.ServiceURL ";

            join = new string[]
            {
                "left join serviceprovider sp on cd.ProviderID = sp.ProviderID",
                "left join docformat df on cd.Formato = df.FormatID",
            };

            whr  = " cd.Documento = '" + this.TipoDoc + "' and cd.Resolucion = '" + this.Resolucion + "' ";
            whr += " and cd.Serie = '" + this.SerieDoc + "' ";

            DocProvider = con.obtenerDatos("corrdocument cd", campos, join, whr);


            //Validacion de Documento encontrado
            if (DocHeader.Rows.Count.Equals(0) || DocDetail.Rows.Count.Equals(0))
            {
                throw new Exception("No se encontró el documento");
            }
            else if (DocHeader.Rows.Count > 0)
            {
                //Verificacion del modo registro
                if (Funcion.Equals(Modo.Registro))
                {
                    //Verificacion de estado de documento
                    if (utl.convertirInt(DocHeader.Rows[0]["Estado"]).Equals(1))
                    {
                        throw new Exception("Documento se encuentra registrado");
                    }
                    else if (utl.convertirInt(DocHeader.Rows[0]["Estado"]).Equals(2))
                    {
                        throw new Exception("Documento se encuentra anulado");
                    }
                }
            }

            //Validacion de Resolucion de proceedor encontrada
            if (DocProvider.Rows.Count.Equals(0))
            {
                throw new Exception("No se encontró resolución de documento");
            }
            else if (DocProvider.Rows.Count > 0)
            {
                //Verificacion del modo registro
                if (Funcion.Equals(Modo.Registro))
                {
                    //Validacion de resolucion de proveedor aun vigente
                    if (utl.convertirInt(DocProvider.Rows[0]["Liquidado"]).Equals(1))
                    {
                        throw new Exception("Resolución de documento está liquidado");
                    }
                }
            }
        }