Entrada destacada

Me mudo...

He cambiado de servidor. Ahora puedes seguirme en: http://asanchezdiaz.com Todavía está en desarrollo, pero a partir de ahora se...

jueves, 28 de julio de 2016

Me mudo...

He cambiado de servidor.

Ahora puedes seguirme en:

http://asanchezdiaz.com


Todavía está en desarrollo, pero a partir de ahora será allí dónde se publiquen más entradas.

Gracias a todos y feliz programación ;)

miércoles, 1 de mayo de 2013

Cómo obtener el número de días que tiene un mes concreto con DateTime

Hoy, un mini-howto que nos puede ser de utilidad alguna vez.

Se trata de obtener el número de días que tiene un mes concreto con la clase DateTime.

Obtenemos la fecha actual, que como me imagino que sabéis se obtiene con la propiedad Now de DateTime:

DateTime fechaActual = DateTime.Now;

Si queremos ahora saber el número de días que tiene el mes actual usamos el método DaysInMonth(int,intde DateTime, al que tenemos que pasar como parámetros el valor del año y mes del que queremos conocer el número de días.

Para hacerlo más fácil, almacenaremos el año y día del mes en curso a partir de fechaActual:

int anyo = fechaActual.Year;
int mes = fechaActual.Month;

Y llamamos al método DaysInMonth(int, int) de DateTime:

int dias = DateTime.DaysInMonth(anyo, mes);

Obviamente, el siguiente código es igualmente válido:

int dias = DateTime.DaysInMonth(DateTime.Now.Year, DateTime.Now.Month);

jueves, 18 de abril de 2013

C# Windows.Forms - Cómo llenar un ComboBox desde una lista

El control ComboBox de C# permite mostrar una lista desplegable con varias opciones, entre las que el usuario de nuestra aplicación puede elegir.

Podemos añadir opciones (ítems) al control de forma manual si conocemos exactamente las opciones disponibles, es decir, cuándo las opciones que deberá mostrar son limitadas y conocidas, por ejemplo, supongamos que hemos desarrollado una aplicación que, entre otras cosas, almacena clientes.

A la hora de añadir un cliente nuevo a la base de datos, uno de los campos que introducimos es el campo Sexo, así que perfectamente podemos llenar el ComboBox manualmente, introduciendo dos ítems  Hombre y Mujer.

Asumiendo que el ComboBox ya haya sido añadido desde el diseñador de formularios y que su nombre sea comboSexo, podemos crear un método que se encargue de llenar el ComboBox:

private void LlenarComboSexo()
{
    //Vaciar comboBox para que los items que vamos a añadir no se repitan
    comboSexo.Items.Clear();

    //Incluir dos items Hombre y Mujer
    comboSexo.Items.Add(new KeyValuePair<string, string> ("Hombre","Hombre"));
    comboSexo.Items.Add(new KeyValuePair<string, string> ("Mujer","Mujer"));
}

No hemos apoyado en la clase KeyValuePair que, tal y como aparece en la referencia de C#, es una estructura que representa un par clave-valor, aunque tenemos más opciones.

Lo primero que hemos hecho es vaciar el comboBox, ya que si no lo hacemos, lo que conseguiremos con este método es añadir opciones al final de la lista de opciones, con lo que obtendríamos resultados repetidos.
comboSexo.Items.Clear();
Cada ítem del ComboBox maneja por así decirlo dos valores, el texto que se muestra y un valor asociado. A estos valores podemos acceder después en algún punto del código para obtener el texto o valor elegido por el usuario por ejemplo.

Centrándonos en el objetivo de esta entrada, supongamos ahora que tenemos una lista de países que queremos mostrar en un ComboBox, para que el usuario elija un país.

Asumamos que ya tenemos implementados varias clases:

- La clase Pais, cuyas propiedades, entre otras, serán: Id y Nombre
- Una lista  List<Pais> llamada listaPaises, que ya hemos llenado con objetos de la clase País
- Nuestro ComboBox, llamado comboPaises

Nuestro método ahora sería:


private void LlenarComboPaises()
{
    //Vaciar comboBox
    comboPaises.DataSource = null;

    //Asignar la propiedad DataSource
    comboPaises.DataSource = listaPaises;

    //Indicar qué propiedad se verá en la lista
    comboPaises.DisplayMember = "Nombre";

    //Indicar qué valor tendrá cada ítem
    comboPaises.ValueMember = "Id";
}


Ya no necesitamos saber cuáles son los elementos que necesitamos añadir al comboBox a priori, este método lo hará automáticamente.

Lo primero que hacemos en este caso es anular la propiedad DataSource (origen de datos) para reasignarla desde cero.

Una vez asignada a listaPaises, sólo nos falta indicar que propiedad de la clase Pais se mostrará como texto y cual cómo valor.

He supuesto que estáis familiarizados con el manejo de ComboBoxes y sabéis para qué puede ser útil indicar texto y valor de cada ítem.


miércoles, 26 de septiembre de 2012

Manual C# - Capítulo 1.4. Operadores II

Seguimos con el Manual de C#, en este capítulo, veremos los operadores lógicos de C#.

Sistema decimal y sistema binario

      Antes de empezar, quizás sea conveniente tener una noción básica (muy básica) del sistema binario.

      En nuestra vida cotidiana usamos el sistema decimal, un sistema de numeración compuesto de 10 símbolos ( 0,1,2,3,4,5,6,7,8 y 9 ). Se trata de un sistema de numeración posicional, donde el valor de cada dígito depende de su localización dentro del número, y se calcula usando potencias de 10. Por ejemplo:

El número 542 en notación decimal se puede obtener mediante la operación:

5 x 102 + 4 x 101 + 2 x 100

      Es decir, el 2 que ocupa la primera posición se multiplica por la potencia  100 = 1, el 4 que ocupa el segundo lugar se multiplica por su correspondiente potencia 101 = 10 y el 5 que ocupa el tercer lugar se multiplica por 102 = 100. La suma de los tres términos 500 + 40 + 2 es representada por el número o cantidad 542.

      En el sistema binario, tenemos sólo dos símbolos en lugar de los 10 del sistema decimal. Estos símbolos son el 0 y el 1. Es el sistema usado por los ordenadores, ya que se corresponde mejor con la realidad del funcionamiento de un ordenador, que trabaja con dos niveles de voltaje, representados con los números 0 y 1.

      En el sistema binario, el número 0 se representa por 0, cómo era de suponer, el  1 se representa con el símbolo 1, el 2 se representa en la forma 10, el 3 se representa 11...

      No nos vamos a extender mucho definiendo en más profundidad el sistema binario, aunque si podemos realizar una conversión de un número decimal a binario y de binario a decimal:

martes, 25 de septiembre de 2012

Cómo contar los registros de una tabla en SqlServer

A menudo, cuándo usamos una base de datos SqlServer en nuestras aplicaciones, nos surge la necesidad de saber únicamente cuántos registros tenemos almacenados en una tabla.

Por ejemplo, si estamos desarrollando una aplicación que gestione usuarios, podemos necesitar saber cuántos usuarios hay registrados para indicarlo en algún punto de la web, algo así como

"Tenemos x usuarios registrados"

En estos casos no necesitamos saber cual es el nombre o el email de los usuarios, sólo la cantidad.

En nuestra tabla "usuarios" debería haber una columna, llamada por ejemplo "id", con autoincremento (se autoincrementa en una unidad especificada en cada registro nuevo).

Podemos ejecutar la sentencia:

SELECT COUNT(id) FROM usuarios 

miércoles, 19 de septiembre de 2012

Manual C# - Capítulo 1.3. Operadores I

En este capítulo vamos a hablar de los operadores. Los operadores son símbolos que determinan qué tipo de operación hay que realizar entre variables en una expresión.

Operadores aritméticos

Realizan operaciones aritméticas (suma, resta, multiplicación y división) entre dos parámetros:

      Suma ( + )


            La operación es interpretada de distinta forma dependiendo de si los sumandos son de tipo numérico o se trata de cadenas de texto. Por ejemplo, si tenemos dos variables de tipo int la operación dará como resultado la suma de las dos variables:

int sumando1 = 2;

int sumando2 = 3;


int resultado=sumando1+sumando2;

La variable resultado debe ser del tipo int, ya que ambos sumandos lo son, y su valor es 5           Si se trata de dos variables de tipo string, el resultado es la concatenación de las dos cadenas de texto:


string cadena1 = "primera";
string cadena2 = "segunda";

string resultado = cadena1 + cadena2;

            El resultado en este caso es "primerasegunda".

            Fíjate que en las dos operaciones anteriores (y en las demás) el resultado sería el mismo si en lugar de sumar las variables hubiésemos sumado su valor:

int resultado = 2 + 3;
string resultado = "primera" + "segunda";

            Y esto es porque la variable almacena en memoria un valor, que es referenciado al usar la variable.

domingo, 16 de septiembre de 2012

Manual C# - Anexo I - Software que necesitaremos

Para hacer algo más ameno el Manual de C# he pensado en publicar un anexo con el software necesario para seguir el manual, y es el siguiente:

  1. Un IDE de C#. Un IDE (Integrated Development Environment o Entorno de Desarrollo Integrado) es una herramienta que nos proporciona un entorno completo para programar. Contiene todas las herramientas necesarias, cómo el editor, compilador, depurador o la interfaz gráfica. Microsoft proporciona Visual Studio, actualmente en su versión 2012, cuyas versiones comerciales valen, en el momento de escribir esta entrada, unos 636 euros. Las versiones Express son gratuitas, aunque bastante limitadas. Yo os aconsejo un IDE de código abierto como SharpDevelop, totalmente gratutito y con una interfaz muy parecida a Visual Studio. Es el IDE que seguiremos en este manual.

  2. Sistema Operativo Windows XP SP2 o posterior. Yo uso habitualmente Linux, pero para programar en C# uso Windows XP SP2. En Linux existe la plataforma Mono y MonoDevelop para programar en .NET, pero por ahora nos centraremos en Windows.

  3. Framework 4.0 y 3.5 SP1 de .NET. Lo más probable es que, en función de tu sistema operativo tengas ya instalados los frameworks de .NET. Podéis saber qué versiones tenéis instaladas siguiendo este enlace
Empezamos.