Ejemplo n.º 1
0
 public DataTable EjecutarConsulta(String consulta, List <Object> valores)
 {
     try
     {
         return(sql.EjecutarConsulta(consulta, valores));
     }
     catch (Exception ex) { throw new Exception(ex.Message); }
 }
Ejemplo n.º 2
0
        private void GenerarEstructuraDeBD()
        {
            #region query generacion
            try
            {
                String queryGeneracion = @"
                    CREATE TABLE _Cuenta
                    ( id integer PRIMARY KEY ASC AUTOINCREMENT, dtFechaCreacion datetime , dtFechaModificacion datetime , sUsuarioCreacion text , sUsuarioModificacion text , estaDeshabilitado boolean DEFAULT 0, _st_NombreCuenta text , _bm_Imagen blob , _in_DiasParaPago integer , _in_DiaCorte integer , _do_PorcentajeInteresMensual real , _do_saldo real , _bo_EsDeAhorro boolean)
                    |
                    CREATE TABLE _MovimientoCuenta
                    ( id integer PRIMARY KEY ASC AUTOINCREMENT, dtFechaCreacion datetime , dtFechaModificacion datetime , sUsuarioCreacion text , sUsuarioModificacion text , estaDeshabilitado boolean DEFAULT 0, _do_Importe real , _do_Saldo real , _dt_fecha datetime , _dt_fechaAplicacion datetime , _st_detalleMovimiento text , _oo_Cuenta integer REFERENCES _Cuenta(id), _oo_TipoMovimiento integer REFERENCES _TipoMovimiento(id), _bo_EsSimulado boolean, _bo_EstaAplicadoAlSaldo boolean, _oo_MovimientoPareja integer REFERENCES _MovimientoCuenta(id))
                    |
                    CREATE TABLE _TipoMovimiento
                    ( id integer PRIMARY KEY ASC AUTOINCREMENT, dtFechaCreacion datetime , dtFechaModificacion datetime , sUsuarioCreacion text , sUsuarioModificacion text , estaDeshabilitado boolean DEFAULT 0, _st_Nombre text , _st_Tipo text , _do_MultiplicadorSigno real , _bo_SeDivideEnMultiplesPagos boolean, _bo_SeAplicaInmediato boolean)
                    |
                    CREATE TABLE _Cuenta_X__MovimientoCuenta__ll_Movimientos
                    ( _fecha datetime
                    , _contenido integer REFERENCES _MovimientoCuenta(id), _contenedor integer REFERENCES _Cuenta(id))
                    |
                    CREATE TABLE _Cuenta_X__MovimientoCuenta__ll_MovimientosSimulados
                    ( _fecha datetime
                    , _contenido integer REFERENCES _MovimientoCuenta(id), _contenedor integer REFERENCES _Cuenta(id))

                    |    
                    CREATE INDEX ci__Cuenta_X__MovimientoCuenta__ll_Movimientos_contenedor_fecha ON _Cuenta_X__MovimientoCuenta__ll_Movimientos (_contenedor, _fecha)
                    |
                    CREATE INDEX nci__MovimientoCuenta__oo_TipoMovimiento ON _MovimientoCuenta ('_oo_TipoMovimiento' ASC)
                    |
                    CREATE INDEX nci__MovimientoCuenta__oo_MovimientoPareja ON _MovimientoCuenta ('_oo_MovimientoPareja' ASC)
                    |
                    CREATE INDEX nci__MovimientoCuenta__oo_Cuenta ON _MovimientoCuenta ('_oo_Cuenta' ASC)
                    |
                    CREATE INDEX ci__Cuenta_X__MovimientoCuenta__ll_MovimientosSimulados_contenedor_fecha ON _Cuenta_X__MovimientoCuenta__ll_MovimientosSimulados (_contenedor, _fecha)
                    ";
                #endregion

                sql.ConfigurarConexion("CuentasPagar.db", true);

                String[] querys = queryGeneracion.Split('|');
                sql.IniciarTransaccion();
                foreach (String query in querys)
                {
                    String q = query.Trim();
                    sql.EjecutarConsulta(q);
                }
                sql.TerminarTransaccion();
                sql.ConfigurarConexion("CuentasPagar.db", false);
                manejador = new ManejadorDB(sql);
                Herramientas.Forms.Mensajes.Informacion("Se generó la Base de datos con éxito.");
            }
            catch (Exception ex)
            {
                sql.DeshacerTransaccion();
                Herramientas.Forms.Mensajes.Error(ex.Message);
            }
        }
