jueves, 24 de noviembre de 2011

miércoles, 16 de noviembre de 2011

Una disculpa amigos

Una disculpa amigos y seguidores del Blog, estoy en proceso de titulación, terminando esto seguiremos colaborando con el desarrollo DevExpress.NET.

!Si gustan ustedes pueden publicar sus experiencias para seguir colaborando al crecimiento del Blog!

Un saludo desde México.

martes, 16 de agosto de 2011

Capa de Datos: Clase heredada (para Firebird)


///Capa de Datos: Clase que hereda de la clase: BaseDatos, la cual 
///sobreescribe sus métodos virtuales.


///Desarrollada por: Raciel Moreno.
///Fecha de creación: Agosto-2010
///Fecha de publicación: 15-agosto-2011.
///Todos los derechos reservados.(C)

using System;
using System.Collections.Generic;
using System.Text;
using FirebirdSql.Data.FirebirdClient;
using System.Data;

namespace accesoAdatos
{
    public class FireBird2_1 : BaseDatos
    {
        /// <summary>
        /// Constructor de la clase
        /// </summary>
        public FireBird2_1() { }

        /// <summary>
        /// Variable del tipo FbConnection.
        /// </summary>
        FbConnection FbConnection;

        /// <summary>
        /// Constructor sobrecargado de la clase. Se deben asignar las variables :strUsuarioBd, strPasswordBd, strIPservidorBd, strRutaBd.
        /// </summary>
        public FireBird2_1(string strUsuarioBD, string strPasswordBD, string strIPservidorBD, string strRutaBD)
        {
            strUsuarioBd = strUsuarioBD;
            strPasswordBd = strPasswordBD;
            strIPservidorBd = strIPservidorBD;
            strRutaBd = strRutaBD;

            strCadenaDeConexion = "ServerType=0;User=" + strUsuarioBd + ";Password=" + strPasswordBd + ";Size=4096;Dialect=3;Pooling=true;database=" + strIPservidorBd + ":" + strRutaBd;
        }

         

        #region Uso de procedimientos almacenados

        /// <summary>
        /// Arreglo de variables del tipo FbParameter, que almacena los parametros del procedimiento almacenado. 
        /// </summary>
        private FbParameter[] Parametros;

        /// <summary>
        /// Metodo que retorna un FdDbType tomando como condición el nombre del tipo que se desee retornar.
        /// </summary>
        /// <param name="Tipo">Nombre del tipo</param>
        /// <returns>FbDbType</returns>
        private FbDbType DbTipo(string Tipo)
        {
            FbDbType FbDbType = FbDbType.Text;

            switch (Tipo)
            {
                case "Array": { FbDbType = FbDbType.Array; break; }
                case "BigInt": { FbDbType = FbDbType.BigInt; break; }
                case "Binary": { FbDbType = FbDbType.Binary; break; }
                case "Boolean": { FbDbType = FbDbType.Boolean; break; }
                case "Char": { FbDbType = FbDbType.Char; break; }
                case "Date": { FbDbType = FbDbType.Date; break; }
                case "Decimal": { FbDbType = FbDbType.Decimal; break; }
                case "Double": { FbDbType = FbDbType.Double; break; }
                case "Float": { FbDbType = FbDbType.Float; break; }
                case "Guid": { FbDbType = FbDbType.Guid; break; }
                case "Integer": { FbDbType = FbDbType.Integer; break; }
                case "Numeric": { FbDbType = FbDbType.Numeric; break; }
                case "SmallInt": { FbDbType = FbDbType.SmallInt; break; }
                case "Text": { FbDbType = FbDbType.Text; break; }
                case "Time": { FbDbType = FbDbType.Time; break; }
                case "TimeStamp": { FbDbType = FbDbType.TimeStamp; break; }
                case "VarChar": { FbDbType = FbDbType.VarChar; break; }
            }
            return FbDbType;
        }

        override public void IniciaProcedimientoAlmacenado(int intTotalParametros)
        {
            strErrorEnEjecucion = "";
            try
            {
                Parametros = new FbParameter[intTotalParametros];
                strNombresParametrosSalida.Clear();
            }
            catch (Exception ex)
            {
                strErrorEnEjecucion = ex.Message;
            }
        }

        override public void AddParametro(Int32 intIndexParametro, string strNombreParametro, ParameterDirection pdDireccion, String strNombreTipo, Int32 Longitud, string Valor)
        {
            strErrorEnEjecucion = "";
            try
            {
                Parametros[intIndexParametro] = new FbParameter();
                Parametros[intIndexParametro].ParameterName = strNombreParametro;
                Parametros[intIndexParametro].Direction = pdDireccion;
                Parametros[intIndexParametro].FbDbType = DbTipo(strNombreTipo);
                Parametros[intIndexParametro].Size = Longitud;
                Parametros[intIndexParametro].Value = Valor;
                if (pdDireccion == ParameterDirection.InputOutput || pdDireccion == ParameterDirection.Output)
                    strNombresParametrosSalida.Add(strNombreParametro);
            }
            catch (Exception ex)
            {
                strErrorEnEjecucion = ex.Message;
            }
        }
        
        #endregion



        override public bool boolProbarConexion()
        {
            strErrorEnEjecucion = "";      
            try
            {
                FbConnection = new FbConnection(strCadenaDeConexion);
                FbConnection.Open();
                FbConnection.Close();
                FbConnection = null;             
                return true;
            }
            catch (Exception ex)
            {                
                strErrorEnEjecucion = ex.Message;
                return false;
            }
        }

        override public DataTable dtEjecutarConsultaSQL(string strConsultaSQL, string strNombreTabla)
        {
            strErrorEnEjecucion = "";      
            try
            {
                DataSet DataSet = new DataSet();
                FbDataAdapter DataAdapter = new FbDataAdapter(strConsultaSQL, strCadenaDeConexion);
                DataAdapter.Fill(DataSet, strNombreTabla);
                DataAdapter = null;
                return DataSet.Tables[strNombreTabla];
            }
            catch (Exception ex)
            {        
                strErrorEnEjecucion = ex.Message;
                return null;
            }
        }

        override public DataTableReader dtEjecutarConsultaSQL(string strConsultaSQL)
        {
            strErrorEnEjecucion = "";
            try
            {
                DataSet DataSet = new DataSet();
                FbDataAdapter DataAdapter = new FbDataAdapter(strConsultaSQL, strCadenaDeConexion);
                DataAdapter.Fill(DataSet);
                DataAdapter = null;
                return DataSet.Tables[0].CreateDataReader();
            }
            catch (Exception ex)
            {
                strErrorEnEjecucion = ex.Message;
                return null;
            }
        }

        override public bool boolEjecutarComandoSQL(string strComandoSQL)
        {
            strErrorEnEjecucion = "";
            try
            {
                FbConnection = new FbConnection(strCadenaDeConexion);
                FbConnection.Open();

                FbCommand FbCommand = new FbCommand(strComandoSQL, FbConnection);
                FbCommand.ExecuteNonQuery();

                FbConnection.Close();

                FbConnection = null;
                FbCommand = null;

                return true;
            }
            catch (Exception ex)
            {
                strErrorEnEjecucion = ex.Message;
                return false;
            }
        }

        override public bool boolEjecutaTransaccion(List<string> lstComandos)
        {
            strErrorEnEjecucion = ""; 
            FbTransaction FbTransaction = null;
            try
            {               
                FbConnection = new FbConnection(strCadenaDeConexion);
                FbConnection.Open();

                FbTransaction = FbConnection.BeginTransaction();
                FbCommand FbComando;

                foreach (string comando in lstComandos)
                {
                    FbComando = new FbCommand(comando, FbConnection);
                    FbComando.Transaction = FbTransaction;
                    FbComando.ExecuteNonQuery();
                }

                FbTransaction.Commit();

                FbConnection.Close();
                FbConnection = null;

                return true;
            }
            catch (Exception ex)
            {
                try
                {
                    FbTransaction.Rollback();
                }
                catch (Exception exException)
                {
                    strErrorEnEjecucion = exException.Message;
                    return false;
                }
                strErrorEnEjecucion = ex.Message;
                return false;
            }
        }

        override public bool boolEjecutaProcedimientoAlmacenado()
        {
            strErrorEnEjecucion = "";
            try
            {
                FbConnection = new FbConnection(strCadenaDeConexion);
                FbConnection.Open();

                ParametrosSalida = new List<string>();
                FbCommand FbCommand = new FbCommand();
                FbCommand.CommandType = CommandType.StoredProcedure;
                FbCommand.Connection = FbConnection;
                FbCommand.Parameters.AddRange(Parametros);
                FbCommand.CommandText = strNombreProcedimientoAlmacenado;
                FbCommand.ExecuteNonQuery();

                foreach (string strvalor in strNombresParametrosSalida)
{                    ParametrosSalida.Add(FbCommand.Parameters[strvalor].Value.ToString());
}
                FbConnection.Close();
                FbConnection = null;
                return true;
            }
            catch (Exception ex)
            {
                strErrorEnEjecucion = ex.Message;
                return false;
            }
        }      

    }
}








lunes, 15 de agosto de 2011

Capa de Datos: Clase base

///Capa de Datos: Clase base que expone sus métodos virtuales para la sobre escritura es 
///sus clases heredadas.

///Para posteriores ejemplos utilizaremos esta capa de datos.

///Desarrollada por: Raciel Moreno.
///Fecha de creación: Agosto-2010
///Fecha de publicación: 15-agosto-2011.
///Todos los derechos reservados.(C)
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;

namespace accesoAdatos
{

    public class BaseDatos
    {
        /// <summary>
        /// Usuario de la base de datos.
        /// </summary>
        internal string strUsuarioBd = "";

        /// <summary>
        /// Password correspondiente al usuario de la base de datos.
        /// </summary>
        internal string strPasswordBd = "";

        /// <summary>
        /// IP del Servidor de base de datos.
        /// </summary>
        internal string strIPservidorBd = "";

        /// <summary>
        /// Ruta fisica de la base de datos existente en el Servidor de base de datos.
        /// </summary>
        internal string strRutaBd = "";

        /// <summary>
        /// Cadena de conexión.
        /// </summary>
        internal string strCadenaDeConexion = "";

        /// <summary>
        /// Mensaje de error obtenido en la ejecución de alguna funcion de la clase
        /// </summary>
        public string strErrorEnEjecucion = "";


        /// <summary>
        /// Constructor de la clase
        /// </summary>
        public BaseDatos() { }




        #region Uso de procedimientos almacenados

        /// <summary>
        /// Nombre del procedimiento almacenado.
        /// </summary>
        public string strNombreProcedimientoAlmacenado;

        /// <summary>
        /// Almacena los valores de los parametros cuya dirección retorne un valor, se ordenan de acuerdo al orden en el que se fueron insertando los parametros.
        /// </summary>
        public List<string> ParametrosSalida;

        /// <summary>
        /// Contiene los nombres de las parametros que retornen un valor.
        /// </summary>
        internal List<string> strNombresParametrosSalida = new List<string>();

        /// <summary>
        /// Constructor cobrecargado de la clase ProcedimientoAlmacenado.
        /// </summary>
        /// <param name="intTotalParametros"></param>
        virtual public void IniciaProcedimientoAlmacenado(int intTotalParametros) { }

        /// <summary>
        /// Agrega un parametro al procedimiento almacenado.
        /// </summary>
        /// <param name="intIndexParametro">Index del parametro.</param>
        /// <param name="strNombreParametro">Nombre del parametro.</param>
        /// <param name="pdDireccion">Dirección del parametro.</param>
        /// <param name="strNombreTipo">Nombre del tipo de dato del parametro, los valores permitodos son : Array, BigInt, Binary, Boolean, Char, Date, Decimal, Double, Float, Guid, Integer, Numeric, SmallInt, Text, Time, TimeStamp, VarChar.</param>
        /// <param name="Longitud">Longitud del parametro.</param>
        /// <param name="Valor">Valor del parametro.</param>
        virtual public void AddParametro(Int32 intIndexParametro, string strNombreParametro, ParameterDirection pdDireccion, String strNombreTipo, Int32 Longitud, string Valor) { }

        #endregion




        /// <summary>
        /// Metodo para probar la conexión a la base de datos.
        /// </summary>
        /// <returns>bool</returns>
        virtual public bool boolProbarConexion()
        {
            return false;
        }

        /// <summary>
        /// Metodo que ejecuta una consulta SQL sobre la base de datos.
        /// </summary>
        /// <param name="strConsultaSQL">Consulta SQL.</param>
        /// <param name="strNombreTabla">Nombre que se le asignará a la tabla de retorno.</param>
        /// <returns>DataTable</returns>
        virtual public DataTable dtEjecutarConsultaSQL(string strConsultaSQL, string strNombreTabla)
        {
            return null;
        }

        /// <summary>
        /// Metodo que ejecuta una consulta SQL sobre la base de datos.
        /// </summary>
        /// <param name="strConsultaSQL">Consulta SQL.</param>        
        /// <returns>DataTableReader</returns>
        virtual public DataTableReader dtEjecutarConsultaSQL(string strConsultaSQL)
        {
            return null;
        }

        /// <summary>
        /// Metodo que ejecuta un comando SQL sobre la base de datos.
        /// </summary>
        /// <param name="strComandoSQL">Comando SQL.</param>
        /// <returns>bool</returns>
        virtual public bool boolEjecutarComandoSQL(string strComandoSQL)
        {
            return false;
        }

        /// <summary>
        /// Metodo que ejecuta una transacción sobre la base de datos.
        /// </summary>
        /// <param name="lstComandos">Lista de comandos por ejecutar.</param>
        /// <returns>bool</returns>
        virtual public bool boolEjecutaTransaccion(List<string> lstComandos)
        {
            return false;
        }

        /// <summary>
        /// Metodo que ejecuta el procedimiento almacenado.
        /// </summary>
        /// <returns></returns>
        virtual public bool boolEjecutaProcedimientoAlmacenado() { return false; }
      
    }

}

jueves, 7 de julio de 2011

Reinventando la Rueda

En el Post pasado, explicaba como hacer que un textbox aceptara solo caracteres numericos, pero no me habia percatado que en los controles de DevExpress ya se tiene ese control, les pongo un screenshot…saber esto me ahorrara muchas lineas de codigo



Asi que ya saben.. antes de hacer cualquier funcion.. revisen si ya existe alguna propiedad que ya este implementada y no reinventen la rueda.

Derechos reservados de la Web:
http://dabiddo.wordpress.com/


Ajustar columnas de un GridView al contenido de los camps desde código.

  gridView1.OptionsBehavior.AutoPopulateColumns = true; //'generar automaticamente las columnas a raíz del dataset             gridVie...