martes, 5 de marzo de 2013
sábado, 15 de diciembre de 2012
Validación con expresiones regulares en C#.NET
Posted on 23:34 by XSaint with No comments
Las expresiones regulares son modelos que describen las combinaciones de caracteres en el texto. Se podrían definir como una serie de carácteres que forman un patrón, que representan a otro grupo de carácteres mayor, de tal forma que podemos comparar el patrón con otros conjuntos de carácteres para ver las coincidencias. Las expresiones regulares pueden utilizarse en múltiples lenguajes de programación pero en esta entrada vamos a ver un ejemplo de validación de formularios mediante Javascript y haciendo uso de expresiones regulares.
Un buen tutorial para iniciarse en el manejo de expresiones regulares lo podemos encontrar en Desarrolloweb. Para realizar el ejemplo siguiente no hay porque conocer en profundidad su manejo. A continuación muestro una serie de tablas a modo de chuleta para que podamos utilizarlas con un simple corta y pega.
La tabla siguiente contiene los caracteres especiales de las expresiones regulares.
La tabla siguiente contiene algunos de los patrones más utilizados a la hora de validar formularios. Si alguien conoce alguna expresión regular más -que pueda ser útil en la validación de formularios- la puede poner en los comentarios y yo la incorporaré a esta tabla.
Aquí les dejo el código:
Un buen tutorial para iniciarse en el manejo de expresiones regulares lo podemos encontrar en Desarrolloweb. Para realizar el ejemplo siguiente no hay porque conocer en profundidad su manejo. A continuación muestro una serie de tablas a modo de chuleta para que podamos utilizarlas con un simple corta y pega.
La tabla siguiente contiene los caracteres especiales de las expresiones regulares.
| Carácter | Texto buscado |
|---|---|
| ^ | Principio de entrada o línea. |
| $ | Fin de entrada o línea. |
| * | El carácter anterior 0 o más veces. |
| + | El carácter anterior 1 o más veces. |
| ? | El carácter anterior una vez como máximo (es decir, indica que el carácter anterior es opcional). |
| . | Cualquier carácter individual, salvo el de salto de línea. |
| x|y | x o y. |
| {n} | Exactamente n apariciones del carácter anterior. |
| {n,m} | Como mínimo n y como máximo m apariciones del carácter anterior. |
| [abc] | Cualquiera de los caracteres entre corchetes. Especifique un rango de caracteres con un guión (por ejemplo, [a-f] es equivalente a [abcdef]). |
| [^abc] | Cualquier carácter que no esté entre corchetes. Especifique un rango de caracteres con un guión (por ejemplo, [^a-f] es equivalente a [^abcdef]). |
| \b | Límite de palabra (como un espacio o un retorno de carro). |
| \B | Cualquiera que no sea un límite de palabra. |
| \d | Cualquier carácter de dígito. Equivalente a [0-9]. |
| \D | Cualquier carácter que no sea de dígito. Equivalente a [^0-9]. |
| \f | Salto de página. |
| \n | Salto de línea. |
| \r | Retorno de carro. |
| \s | Cualquier carácter individual de espacio en blanco (espacios, tabulaciones, saltos de página o saltos de línea). |
| \S | Cualquier carácter individual que no sea un espacio en blanco. |
| \t | Tabulación. |
| \w | Cualquier carácter alfanumérico, incluido el de subrayado. Equivalente a [A-Za-z0-9_]. |
| \W | Cualquier carácter que no sea alfanumérico. Equivalente a [^A-Za-z0-9_]. |
| Cualquier letra en minuscula | [a-z] |
| Entero | ^(?:\+|-)?\d+$ |
| Correo electrónico | /[\w-\.]{3,}@([\w-]{2,}\.)*([\w-]{2,}\.)[\w-]{2,4}/ |
| URL | ^(ht|f)tp(s?)\:\/\/[0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*(:(0-9)*)*(\/?)( [a-zA-Z0-9\-\.\?\,\'\/\\\+&%\$#_]*)?$ |
| Contraseña segura | (?!^[0-9]*$)(?!^[a-zA-Z]*$)^([a-zA-Z0-9]{8,10})$(Entre 8 y 10 caracteres, por lo menos un digito y un alfanumérico, y no puede contener caracteres espaciales) |
| Fecha | ^\d{1,2}\/\d{1,2}\/\d{2,4}$(Por ejemplo 01/01/2007) |
| Hora | ^(0[1-9]|1\d|2[0-3]):([0-5]\d):([0-5]\d)$(Por ejemplo 10:45:23) |
| Número tarjeta de crédito | ^((67\d{2})|(4\d{3})|(5[1-5]\d{2})|(6011))(-?\s?\d{4}){3}|(3[4,7])\ d{2}-?\s?\d{6}-?\s?\d{5}$ |
| Número teléfono | ^[0-9]{2,3}-? ?[0-9]{6,7}$ |
| Código postal | ^([1-9]{2}|[0-9][1-9]|[1-9][0-9])[0-9]{3}$ |
| Certificado Identificación Fiscal | ^(X(-|\.)?0?\d{7}(-|\.)?[A-Z]|[A-Z](-|\.)?\d{7}(-|\.)? [0-9A-Z]|\d{8}(-|\.)?[A-Z])$ |
| Valida sólo números del 1 al 12 (ideal para meses) | ^([0-1]?[0-2]|[0-9])$ |
| Valida de 0.1 a 9.9 | ^([0-9].[1-9])$ |
| Valida desde 10.01 hasta 99.99 con 2 decimales máximo | ^[0-9][0-9](.[0-9][0-9])$ |
| Valida desde 0.01 hasta 99.99 con sólo 2 decimales máximo | ^[0-9]?[0-9](.[0-9][0-9])$ |
private void txtcodigo_KeyUp(object sender, KeyEventArgs e)
{
if (es_numero(txtcodigo))
{
errorProvider1.SetError(txtcodigo, String.Empty);
txtcodigo.BackColor = Color.Honeydew;
}
else
{
errorProvider1.SetError(txtcodigo, "Solo numeros");
txtcodigo.BackColor = Color.MistyRose;
}
}
private void txtemail_KeyUp(object sender, KeyEventArgs e)
{
if (es_email(txtemail))
{
errorProvider1.SetError(txtemail, String.Empty);
txtemail.BackColor = Color.Honeydew;
}
else
{
errorProvider1.SetError(txtemail, "ejemplo@ejemplo.com");
txtemail.BackColor = Color.MistyRose;
}
}
private void txtnombre_KeyUp(object sender, KeyEventArgs e)
{
if (es_cadena(txtnombre))
{
errorProvider1.SetError(txtnombre, String.Empty);
txtnombre.BackColor = Color.Honeydew;
}
else
{
errorProvider1.SetError(txtnombre, "Solo letras");
txtnombre.BackColor = Color.MistyRose;
}
}
private void txttelf_KeyUp(object sender, KeyEventArgs e)
{
if (es_telefono(txttelf))
{
errorProvider1.SetError(txttelf, String.Empty);
txttelf.BackColor = Color.Honeydew;
}
else
{
errorProvider1.SetError(txttelf, "Formato: 999-9999");
txttelf.BackColor = Color.MistyRose;
}
}
private void txtweb_KeyUp(object sender, KeyEventArgs e)
{
if (es_url(txtweb))
{
errorProvider1.SetError(txtweb, String.Empty);
txtweb.BackColor = Color.Honeydew;
}
else
{
errorProvider1.SetError(txtweb, "www.example.com");
txtweb.BackColor = Color.MistyRose;
}
}
private void txtsueldo_KeyUp(object sender, KeyEventArgs e)
{
if (es_decimal(txtsueldo))
{
errorProvider1.SetError(txtsueldo, String.Empty);
txtsueldo.BackColor = Color.Honeydew;
}
else
{
errorProvider1.SetError(txtsueldo, "Formato: 00,00");
txtsueldo.BackColor = Color.MistyRose;
}
}
private static bool es_numero(Control mitextbox)
{
Regex regex = new Regex(@"^[0-9]+$");
return regex.IsMatch(mitextbox.Text);
}
private static bool es_cadena(Control mitextbox)
{
Regex regex = new Regex(@"^[^ ][a-zA-Z ]+[^ ]$");
return regex.IsMatch(mitextbox.Text);
}
private static bool es_telefono(Control mitextbox)
{
Regex regex = new Regex(@"^([0-9]{3})[-. ]?([0-9]{4})$");
return regex.IsMatch(mitextbox.Text);
}
private static bool es_decimal(Control mitextbox)
{
Regex regex = new Regex(@"^[0-9]{1,9}([\.\,][0-9]{1,3})?$");
return regex.IsMatch(mitextbox.Text);
}
private static bool es_url(Control mitextbox)
{
Regex regex = new Regex(@"^[a-zA-Z0-9\-\.]+\.(com|org|net|mil|edu|COM|ORG|NET|MIL|EDU)$");
return regex.IsMatch(mitextbox.Text);
}
private static bool es_email(Control mitextbox)
{
Regex regex = new Regex(@"^(?("")(""[^""]+?""@)|(([0-9a-z]((\.(?!\.))|[-!#\$%&'\*\+/=\?\^`\{\}\|~\w])*)(?<=[0-9a-z])@))" +
@"(?(\[)(\[(\d{1,3}\.){3}\d{1,3}\])|(([0-9a-z][-\w]*[0-9a-z]*\.)+[a-z0-9]{2,17}))$");
// Resultado:
// Valid: david.jones@proseware.com
// Valid: d.j@server1.proseware.com
// Valid: jones@ms1.proseware.com
// Invalid: j.@server1.proseware.com
// Invalid: j@proseware.com9
// Valid: js#internal@proseware.com
// Valid: j_9@[129.126.118.1]
// Invalid: j..s@proseware.com
// Invalid: js*@proseware.com
// Invalid: js@proseware..com
// Invalid: js@proseware.com9
// Valid: j.s@server1.proseware.com
return regex.IsMatch(mitextbox.Text);
}
Este codigo va para el boton Nuevo
txtcodigo.Text = String.Empty;
txtcodigo.BackColor = Color.White;
errorProvider1.SetError(txtcodigo,String.Empty);
txtnombre.Text = String.Empty;
txtnombre.BackColor = Color.White;
errorProvider1.SetError(txtnombre, String.Empty);
txttelf.Text = String.Empty;
txttelf.BackColor = Color.White;
errorProvider1.SetError(txttelf, String.Empty);
txtweb.Text = String.Empty;
txtweb.BackColor = Color.White;
errorProvider1.SetError(txtweb, String.Empty);
txtemail.Text = String.Empty;
txtemail.BackColor = Color.White;
errorProvider1.SetError(txtemail, String.Empty);
txtsueldo.Text = String.Empty;
txtsueldo.BackColor = Color.White;
errorProvider1.SetError(txtsueldo, String.Empty);y este codigo va en el boton Grabar
if (es_numero(txtcodigo) == true && es_cadena(txtnombre) == true && es_telefono(txttelf) == true &&
es_url(txtweb) == true && es_email(txtemail) == true && es_decimal(txtsueldo) == true)
{
MessageBox.Show("OK");
}
else
{
MessageBox.Show("Complete todos los campos.");
}Truco:Pasar Texto a Binario en Visual Basic.Net
Posted on 22:45 by XSaint with No comments
Simple aplicación que convierte un texto a binario. Espero pronto cargar esta misma aplicación con la funcion de convertir binario a texto… Pero mientras, el fomulario quedaría así:
Su código es el siguiente y puedes descargar la aplicación desde AQUI
Su código es el siguiente y puedes descargar la aplicación desde AQUI
Private Sub btnaBinario_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnaBinario.Click
Dim Val As String = Nothing
Dim Resultado As New System.Text.StringBuilder
For Each Character As Byte In System.Text.ASCIIEncoding.ASCII.GetBytes(TextBox1.Text)
Resultado.Append(Convert.ToString(Character, 2).PadLeft(8, "0"))
Resultado.Append("")
Next
Val = Resultado.ToString.Substring(0, Resultado.ToString.Length - 1)
TextBox2.Text = Val
End SubDeshabilitar boton Cerrar en winforms en Visual Basic.NET
Posted on 21:55 by XSaint with No comments
Aqui les dejo este codigo que encontre navegando por Internet, este codigo lo ponen debajo de Public Class:
Dim _enabledcerrar As Boolean = False
_
Public Property enabledcerrar() As Boolean
Get
Return _enabledcerrar
End Get
Set(ByVal value As Boolean)
If _enabledcerrar <> value Then
_enabledcerrar = value
End If
End Set
End Property
Protected Overrides ReadOnly Property CreateParams() As System.Windows.Forms.CreateParams
Get
Dim cp As CreateParams = MyBase.CreateParams
If _enabledcerrar = False Then
Const CS_NOCLOSE As Integer = &H200
cp.ClassStyle = cp.ClassStyle Or CS_NOCLOSE
End If
Return cp
End Get
End Property lunes, 3 de diciembre de 2012
Truco CSS:Codigo para crear blogroll efecto deslizante en blogger
Posted on 11:32 by XSaint with No comments
Este es el codigo para que su blogroll luzca asi o algun lector de noticias que tengas aplican este efecto con las etiquetas marquee
martes, 27 de noviembre de 2012
Ingles online con videos elllo:Big Apple Baby
Posted on 11:49 by XSaint with No comments
Subtitles
| 00:15 | OK. Hello! |
| 00:17 | Hi! How you doing? |
| 00:18 | I'm doing pretty good. |
| 00:18 | Good. |
| 00:19 | What's your name? |
| 00:20 | My name is Kevin. |
| 00:21 | Kevin. And where are you from? |
| 00:22 | I'm from Pheonix, Arizona. |
| 00:24 | OK. Nice. |
| 00:25 | In the United States. |
| 00:27 | Wow, were you born in Pheonix? |
| 00:28 | Actually, no. I was actually born in New York, because my parents happened to be living in New York at that time. |
| 00:34 | My father was a Major Leaugue Baseball player, and the year I was born, 1971, |
| 00:41 | he was playing with the Mets in New York City, and my birthday is in May, May 25th, to be precise, |
| 00:49 | and so my mother happened to be with my father in New York cause it was baseball season, so I was actually born in New York, |
| 00:56 | but I grew up in Pheonix. so Phoenix is what I consider to be my home town. |
| 01:00 | Wow! That's Amazing! Do you remember anything about New York? |
| 01:04 | Yes, actually, I do have a few memories because we spent probably three years there from the time I was born, obviously, |
| 01:14 | until I was about two and a half or three years, we spent summers, or the baseball season in, in New York, |
| 01:21 | and we rented a condominium on the second floor, and I remember, it was right across the street from La Guardia Airport, |
| 01:28 | and so of course, when I was a little kid, one, one and two years old, I used to love sitting by the kitchen windows, |
| 01:34 | and I even remember it was a bay window, the kind where you can roll the window open, |
| 01:40 | and I used to roll the window open, and just watch the airplanes take off and land all day. |
| 01:44 | Wow! That's cool. |
| 01:46 | And another memory I have is the people, the couple that lived below us was an elderly couple and they acted pretty much like our grandparents, |
| 01:56 | so I actually called them Grandma and Grandpa, and, uh, Grandma Stevenson used to give me a bath in the, in her, in her kitchen sink, cause I was so small |
| 02:05 | Wow! |
| 02:06 | That she would actually give me a bath in her kitchen sink, and I remember that as well. |
| 02:09 | Wow, those are good memories. |
domingo, 11 de noviembre de 2012
Agregar y Grabar en datagridview para guardar en SQL con Transacciones en Visual Basic .NET
Posted on 21:05 by XSaint with No comments
Crearemos una forma con los objetos como aparece en la imagen, ademas agregaremos la libreria de sqlclient
Ahora para agregar los datos, hemos determinado un textbox para un nombre un combobox con unos deportes y por ultimo un datetimepicker para una fecha. tenemos un boton agregar que nos permitira, agregar un row al datagridview.
Este es el codigo para el boton agregar
Imports System.Data.SqlClientpara el ejemplo crearemos una base de datos con el nombre DBPRUEBA, que nos permita almacenar los datos.
CREATE DATABASE DBPRUEBA USE DBPRUEBA CREATE TABLE datos( id_datos INT PRIMARY KEY IDENTITY(1,1), nombre VARCHAR(50), deporte VARCHAR(50), fecha_inscripcion datetime )Ahora crearemos 4 columnas dentro del datagrid. que nos permitan agregar los datos ingresados.
Ahora para agregar los datos, hemos determinado un textbox para un nombre un combobox con unos deportes y por ultimo un datetimepicker para una fecha. tenemos un boton agregar que nos permitira, agregar un row al datagridview.
Este es el codigo para el boton agregar
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
If Me.TextBox1.Text <> String.Empty Then
If Me.ComboBox1.Text <> String.Empty Then 'agregamos la informacion a un row o fila del datagrid
Me.DataGridView1.Rows.Add(Me.TextBox1.Text, Me.ComboBox1.Text, Me.DateTimePicker1.Value.ToShortDateString) 'limpiamos los controles
Me.TextBox1.Text = String.Empty
Me.ComboBox1.SelectedItem = String.Empty
Me.DateTimePicker1.Value = Today.Date
Else
MessageBox.Show("Ingrese un deporte", "", MessageBoxButtons.OK, MessageBoxIcon.Information)
End If
Else
MessageBox.Show("Ingrese un nombre", "", MessageBoxButtons.OK, MessageBoxIcon.Information)
End If
End Subuna vez tenemos datos dentro de nuestro datagrid, si deseamos eliminar uno de nuestros rows o filas damos click en el boton eliminar, la cual quitara la fila del datagrid.Private Sub DataGridView1_CellContentClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellContentClick
'se puede hacer referencia al nombre de la columna para saber donde hicieron click o solo con el e.columnindex sabiendo la posicion de la columna
'yo lo manejo asi por que se daran cuenta que en algun caso las columnas pueden aumentar o disminuir
'y se complicaria la cosa por que si cambia el numero de columnas habria que corregir siembre el indice
'si hicieron clic en la columna eliminar
If DataGridView1.Columns(e.ColumnIndex).Name = "Eliminar" Then 'eliminar row
DataGridView1.Rows.RemoveAt(e.RowIndex)
End If
End SubAhora podremos guardar nuestra informacion al hacer click en el boton guardar, aqui se validara que existan datos o mejor filas en el datagrid, ahora recorreremos nuestro datagrid por medio de un For. tendremos una varia de tipo string (SqlString ) donde agregaremos la sentencia para guardar en la base de datos (INSERT INTO), ademas de un araylist para agregar las sentencias.Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
If DataGridView1.Rows.Count > 0 Then
Dim SqlString As String = String.Empty ' variable a la que asignaremos la sentencia
Dim ListSqlStrings As New ArrayList 'arregla donde ingresaremos las sentencias
'recorremos el datagrid como ya sabemos siempre se toma desde cero
For i As Integer = 0 To DataGridView1.Rows.Count - 1 'creamos la sentencia el row siempre tendra el valor de i para ir pasando de row en row
'el campo .cells(0) indica la columna que esta ese dato, tambien puede hacerlo con el nombre de la celda .cells("Nombre")
SqlString = "INSERT INTO datos (nombre,deporte,fecha_inscripcion) VALUES ('" + DataGridView1.Rows(i).Cells(0).Value.ToString() + "','" + DataGridView1.Rows(i).Cells(1).Value.ToString() + "','" + DataGridView1.Rows(i).Cells(2).Value.ToString() + "')"
'agregamos la sentencia a la lista
ListSqlStrings.Add(SqlString)
Next
If EjecutarTransaccion(ListSqlStrings) Then
MessageBox.Show("Info. guardada correctamente")
Close()
Else
MessageBox.Show("La Info. no se guardo")
End If
Else
MessageBox.Show("No hay informacion para guardar")
End If
End SubAhora una vez hallamos recorrido el datagrid y tengamos nuestras sentencias, podremos ejecutar nuestra transaccion SQl para guardar en la base de datos. En este punto haciendo un parentesis igualmente podra ejecutar una a una las sentencias si lo desea por medio de un executenonquery, pero para mi lo mas optimo es una transaccion. Volviendo al evento guardar la funcion Public Function EjecutarTransaccion(ByVal ListaSentencias As ArrayList) As Boolean recibira el arraylist y retornara un valor booleano para identificar si se realizo la transaccion. para ejecutar nuestra transaccion necesitamos una conexion como la siguiente.Public Connection1 As New SqlConnection("Data Source=XSaint;Initial Catalog=DBPRUEBA;Integrated Security=SSPI")Ahora la funcion ejecutartransaccion se ejecutara, si es correcta la transaccion retornara true de ser incorrecta podremos ver un mensaje y retornara un falsePublic Function EjecutarTransaccion(ByVal ListaSentencias As ArrayList) As Boolean
Dim band As Boolean = False
If AbrirConexion() Then
Dim command As SqlCommand = Connection1.CreateCommand()
Dim transaction As SqlTransaction
Dim strSentencia As Object
Dim sentencia As String = ""
transaction = Connection1.BeginTransaction()
command.Connection = Connection1
command.Transaction = transaction
Try
For Each strSentencia In ListaSentencias
sentencia = strSentencia.ToString()
command.CommandText = sentencia.ToString()
command.ExecuteNonQuery()
Next
transaction.Commit()
band = True
Catch ex As Exception
MessageBox.Show(ex.Message)
Try
transaction.Rollback()
Catch ex2 As Exception
MessageBox.Show(ex2.Message)
End Try
Finally
CerrarConexion()
End Try
End If
Return band
End FunctionSi la transaccion es satisfactoria veremos un mensaje de satisfaccion. la clase transaccion utiliza dos funciones dicionales de abrir y cerrar conexion que nos permite establecer si la conexion es correcta o no.Public Function AbrirConexion() As Boolean
Dim band As Boolean = False
Connection1.Open()
Try
band = True
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
Return band
End Function
Public Function CerrarConexion() As Boolean
Dim band As Boolean = False
Connection1.Close()
Try
band = True
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
Return band
End Functionahora podremos ver nuestra informacion, en la base de datos.
Suscribirse a:
Entradas (Atom)






