Ejemplo n.º 3
0
        private void btn_ejecutarEnServidor_Click(object sender, EventArgs e)
        {
            // split script on GO command
            try
            {
                IEnumerable <string> commandStrings = Regex.Split(txt_codigo.Text, @"^\s*GO\s*$",
                                                                  RegexOptions.Multiline | RegexOptions.IgnoreCase);


                foreach (string commandString in commandStrings)
                {
                    sql.EjecutarConsulta(commandString, null);
                }
                btn_ejecutarEnServidor.Enabled = false;
                MessageBox.Show("Código ejecutado correctamente.", "Exito", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            catch (Exception ex)
            {
                MessageBox.Show("Ocurrió un error: " + ex.Message, "Error al ejecutar en servidor", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
Ejemplo n.º 4
0
        public long Guardar()
        {
            try
            {
                Type tipo = this.GetType();
                if (id < 0)
                {
                    return(-1);
                }
                if (this.esModificado)
                {
                    FieldInfo[]   atributos = tipo.GetFields(System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance);
                    String        consulta  = "";
                    List <Object> valores   = new List <object>();
                    //actualizando datos de auditoria
                    if (id == 0)
                    {
                        dtFechaCreacion  = manejador.ObtenerFechaHoraServidor();
                        sUsuarioCreacion = ObjetoBase.UsuarioLogueado;
                    }
                    dtFechaModificacion  = manejador.ObtenerFechaHoraServidor();
                    sUsuarioModificacion = ObjetoBase.UsuarioLogueado;
                    DataTable dt = new DataTable();
                    //-----------------------------
                    if (id != 0)
                    {
                        consulta = "update " + tipo.Name + " set ";
                        foreach (FieldInfo atributo in atributos)
                        {
                            if (atributo.Name.Equals("dtFechaCreacion") || atributo.Name.Equals("dtFechaModificacion") || atributo.Name.Equals("sUsuarioCreacion") || atributo.Name.Equals("sUsuarioModificacion") || atributo.Name.Equals("estaDeshabilitado"))
                            {
                            }
                            else if (!atributo.Name.StartsWith("_") || atributo.FieldType.Name.Contains("List") || atributo.FieldType.Name.StartsWith("_"))
                            {
                                //|| atributo.Name.Equals("dtFechaCreacion") || atributo.Name.Equals("dtFechaModificacion") || atributo.Name.Equals("sUsuarioCreacion") || atributo.Name.Equals("sUsuarioModificacion"))
                                continue; // se ignoran las listas de objetos relacionados y los objetos relacionados
                            }
                            Object valorAtributo = atributo.GetValue(this);
                            if (valorAtributo != null)
                            {
                                consulta += atributo.Name + " = @" + atributo.Name + ", ";
                                valores.Add(valorAtributo);
                            }
                            else
                            {
                                consulta += atributo.Name + " = NULL, ";
                            }
                        }
                        consulta  = consulta.Substring(0, consulta.Length - 2);
                        consulta += " where id = @id; select @id;";
                        valores.Add(id);

                        dt = SQL.EjecutarConsulta(consulta, valores);
                    }
                    else
                    {
                        consulta = "insert into " + tipo.Name + "(";
                        foreach (FieldInfo atributo in atributos)
                        {
                            if (atributo.Name.Equals("dtFechaCreacion") || atributo.Name.Equals("dtFechaModificacion") || atributo.Name.Equals("sUsuarioCreacion") || atributo.Name.Equals("sUsuarioModificacion") || atributo.Name.Equals("estaDeshabilitado"))
                            {
                            }
                            else if (!atributo.Name.StartsWith("_") || atributo.FieldType.Name.Contains("List") || atributo.FieldType.Name.StartsWith("_"))
                            {
                                //|| atributo.Name.Equals("dtFechaCreacion") || atributo.Name.Equals("dtFechaModificacion") || atributo.Name.Equals("sUsuarioCreacion") || atributo.Name.Equals("sUsuarioModificacion"))
                                continue; // se ignoran las listas de objetos relacionados y los objetos relacionados
                            }
                            consulta += atributo.Name + ", ";
                        }
                        consulta  = consulta.Substring(0, consulta.Length - 2);
                        consulta += ") values(";
                        foreach (FieldInfo atributo in atributos)
                        {
                            if (atributo.Name.Equals("dtFechaCreacion") || atributo.Name.Equals("dtFechaModificacion") || atributo.Name.Equals("sUsuarioCreacion") || atributo.Name.Equals("sUsuarioModificacion") || atributo.Name.Equals("estaDeshabilitado"))
                            {
                            }
                            else if (!atributo.Name.StartsWith("_") || atributo.FieldType.Name.Contains("List") || atributo.FieldType.Name.StartsWith("_"))
                            {
                                continue; // se ignoran las listas de objetos relacionados y los objetos relacionados
                            }
                            Object valorAtributo = atributo.GetValue(this);
                            if (valorAtributo != null)
                            {
                                consulta += "@" + atributo.Name + ", ";
                                valores.Add(valorAtributo);
                            }
                            else
                            {
                                consulta += "NULL, ";
                            }
                        }
                        consulta  = consulta.Substring(0, consulta.Length - 2);
                        consulta += "); " + sql.QueryParaObtenerElUltimoIDInsertado(tipo.Name);

                        dt = SQL.EjecutarConsulta(consulta, valores);

                        if (dt.Rows.Count == 0)
                        {
                            dt = SQL.EjecutarConsulta(sql.QueryParaObtenerElUltimoIDInsertado(tipo.Name));
                        }
                        id = Convert.ToInt64(dt.Rows[0][0]);
                    }



                    //Log.EscribirLog(consulta);
                }
                if (AtributosCargadosPorPropiedad.Count > 0)
                {
                    String        consulta2 = "update " + tipo.Name + " set ";
                    List <Object> valores2  = new List <object>();
                    List <String> temp      = new List <string>();
                    temp.AddRange(AtributosCargadosPorPropiedad);
                    Boolean guardoRElaciondo = false;
                    foreach (String atributo in temp)
                    {
                        FieldInfo atrib = tipo.GetField(atributo, BindingFlags.Instance | BindingFlags.NonPublic);
                        if (atrib.FieldType.Name.StartsWith("_"))//si entra entonces es un objeto relacionado y se tiene q considerar
                        {
                            FieldInfo  campo  = this.GetType().GetField(atributo, BindingFlags.NonPublic | BindingFlags.Instance);
                            ObjetoBase objRel = (ObjetoBase)campo.GetValue(this);
                            if (esModificado)
                            {
                                if (objRel != null)
                                {
                                    AtributosCargadosPorPropiedad.Remove(atributo);
                                    long idRel = objRel.id;
                                    if (objRel.esModificado)
                                    {
                                        objRel.SQL       = SQL;
                                        objRel.manejador = manejador;
                                        idRel            = objRel.Guardar();
                                    }
                                    if (idRel != 0)
                                    {
                                        guardoRElaciondo = true;
                                        consulta2       += atributo + " = @" + atributo + ", ";
                                        valores2.Add(idRel);
                                    }
                                }
                                else
                                {
                                    guardoRElaciondo = true;
                                    AtributosCargadosPorPropiedad.Remove(atributo);
                                    consulta2 += atributo + " = NULL, ";
                                }
                            }
                            else
                            {
                                AtributosCargadosPorPropiedad.Remove(atributo);
                            }
                        }
                    }
                    if (guardoRElaciondo)
                    {
                        consulta2  = consulta2.Substring(0, consulta2.Length - 2);
                        consulta2 += " where id = @id";
                        valores2.Add(id);
                        SQL.EjecutarConsulta(consulta2, valores2);
                        //Log.EscribirLog(consulta2);
                    }
                }
                this.esModificado = false;

                if (AtributosCargadosPorPropiedad.Count > 0)
                {
                    List <Object> valores2 = new List <object>();
                    List <String> temp     = new List <string>();
                    temp.AddRange(AtributosCargadosPorPropiedad);
                    foreach (String atributo in temp)
                    {
                        FieldInfo atrib = tipo.GetField(atributo, BindingFlags.Instance | BindingFlags.NonPublic);
                        if (atrib.FieldType.Name.Contains("List"))//si entra entonces es una lista relacionada y se tiene q considerar
                        {
                            AtributosCargadosPorPropiedad.Remove(atributo);

                            String nombreTabla         = tipo.Name + "_X_" + atrib.FieldType.GetGenericArguments()[0].Name + "_" + atrib.Name;
                            String eliminacionConsulta = "delete from " + nombreTabla + " where _contenedor = @id";
                            sql.EjecutarConsulta(eliminacionConsulta, new List <object>()
                            {
                                id
                            });
                            //Log.EscribirLog(eliminacionConsulta);
                            IList listaObjetos = (IList)atrib.GetValue(this);
                            if (listaObjetos != null)
                            {
                                foreach (ObjetoBase objBaseLista in listaObjetos)
                                {
                                    long idTempLista = objBaseLista.id;
                                    if (objBaseLista.esModificado)
                                    {
                                        objBaseLista.SQL       = this.SQL;
                                        objBaseLista.Manejador = manejador;
                                        idTempLista            = objBaseLista.Guardar();
                                    }
                                    String consultaAgregadoRelacionado = "insert into " + nombreTabla + " (_contenedor,_contenido,_fecha) values(@_contenedor, @_contenido, @_fecha);";
                                    sql.EjecutarConsulta(consultaAgregadoRelacionado, new List <object>()
                                    {
                                        id, idTempLista, DateTime.Now
                                    });
                                    //Log.EscribirLog(consultaAgregadoRelacionado);
                                }
                            }
                        }
                    }
                }
                return(id);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }