Nueva versión jQuery 1.8.2


Se encuentra disponible para su descarga la nueva versión de jQuery 1.8.2 (Framework de Javascript).

Esta herramienta de software libre, nos permite construir aplicaciones web altamente interactivas con mucha elegancia y amplia funcionalidad del lado del cliente, nos trae en esta ocasión una versión de mantenimiento la cual corrige algunos errores de seguridad y desempeño que fueron descubiertos en los dos últimos lanzamientos.

Para más información, se pueden dirigir a los CDN de Google y Microsoft, anexo url donde podran descargar la versión: blog.jquery.com/2012/09/20/jquery-1-8-2-released/
Share:

Solo Letras en los Textbox C# - Windows Forms

En el desarrollo de aplicaciones en C#, es común encontrarse con la necesidad de restringir la entrada de datos en TextBox a solo letras. Este artículo abordará estrategias efectivas para llevar a cabo esta validación, proporcionando código práctico y consejos esenciales para mejorar la calidad de tu aplicación.

Solo Letras en C#


1. Validación en Tiempo Real: Evento Keypress

La primera técnica consiste en implementar una validación en tiempo real al suscribirse al evento KeyPress. De esta manera, puedes filtrar las entradas y permitir solo letras. Aquí te presento un fragmento de código que puedes integrar:
private void txtCaracter_KeyPress(object sender, KeyPressEventArgs e)
{
if (!(char.IsLetter(e.KeyChar)) && (e.KeyChar != (char)Keys.Back))
{
      MessageBox.Show("Solo se permiten letras", "Advertencia", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
      e.Handled = true;
      return;
}
}
Este código asegura que solo se ingresen letras y permite el uso de teclas de control como borrar o retroceso.

2. Utilización de Expresiones Regulares: Verificación de Texto Completo

Otra estrategia poderosa implica el uso de expresiones regulares para verificar el contenido completo del TextBox. El siguiente ejemplo muestra cómo implementar esta validación:

private void TextBox_TextChanged(object sender, EventArgs e)
{
    string input = TextBox.Text;
    if (!Regex.IsMatch(input, "^[a-zA-Z]+$"))
    {
        MessageBox.Show("Por favor, ingrese solo letras.", "Error de Validación", MessageBoxButtons.OK, MessageBoxIcon.Error);
        TextBox.Text = ""; // Limpiar el contenido no válido
    }
}

Mejora la Experiencia del Usuario con Validación de Entrada de Datos

Implementar la validación para ingresar solo letras en TextBox en C# no solo mejora la integridad de los datos sino que también proporciona una experiencia más intuitiva y libre de errores para los usuarios. Al integrar estas estrategias en tu código, garantizas una aplicación robusta y confiable. ¡Explora estas opciones y eleva la calidad de tu desarrollo en C#!

Leer Más:



Ejecutando el código anterior se genera un mensaje como lo muestra la siguiente imagen:


Digitación correcta:


Está validación no solo se puede aplicar sobre un control Textbox, lo podemos ver en proyectos de tipo consola, como se puede ver en el siguiente ejemplo. Parte II: Solo Letras C# - Windows Forms (Consola)


Share:

IsNull en Oracle


NVL OracleEn las consultas a base de datos los resultados pueden traernos valores Nulos (Null) para evitar esto, en SQL la función se llama IsNull en Oracle es llamada NVL, veamos como se usan:







Oracle NVL

nvl(check_expression,replacement_value)

SQL IsNull

IsNull(check_expression,replacement_value)

En ambos casos las funciones reemplazan el valor nulo (check_expression) por el que se encuentre en segundo parámetro replacement_value.
Share:

▶ Como Validar solo Números en los Textbox C# - Windows Forms

Cuando trabajas en aplicaciones C# y te encuentras con la necesidad de asegurar que un TextBox solo acepte números, la validación adecuada se convierte en un aspecto clave para garantizar la integridad de los datos. En este artículo, exploraremos estrategias efectivas para lograr esta validación específica y proporcionaremos códigos prácticos que puedes implementar en tus proyectos de desarrollo en C#.

TEXTBOX SOLO NÚMEROS

1. Implementación de Validación en Tiempo Real:

La primera estrategia para validar solo números en un TextBox es aprovechar eventos en tiempo real. Puedes suscribirte al evento KeyPress y verificar si la tecla presionada es un número. Aquí tienes un ejemplo de cómo implementarlo:

Como hacer que un Textbox Solo acepte Números en C#

El siguiente código ejemplo valida que se digite solo números en un Textbox en C#, para esto se agrega al evento KeyPress de la caja de texto:
private void txtCaracter_KeyPress(object sender, KeyPressEventArgs e)
{
if (!(char.IsNumber(e.KeyChar)) && (e.KeyChar != (char)Keys.Back))
{
      MessageBox.Show("Solo se permiten numeros", "Advertencia", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
      e.Handled = true;
      return;
}
} 

Este código asegura que solo se ingresen números y controla que las teclas de control (como borrar o retroceso) puedan usarse.

2. Uso de Expresiones Regulares:

Otra técnica poderosa es emplear expresiones regulares para validar el contenido del TextBox. La clase Regex de C# facilita la implementación de esta validación. A continuación, se presenta un ejemplo de cómo hacerlo:

private void TextBox_TextChanged(object sender, EventArgs e)
{
    string input = TextBox.Text;
    if (!Regex.IsMatch(input, "^[0-9]+$"))
    {
        MessageBox.Show("Por favor, ingrese solo números.", "Error de Validación", MessageBoxButtons.OK, MessageBoxIcon.Error);
        TextBox.Text = ""; 
    }
}

Este código verifica si el contenido del TextBox contiene únicamente en números. En caso contrario, muestra un mensaje de error y lo limpia el. 

3. Utilización de Métodos TryParse: 

Una tercera opción es utilizar los métodos int.TryParse o double.TryParse para intentar convertir el texto a un número. Si la conversión tiene éxito, se permite el ingreso; de lo contrario, se rechaza. 

private void TextBox_Leave(object sender, EventArgs e)
{
    if (!int.TryParse(TextBox.Text, out _))
    {
        MessageBox.Show("Por favor, ingrese solo números.", "Error de Validación", MessageBoxButtons.OK, MessageBoxIcon.Error);
        TextBox.Text = ""; // Limpiar el contenido no válido
    }
}

Leer Más:

Valida Solo Números en C#

Al digitar una tecla diferente a un número, se envía un mensaje (se podría comentar la linea del mensaje para que no se muestre) como lo muestra la siguiente imagen:


Digitación correcta:


Garantizar la entrada de datos precisa es esencial en cualquier aplicación, y validar solo números en TextBox en C# es un paso crucial. Al implementar estas estrategias, no solo mejora la integridad de los datos sino que también proporciona a los usuarios una experiencia más intuitiva y libre de errores.

Asegúrate de integrar estas prácticas en tu código para lograr una aplicación robusta y confiable. ¡Explora estas opciones y lleva tu desarrollo en C# al siguiente nivel!

Si quieren conocer esta validación, pero controlando que solo digiten letras, pueden visitar el articulo Solo letras en los Textbox C# - Windows Forms.

Share:

Que es lo nuevo de visual studio 2012

VS 2012 El 2012, es el año de las nuevas versiones para microsoft, con Windows 8, Windows Phone 8, windows Server 2012, System Center 2012 y SQL Server. Proximamente (12 de Septiembre) sale al mercado una nueva versión de Visual Studio 2012, como principales características tiene:

* Lo primero que identificamos es una interfaz de usuario mejorada, mucho mas moderna, tiene mejoras en el Explorador de soluciones, las pestañas de previsualización, e Historia, estas poseen aún más funcionalidades para ayudar a entender el código sin abrir tantas ventanas adicionales.

* Mejoras en los lenguajes como Visual C#, Visual Basic, Visual F#, ASP.Net y, así como la adición de nuevas normas de apoyo de base para C++ y JavaScript. Visual C# y desarrolladores de Visual Basic también se benefician de una plantilla de proyecto adicional, lo que les permite crear componentes de Windows en tiempo de ejecución.

* Los desarrolladores pueden utilizar HTML5, CSS3 y JavaScript para crear sitios web moderno aplicaciones que se procesan perfectamente en muchos dispositivos (compatible con la creación de aplicaciones Windows Phone) y plataformas e incluye un nuevo conjunto de plantillas de aplicaciones.

* Como ya sabemos Microsoft por cada nueva versión de Visual studio nos trae un nuevo Framework, para esta versión tenemos Framework 4.5. Algunos de sus cambios incluyen soporte para compresión Zip, HTML5, WebSocket y WPF.

ToolBox VS 2012


* La caja de herramientas se puede buscar para proporcionar un acceso rápido a los controles durante el desarrollo


* Integración de LightSwitch al Visual Studio ya que anteriormente era un producto adquirido por separado. 

* Para el desarrollo y la depuración de aplicaciones web, los desarrolladores tenemos a la mano Internet Information Server (IIS) Express. Esta es una versión ligera y autónoma de IIS, que es adecuada para probar sus aplicaciones. Tiene todas las capacidades centrales de la IIS, pero no se ejecuta como un servicio. Además se tiene un nuevo almacén de datos LocalDB, es una versión liviana de Sql Server, asegurando que no es necesario cambiar el código cuando se implementa la aplicación.

* EL Explorador de soluciones ha sido extendido para comprender más fácilmente la estructura de proyectos. Se puede navegar por los objetos del proyecto y profundizar en los métodos y propiedades. También le permite crear archivos de búsqueda y vista previa, objetos y elementos externos.

Se puede encontrar más información de Visual Studio 2012 Virtual Launch Event desde www.visualstudiolaunch.com.
Share:

Como Enviar un Correo Electrónico desde C# .Net de forma fácil

En la mayoría de las aplicaciones existe la necesidad de enviar un correo electronico, a continuación les muestro una forma sencilla de enviar un correo electronico desde C# .net.

Lo primero que debemos hacer es llamar la libreria: using System.Net.Mail; luego para fines de este ejemplo, se crea un método llamado SendMail que contiene toda la funcionalidad necesaria para construir y enviar el correo.

A continuación se declara un método llamado SendMail recibiendo los parámetros necesarios para enviar el correo:
/// 
/// Envía un email
/// 
/// Quien lo envía 
/// A quien se le envía 
/// Asunto 
/// Cuerpo del correo 
/// Correo con copia oculta 
/// Adjuntar archivos al correo  
public void SendMail(System.String sFrom, System.String sTo,System.String sSubject, System.String sBody,System.String sCC, System.String[] sFile)
{
    //Separar correos
    string[] toAddresses = sTo.Split(';');
    //Crear objeto que enviara el mail
    System.Net.Mail.MailMessage mailNew = new MailMessage();
    //Asigna propiedades y dirección desde la que se envía
    mailNew.From = new System.Net.Mail.MailAddress(sFrom);

Al objeto mail, agregamos los destinatarios (previamente fueron separados por punto y coma), copia oculta del correo. Asunto, cuerpo del correo, así como el formato en que se enviara el correo:

    //Agregamos los destinatarios del correo y copia oculta
    foreach (string toAddress in toAddresses)
    {
        mailNew.To.Add(new MailAddress(toAddress));
    }      
    mailNew.Bcc.Add(sCC);
   
    //Asunto y cuerpo del correo
    mailNew.Subject = sSubject;
    mailNew.Body = sBody;
   
    //Habilitar formato html al correo y prioridad
    mailNew.IsBodyHtml = true;         
    mailNew.Priority = MailPriority.Normal;
Configuramos las propiedades del servidor de correo, si necesita autenticación segura se deben configurar las credenciales (Linea 11):
    //Establecemos los datos del servidor de correo
    System.Net.Mail.SmtpClient SmtpDominio = new System.Net.Mail.SmtpClient();
    //Nombre del servidor de correo
    SmtpDominio.Host = "smtp.dominiocorreo.com";
    //Asignamos el número del puerto
    SmtpDominio.Port = 80;
    //Autenticación segura
    SmtpDominio.EnableSsl = true
   
    //Si el servidor de correo necesita autenticacion de agrega la siguiente linea
    SmtpDominio.Credentials = new System.Net.NetworkCredential("correo@dominio.com", "clave123");

Como Enviar un Correo Electronico desde C# con Archivos Adjuntos

Si necesitamos enviar el correo electrónico con archivos adjuntos, se utiliza el siguiente código usando el objeto mailNew, el agrega el archivo a través del método Attachments.Add, como lo pueden observar en el siguiente ejemplo:
 try
    {
        //Limpiar objeto para adjuntar archivos
        mailNew.Attachments.Clear();
        //Si los hay, agregamos archivos adjuntos al correo
        if (sFile != null)
        {              
            for (int i = 0; i < sFile.Length; i++)
            {
                if (!string.IsNullOrEmpty(sFile[i].ToString())) 
                  mailNew.Attachments.Add(new System.Net.Mail.Attachment(sFile[i].ToString()));
            }
        }
        //Enviar correo
        SmtpDominio.Send(mailNew);
       
        //Muy importante esta linea, se debe liberar el objeto que almacena 
        //los archivos adjuntos
        mailNew.Attachments.Dispose();
    }
    catch (Exception Ex)
    {
        //Error enviando
    }      
    //Archivo Enviado
}

Share:

Comparación Detallada entre SCOPE_IDENTITY() y @@IDENTITY para Optimizar tus Consultas

En el mundo de SQL Server, las funciones SCOPE_IDENTITY() y @@IDENTITY desempeñan roles cruciales al recuperar valores de identidad generados durante la inserción de registros en una tabla. Aunque ambas funciones están diseñadas para propósitos similares, existen diferencias clave que es vital comprender.

1. Alcance de la Función:

  • SCOPE_IDENTITY(): Se limita al alcance de la rutina actual, lo que significa que devuelve el último valor de identidad generado dentro del mismo ámbito o bloque de instrucciones T-SQL que realizó la inserción.
  • @@IDENTITY: Es más amplio en alcance y puede devolver el último valor de identidad generado en cualquier ámbito, incluso si es diferente al ámbito actual. Esto lo hace más propenso a errores si se ejecutan múltiples operaciones de inserción simultáneas en diferentes ámbitos.

2. Manejo de Desencadenadores (Triggers):

  • SCOPE_IDENTITY(): Es más seguro en entornos que involucran desencadenadores, ya que solo devuelve el valor de identidad generado en el ámbito actual, evitando conflictos causados por desencadenadores en otros ámbitos.
  • @@IDENTITY: Puede ser afectado por desencadenadores en otros ámbitos, ya que puede devolver el valor de identidad generado más recientemente, incluso si fue causado por una operación en un ámbito diferente.
3. Funciones de Tabla:

  • SCOPE_IDENTITY(): Es preferible cuando se trabaja con funciones de tabla, ya que se comporta de manera más predecible y devuelve el valor de identidad de la tabla específica en la que se realizó la inserción.
  • @@IDENTITY: Puede devolver el valor de identidad de cualquier tabla, lo que puede resultar en comportamientos inesperados en el caso de operaciones simultáneas en múltiples tablas.
Ambas funciones devuelven el id de la última fila insertada en columnas de identidad, a continuación se describen en que consisten:

* @@identity: Devuelve el valor de identidad de una tabla en la sesión actual. Si se inserta una fila en la tabla A, se inserta una fila en la tabla B, y seleccione @@IDENTITY, obtendrá el valor de identidad insertado en la Tabla B.

create table tableA (
                               ID1 int identity(1,1),
                               Detalle varchar(100)
                )
create table tableB (
                               ID1 int identity(20,1),
                               Detalle varchar(100)
                )
Insert Into tableA Values ('Detalle1')
Insert Into tableB Values ('Detalle2')

Select @@IDENTITY       -- resultado 20

Ahora si realizamos la inserción en una tabla pero ésta tiene un trigger que inserta registros en una segunda tabla, la función retornara el Id de la última tabla y no de la que inicialmente estabas insertando.

* SCOPE_IDENTITY():  Retorna el último valor de identidad generado para cualquier tabla, no sólo en la sesión actual sino también en el ámbito actual (es un modulo como procedimiento almacenado, trigger, funciones). Es la mejor opción para solucionar un escenario como lo expuesto anteriormente, ya que devuelve así sea que la tabla donde se inserte tenga trigger, el último Id del último Scope utilizado.


En resumen, SCOPE_IDENTITY() es más preciso y seguro en situaciones donde el alcance debe ser estrictamente controlado, mientras que @@IDENTITY es más versátil pero potencialmente propenso a errores en entornos más complejos. La elección entre ambas dependerá de las necesidades específicas de la aplicación y del control del alcance requerido.
Share:

ASP.NET: Diferencias entre Response.Redirect y Server.Transfer

Al desarrollar aplicaciones web en Visual Studio, a menudo utilizados los método Response.Redirect y Server.Transfer, muchas veces sin tener claridad que implicaciones tiene utilizar uno o el otro. En este post quiero (espero sea claro) explicar que son, ventajas y desventajas que pueden llegar a presentar cada uno, sin más preámbulos empecemos.

El método Redirect del objeto Response nos permite enviar al usuario a otra Url por ejemplo:

Response.Redirect("contenido/inicio.aspx")

Esto le indica al navegador que la pagina o recurso solicitado se encuentra en otro lugar de inicio.aspx, aquí el servidor web recibe la solicitud de cambio de dirección, se envía una cabecera de respuesta al usuario, a su vez se envía una devolución de nuevo al servidor, realizando una ida vuelta extra cerrando todos procesos que la página anterior podría estar utlizando, como por ejemplo cadenas querystring, variables, sesiones. Se recomienda evitar utilizarlo en sitios web muy grandes. Sin embargo, esta es la técnica utilizada para redirigir desde un servidor web a otro.

Al igual que el método anterior, el método Server del objeto Transfer, dirige al usuario a otra Url con la diferencia que realiza una ida y vuelta menos al servidor, ya que preserva el HttpContext de la pagina inicial, por lo que la pagina destino puede tener acceso a los recursos como variables, cadenas querystring de la página origen. Inconvenientes solo transfiere la ejecución a una página web en el mismo servidor.

Pueden utilizar ambos metodos en los casos que mas se ajusten a su desarrollo.
"" Si tienes dudas o quieras ampliar este artículo, lo puedes hacer dejando tus comentarios. Además, si lo consideras interesante puedes compartirlo con amigos y seguidores a través de los botones sociales que aparecen en esta página.""
Share: