Validaciones Vb Net

31
Lo primero es validar si existen o no datos, es decir si no esta vacía la caja de texto. Hay varias formas de hacerlo es obtener el tamaño del contenido de la caja de texto y si este es menor a cero entonces significa que esta vacío: ? 1 2 3 4 5 6 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click If Len(TextBox1.Text) <> 0 Then Else MessageBox.Show("Debes digitar tu número de <span class="IL_AD" id="IL_AD7">documento</span>") End If End Sub Otra forma puede ser comparándolo como si fuera una simple cadena de texto, a diferencia de la forma anterior que utilizábamos números enteros, ya que la función Len() retorna un número entero que contiene el número de caracteres de una cadena. ? 1 2 3 4 If TextBox1.Text <> "" Then Else MessageBox.Show("Debes digitar tu número de documento") End If Comprobar los tipos de datos de los formularios en Visual Basic .NET Una vez hayamos comprobado que el usuario a introducido o no datos debemos comprobar que el tipo de dato que a introducido, es decir si es un número o una fecha o una simple cadena. Para el caso de los números lo podemos comprobar con la función IsNumeric() de esta forma: ? 1 2 3 Private Sub TextBox1_KeyPress(ByVal sender As System.Object, ByVal e As System.<span class="IL_AD" id="IL_AD11">Windows</span>.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress If Not IsNumeric(e.KeyChar) Then e.Handled = True End Sub Todo desde la propiedad Keypress del Textbox al que queremos aplicarle el filtro. En este caso si no es un número lo que se esta presionando entonces la propiedad e.Handled retorna verdadero y este no dejará que se tecleen caracteres, igual si quitamos el Not del condicional este solo nos dejará escribir letras. *******************************************************************************

Transcript of Validaciones Vb Net

Page 1: Validaciones Vb Net

Lo primero es validar si existen o no datos, es decir si no esta vacía la caja de texto. Hay varias formas de hacerlo

es obtener el tamaño del contenido de la caja de texto y si este es menor a cero entonces significa que esta vacío:

?

123456

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click        If Len(TextBox1.Text) <> 0 Then        Else            MessageBox.Show("Debes digitar tu número de <span class="IL_AD" id="IL_AD7">documento</span>")        End If    End Sub

Otra forma puede ser comparándolo como si fuera una simple cadena de texto, a diferencia de la forma anterior que

utilizábamos números enteros, ya que la función Len() retorna un número entero que contiene el número de

caracteres de una cadena.

?

1234

If TextBox1.Text <> "" Then        Else            MessageBox.Show("Debes digitar tu número de documento")        End If

Comprobar los tipos de datos de los formularios en Visual Basic .NET

Una vez hayamos comprobado que el usuario a introducido o no datos debemos comprobar que el tipo de dato que a

introducido, es decir si es un número o una fecha o una simple cadena. Para el caso de los números lo podemos

comprobar con la función IsNumeric() de esta forma:

?

123

Private Sub TextBox1_KeyPress(ByVal sender As System.Object, ByVal e As System.<span class="IL_AD" id="IL_AD11">Windows</span>.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress        If Not IsNumeric(e.KeyChar) Then e.Handled = True    End Sub

Todo desde la propiedad Keypress del Textbox al que queremos aplicarle el filtro. En este caso si no es un número

lo que se esta presionando entonces la propiedad e.Handled retorna verdadero y este no dejará que se tecleen

caracteres, igual si quitamos el Not del condicional este solo nos dejará escribir letras.

*******************************************************************************

Hola: acá les dejo un ejemplo muy sencillo en visual basic .net para evaluar las teclas presionadas cuando se ingresan datos en un textbox y solo permitir las letras ignorando todo lo que no sea una letra. Es muy básico pero les servirá de punto de partida para validar cualquier ingreso. A continuación el código….

view source

print ?

Page 2: Validaciones Vb Net

1.Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress2.    If (Not Char.IsLetter(e.KeyChar) And e.KeyChar <> Microsoft.VisualBasic.ChrW(8)) Then3.        e.Handled = True4.    End If5.End Sub

************************************************************************

El siguiente código es para que en un textBox podamos ingresar solo números si quieres ingresar solo enteros le pones al momento de utilizar la función que decimales sea igual a false caso contrario le pones true.

Primero debemos pegar la siguiente funcion Public Function txtNumerico(ByVal txtControl As TextBox, ByVal caracter As Char, ByVal decimales As Boolean) As Boolean If (Char.IsNumber(caracter, 0) = True) Or caracter = Convert.ToChar(8) Or caracter = "." Then If caracter = "." Then If decimales = True Then If txtControl.Text.IndexOf(".") <> -1 Then Return True Else : Return True End If End If Return False Else Return True End If End Function

Segundo en el evento Key Press de nuestro textBox digitar lo siguiente: e.Handled = txtNumerico(txtCosto, e.KeyChar, true)

En este caso permitira el acceso de numeros con su punto decimal

Espero que este codigo le sirva a alguien el rato que necesite una funcion que haga esto no la encontre. Cualquier consulta o falla del código haganmela llegar

************************************************************************************

Validar correo electrónico

Normalmente se nos presenta el inconveniente de saber si la dirección de correo electrónico que están escribiendo nuestros usuarios esta en un formato valido o no, para este fin el proceso a realizar es, la validacion de las partes básicas de un correo electrónico, tal como una @ un . (Punto) y un dominio consecuente

Para poder lograr esta validacion usaremos una expresión regular, en vb.net

Espacio de nombres:

mports System.Text.RegularExpressions

Función

Public Function validar_Mail(ByVal sMail As String) As Boolean

' retorna true o false

Return Regex.IsMatch(sMail, _

"^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-

9-]+)*(\.[a-z]{2,4})$")

Page 3: Validaciones Vb Net

End Function

Llamado a la funcion la cual puede ser desde el evente leave de el textbox deseado

If validar_Mail(LCase(TxtMail.Text)) = False Then

MessageBox.Show("Dirección de correo electronico no valida,

el correo debe tener el formato: [email protected], " & _

" por favor seleccione un correo valido", "Validación de

correo electronico", MessageBoxButtons.OK,

MessageBoxIcon.Exclamation)

TxtMail.Focus()

TxtMail.SelectAll()

End If

Función para validar la entrada de datos numéricos por teclado en un formulario de vb.net.

Voy a explicar la rutina que utilizo yo para validar la entrada de datos numéricos en un formulario realizado en vb.net.La función es la siguiente, creo que no hace falta explicación, con los comentarios tenemos suficiente información. Si hace falta alguna aclaración, ya sabeis un comentario en el post y ya os responderé.

La llamada a la función se realizará dentro del evento "TextChanged". 

************************************************************

Page 4: Validaciones Vb Net

Mira independientemente de que plataforma usas (Web o Windows forms) los formularios de validacion de usuarios y contraseñas siguen los mismos principios

Para poder hacer la validación necesitas pegar TextBox de nombreTextBox de contraseñaBoton de aceptarBoton de cancelar

Para validar a los usuarios debes tener incluidos los nombres de los usuarios en una tabla de tu base de datos, donde se incluye Id, nombre, contraseña.

Cuando el usuario presione el botón de aceptar necesitas llamar a una funcion booleana que te indica si el usuario existe o no en la base de datos, en caso afirmativo pasa a la forma o pagina web principal, en caso contrario le envias el mensaje en donde indicas que el usuario no existe.

Te dejo un ejemplo de la funcion boolena

-------------------llamado a la funcionPrivate Sub Command1_Click()IF ExisteUsuario(txtUser.text, txtContraseña.text) THEN'Mandar a llamar aqui a la siguiente forma o pagina webELSEMsgbox "El usuario no existe"END IF

end sub

-------------------FUNCIONprivate function ExisteUsuario(byval usuario, byval contraseña) as boolean...aqui ingresas el codigo que buscara en la base de datos para ver si existe el usuario, logicamente tu control que hace las consultas tambien puede retornar el conteo de los registros encontrados, en este caso si existe un valor mayor a cero (es decir que si se retorno un registro) entonces la funcion retorna true, en caso contrario retorna un falseend function

********************************************************************

ToolTip: Explotemoslo al maximo! Muchas veces solo nos limitamos a asignar un ToolTip a un control como un botón o una imagen y nos olvidamos de la cantidad de configuraciones que nos ofrece este simple pero completo control!

(Mi intención es explotar al máximo el rendimiento de este objeto y eso que he tenido mis dudas hoy sobre que escribir, ya que mi primera intención era el errorprovider, pero lo dejare para la siguiente vez.)

Bueno, empecemos, lo primero insertaremos dos botones y un ToolTip en nuestro formulario y nos aseguramos que su propiedad Active este a True. Para asociar el ToolTip a nuestros controles solo tenemos que utilizar el método setToolTip

Page 5: Validaciones Vb Net

ToolTip.SetToolTip(btnAceptar, "Boton Aceptar")ToolTip.SetToolTip(btnCancelar, "Boton Cancelar")

Como veis es muy sencillo, con un solo tooltip podemos asignar todos los controles, aunque asi no podemos personalizarlos, necesitariamos mas instancias del objeto. Esto me imagino que todos ya sabriais ahora vamos a personalizarlo un poquillo.

Propiedad

IsBallon (Boolean): Si esta a true se muestra como un bocadillo.

TootTipIcon(enumeracion): Se asigna iconos.

ShowAlways(Boolean): si esta a true aunque no tenga el foco la aplicación se podra ver el tooltip.

ToolTipTitle (String): una cadena que representara el titulo del objeto.

Tambien podemos configurar el color del fondo con el BackColor y el color de letra con la propiedad ForeColor. Asi como la animacion y el efecto de atenuacion con UseAnimation y UseFading

Una vez visto el cambio de imagen que le podemos dar a nuestro tooltip ahora toca de configurar su comportamiento.

Tenemos 3 propiedades que serán las que controles su comportamiento.

- AutoPopDelay: Controla la cantidad de tiempo que se mostrara el tooltip- InitialDelay: Controla la cantidad de tiempo que debe estar el ratón encima para que se muestre.- ReshowDelay: controla el tiempo que tardara en aparecer un tooltip después de que se cierre el anterior. Es decir, si se esta mostrando un ToolTip y te sitúas encima de otro objeto que también posee otro tooltip tardara el tiempo que se estipule en esta propiedad.

* Todas estas propiedades están en milisegundos.

Si quieres un calculo automático de estas propiedades solo tienes que meter el tiempo en AutomaticDelay la cantidad de tiempo en milisegundos y estas tres propiedades se calcularan siguiendo estos criterios 5 * N , N , N/5 siendo N la cantidad introducida en AutomaticDelay.

Page 6: Validaciones Vb Net

Bueno esto es mas o menos todo, ya veis que se pueden hacer varias cosas y no solo mostrar el tooltip! dale un poco de color a tu aplicaión!!

***************************************************

Combobox

**************************************************

EXPRESIONES REGULARES

Ejemplos de expresiones regularesCorreo electrónico

“^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(( [a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$”

Por ejemplo [email protected]

URL “^(ht|f)tp(s?)\:\/\/[0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*(:(0-9)*)*(\/?)( [a-zA-Z0-9\-\.\?\,\'\/\\\+&amp;%\$#_]*)?$”

Por ejemplo  http://www.frogx3.com

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 (EEUU) “^\d{1,2}\/\d{1,2}\/\d{2,4}$” Por ejemplo 01/01/2005Fecha (EEUU) “^\d{1,2}\/\d{1,2}\/\d{2,4}$” Por ejemplo 01/01/2005Moneda “^(-)?\d+(\.\d\d)?$” + o – cantidad, sin ningún

símbolo. Si tiene punto decimal, decimal, requiere 2 caracteres numéricos después del punto decimal

Númerotarjeta 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 tarjeta de crédito como Amex, Visa, MasterCard, Discover

Númerotelefono (Francia)

“^0[1-6]{1}(([0-9]{2}){4})|((\s[0-9]{2}){4})|((-[0-9]{2}){4})$”

.

Númerotelefono (España)

“^[0-9]{2,3}-? ?[0-9]{6,7}$” .

Númerotelefono (EEUU)

“^([1-9]{2}|[0-9][1-9]|[1-9][0-9])[0-9]{3}$” .

Código postal (Francia)

“^(F-)?((2[A|B])|[0-9]{2})[0-9]{3}$” .

Codigo postal  (Italia)

“^(V-|I-)?[0-9]{4}$” .

Código postal  (Alemania)

“\b((?:0[1-46-9]\d{3})|(?:[1-357-9]\d{4})|(?:[4][0-24-9]\d{3})|(?: [6][013-9]\d{3}))\b”

.

Código postal  (España)

“^([1-9]{2}|[0-9][1-9]|[1-9][0-9])[0-9]{3}$” .

Page 7: Validaciones Vb Net

Código postal  (EEUU)

“^(\d{5}-\d{4}|\d{5}|\d{9})$|^([a-zA-Z]\d[a-zA-Z] \d[a-zA-Z]\d)$”

.

Númeroseguro social (Francia)

“^((\d(\x20)\d{2}(\x20)\d{2}(\x20)\d{2}(\x20)\d{3}(\x20)\d{3} ((\x20)\d{2}|))|(\d\d{2}\d{2}\d{2}\d{3}\d{3}(\d{2}|)))$”

.

Númeroseguro social (EEUU)

“^\d{3}-\d{2}-\d{4}$” .

Tarjeta de identificación (Francia)

“^([0-9a-zA-Z]{12})$” Por ejemplo 001234567000

Tarjeta de identificación (Italia)

“^([0-9a-zA-Z]{12})$” Por ejemplo AA 1234567

Número pasaporte (Francia)

“^([a-zA-Z]{2})\s([0-9]{7})$” Por ejemplo 123456789

IBAN (Alemania) “DE\d{2}[ ]\d{4}[ ]\d{4}[ ]\d{4}[ ]\d{4}[ ]\d{2}|DE\d{20}” .IBAN (España) “ES\d{2}[ ]\d{4}[ ]\d{4}[ ]\d{4}[ ]\d{4}[ ]\d{4}|ES\d{22}” .Certificado de Identificación Fiscal (Italia)

“^[A-Za-z]{6}[0-9]{2}[A-Za-z]{1}[0-9]{2}[A-Za-z]{1}[0-9]{3} [A-Za-z]{1}$”

.

Certificado de Identificación Fiscal (España)

“^(X(-|\.)?0?\d{7}(-|\.)?[A-Z]|[A-Z](-|\.)?\d{7}(-|\.)? [0-9A-Z]|\d{8}(-|\.)?[A-Z])$”

***************************************************

Formatos de fecha

Public Function ChangeFormat(ByVal dtm As DateTime, ByVal format As String) As String

2     Return dtm.ToString(format)

3 End Function

Then When I use it I call it like so:

view source

print ?

1 TextBox1.Text = ChangeFormat(DateTime.Now,"MM/dd/yyyy")

……………

Page 8: Validaciones Vb Net

**********************************************************************

Como convertir números a letras

He visto muchas veces esta pregunta en los foros, si mal no recuerdo en el año 2000 alguién que no recuerdo su nombre envío el siguiente algoritmo para VB 6.0 para realizar dicha conversión.... ha sido unos de los mejores que he visto.. a continuación se los adjunto, espero que también les puedan servir.

Page 9: Validaciones Vb Net

 

Sirve tanto para VB 6.0, como para Visual Basic .NET

 

Public Function Num2Text(ByVal value As Double) As String    Select Case value        Case 0 : Num2Text = "CERO"        Case 1 : Num2Text = "UN"        Case 2 : Num2Text = "DOS"        Case 3 : Num2Text = "TRES"        Case 4 : Num2Text = "CUATRO"        Case 5 : Num2Text = "CINCO"        Case 6 : Num2Text = "SEIS"        Case 7 : Num2Text = "SIETE"        Case 8 : Num2Text = "OCHO"        Case 9 : Num2Text = "NUEVE"        Case 10 : Num2Text = "DIEZ"        Case 11 : Num2Text = "ONCE"        Case 12 : Num2Text = "DOCE"        Case 13 : Num2Text = "TRECE"        Case 14 : Num2Text = "CATORCE"        Case 15 : Num2Text = "QUINCE"        Case Is <; 20 : Num2Text = "DIECI" & Num2Text(value - 10)        Case 20 : Num2Text = "VEINTE"        Case Is <; 30 : Num2Text = "VEINTI" & Num2Text(value - 20)        Case 30 : Num2Text = "TREINTA"        Case 40 : Num2Text = "CUARENTA"        Case 50 : Num2Text = "CINCUENTA"        Case 60 : Num2Text = "SESENTA"        Case 70 : Num2Text = "SETENTA"        Case 80 : Num2Text = "OCHENTA"        Case 90 : Num2Text = "NOVENTA"        Case Is <; 100 : Num2Text = Num2Text(Int(value \ 10) * 10) & " Y " & Num2Text(value Mod 10)        Case 100 : Num2Text = "CIEN"        Case Is <; 200 : Num2Text = "CIENTO " & Num2Text(value - 100)        Case 200, 300, 400, 600, 800 : Num2Text = Num2Text(Int(value \ 100)) & "CIENTOS"        Case 500 : Num2Text = "QUINIENTOS"        Case 700 : Num2Text = "SETECIENTOS"        Case 900 : Num2Text = "NOVECIENTOS"        Case Is <; 1000 : Num2Text = Num2Text(Int(value \ 100) * 100) & " " & Num2Text(value Mod 100)        Case 1000 : Num2Text = "MIL"        Case Is <; 2000 : Num2Text = "MIL " & Num2Text(value Mod 1000)        Case Is <; 1000000 : Num2Text = Num2Text(Int(value \ 1000)) & " MIL"            If value Mod 1000 Then Num2Text = Num2Text & " " & Num2Text(value Mod 1000)        Case 1000000 : Num2Text = "UN MILLON"        Case Is <; 2000000 : Num2Text = "UN MILLON " & Num2Text(value Mod 1000000)        Case Is <; 1000000000000.0# : Num2Text = Num2Text(Int(value / 1000000)) & " MILLONES "            If (value - Int(value / 1000000) * 1000000) Then Num2Text = Num2Text & " " & Num2Text(value - Int(value / 1000000) * 1000000)        Case 1000000000000.0# : Num2Text = "UN BILLON"        Case Is <; 2000000000000.0# : Num2Text = "UN BILLON " & Num2Text(value - Int(value / 1000000000000.0#) * 1000000000000.0#)        Case Else : Num2Text = Num2Text(Int(value / 1000000000000.0#)) & " BILLONES"            If (value - Int(value / 1000000000000.0#) * 1000000000000.0#) Then Num2Text = Num2Text & "

Page 10: Validaciones Vb Net

" & Num2Text(value - Int(value / 1000000000000.0#) * 1000000000000.0#)    End Select

End Function

****************************************************************

¿Desea salir del programa?

Private Sub Form1_Closing(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing

' Utilizamos la cancelación del método Closing

If MessageBox.Show("¿Desea Salir?", "Sistema", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) = DialogResult.No Then

' Con el if, mandamos el messagebox y si la respuesta es un No, entonces cancela el método closing

e.Cancel = True

End If

End Sub

*****************************************************************************************

Page 11: Validaciones Vb Net

Datagrid. Seleccionar toda la fila al hacer click

Para poder seleccionar toda la fila de un grid al hacer click encima utilizaremos la siguiente función:

Private Sub DgUrls_MouseUp(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles DgUrls.MouseUpDim pt As System.Drawing.Pointpt = New Point(e.X, e.Y)

Dim hti As DataGrid.HitTestInfohti = DgUrls.HitTest(pt)If hti.Type = DataGrid.HitTestType.Cell ThenDgUrls.CurrentCell = New DataGridCell(hti.Row, hti.Column)DgUrls.Select(hti.Row)End IfEnd Sub

Donde DgUrls es el nombre del datagrid

*****************************************************************************

Solovb es un sitio que se caracteriza por sus ejemplos simples y sencillos. Hoy un ejemplo del uso de TabControl.

En más de una oportunidad tuve la necesidad de seleccionar mediante código que pagina (TabPage) del control debería ser la que se mostrara, la solución es sencilla pero quizas la estes necesitando en este momento y aquí te la dejo.

Primero necesitaremos un formulario windows, un TabControl y algunos botones dispuestos de forma similar a lo que se ve en la siguiente imagen:

Page 12: Validaciones Vb Net

Y ahora en el evento click de cada botón debemos ingresar el siguiente codigo

view source

print ? 01.Private Sub btnTab1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnTab1.Click02.    TabControl1.SelectedIndex = 003.End Sub04. 05.Private Sub btnTab2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnTab2.Click06.    TabControl1.SelectedIndex = 107.End Sub08. 09.Private Sub btnTab3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnTab3.Click10.    TabControl1.SelectedIndex = 211.End Sub12. 13.Private Sub btnTab4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnTab4.Click14.    TabControl1.SelectedIndex = 315.End Sub

Y eso es todo, solo queda ejecutar, probar e implementar donde quieran. Espero que les sirva.

Al ejecutar se verá mas o menos así:

Page 13: Validaciones Vb Net

*************************************************************

Hoy quiero comentarle algunas cositas referentes al trabajo con fechas, esas cosas que uno dice… “Pero eso todo el mundo lo sabe…”, pero como este sitio no está dedicado a expertos sino a ayudar a quienes se inician en este mundo de la programación en visual basic .net, me parece mas que apropiado hablar sobre fechas.

Antes de comenzar acá les dejo algunas definiciones que sería bueno conocer:

DateSerial

Devuelve un valor Date que representa un año, mes y día específicos, con la información de la hora establecida en medianoche (00:00:00).

Datetime.Now

Obtiene un objeto DateTime que se establece en la fecha y hora actual de este equipo, expresada como hora local.

DateAdd

Devuelve un valor de tipo Date que contiene un valor de fecha y hora al que se ha agregado un intervalo de tiempo especificado.

Bueno, sin más rodeos pasemos a los ejemplos. En esta oportunidad de trata de un formulario con una serie de botones y cajas de texto que nos van a informar distintas fecha como por ejemplo, el último día del mes actual o el primer día hábil de un mes, etc. Es muy sencillo y el ejemplo creo que es lo suficientemente claro por lo que no voy a explicarlo. Simplemente presten atención al código y podrán encontrar respuesta a muchas de las dudas que se generan al trabajar con fechas.

Este es el formulario que usaremos para el ejemplo:

Page 14: Validaciones Vb Net

y el código es el siguiente:

view source

print ? 01.Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click02.    'Fecha Actual03.    MsgBox(Now.Date, MsgBoxStyle.OkOnly, "Fecha Actual")04.End Sub05. 06.Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click07.    'Fecha y Hora Actual08.    MsgBox(Now(), MsgBoxStyle.OkOnly, "Fecha y Hora Actual")09.End Sub10. 11.Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click12.    'Primer Día del Mes13.    MsgBox(DateSerial(Now.Year, Now.Month, 1), MsgBoxStyle.OkOnly, "Primer Día del Mes")14.End Sub15. 16.Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click17.    'Ultimo día del Mes18.    Dim fecha1 As Date = DateAdd(DateInterval.Month, 1, Now.Date)19.    MsgBox(DateAdd(DateInterval.Day, -1, DateSerial(fecha1.Year, fecha1.Month, 1)), MsgBoxStyle.OkOnly, "Ultimo día del Mes")20.End Sub21. 22.Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click23.    'Primer Día Hábil24.    Dim primerDiaHabil As Date = DateSerial(Now.Year, Now.Month, 1)

Page 15: Validaciones Vb Net

25.    Select Case primerDiaHabil.Date.DayOfWeek26.        Case 1 'Domingo27.            primerDiaHabil = DateAdd(DateInterval.Day, 1, primerDiaHabil)28.        Case 6 'Sabado29.            primerDiaHabil = DateAdd(DateInterval.Day, 2, primerDiaHabil)30.        Case Else 'De lunes a Viernes31.            ' no hace nada32.    End Select33.    MsgBox(primerDiaHabil, MsgBoxStyle.OkOnly, "Primer Día Hábil")34.End Sub35. 36.Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click37.    'Sumar n Dias a Hoy38.    MsgBox(DateAdd(DateInterval.Day, CType(TextBox1.Text, Integer), Now.Date), MsgBoxStyle.OkOnly, "Sumar n Dias a Hoy")39.End Sub40. 41.Private Sub Button7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button7.Click42.    'Sumar n Meses a Hoy43.    MsgBox(DateAdd(DateInterval.Month, CType(TextBox2.Text, Integer), Now.Date), MsgBoxStyle.OkOnly, "Sumar n Meses a Hoy")44.End Sub

****************************************************

Quiero en esta oportunidad mostrarle un simple ejemplo de validación de datos ingresados en un datagridview. Este es un potente control, muy rico, y con muchísimas opciones de configuración.

Esta validación la haremos controlando el evento CellValidating del datagridview.

Para el ejemplo vamos a necesitar: un formulario y un datagridview. como se ve en la siguiente imagen:

Page 16: Validaciones Vb Net

En el evento load del formulario seteamos la propiedad Dock para que el control ocupe todo el formulario y creamos las columnas para el ingreso de los datos.

view source

print ?

1.DataGridView1.Dock = DockStyle.Fill

2. 

3.DataGridView1.Columns.Add("Nombre", "Nombre")

4.DataGridView1.Columns.Add("Apellido", "Apellido")

5.DataGridView1.Columns.Add("Cargo", "Cargo")

6.DataGridView1.Columns.Add("Categoria", "Categoría")

7.DataGridView1.Columns.Add("Sueldo", "Sueldo")

Ahora veamos la validación.

El evento que manejamos se llama CellValidating y con un select case vamos a validar los datos dependiendo de que columna es la que se está editando. Esto lo sabemos porque consultamos:

DataGridView1.Columns(e.ColumnIndex).Name

Cuando se ingresa un dato no válido debemos completar la propiedad ErrorTex del row que estamos editando con un mensaje de error, el cual aparecerá a la izquierda y lo leemos al colocar el puntero del mouse sobre el icono rojo que aparece.

veamos el codigo:

Page 17: Validaciones Vb Net

Private Sub DataGridView1_CellValidating(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellValidatingEventArgs) Handles DataGridView1.CellValidating

Select Case DataGridView1.Columns(e.ColumnIndex).Name 'El nombre quiero que sea obligatorio, por eso 'no lo dejo salir de la celda hasta que lo ingrese Case "Nombre" If String.IsNullOrEmpty(e.FormattedValue.ToString()) Then DataGridView1.Rows(e.RowIndex).ErrorText = _ "El Nombre no puede estar vacío" e.Cancel = True End If

Case "Apellido" 'lo mismo pasa con el apellido, es obligatorio If String.IsNullOrEmpty(e.FormattedValue.ToString()) Then DataGridView1.Rows(e.RowIndex).ErrorText = _ "El Apellido no puede estar vacío" e.Cancel = True End If Case "Cargo" 'En el caso del cargo, tengo cuatro opciones o vacío 'Si no concueda con ninguna no puede salir If e.FormattedValue.ToString() <> "Vendedor" And _ e.FormattedValue.ToString() <> "Encargado" And _ e.FormattedValue.ToString() <> "Supervisor" And _ e.FormattedValue.ToString() <> "Gerente" And _ e.FormattedValue.ToString() <> "" Then DataGridView1.Rows(e.RowIndex).ErrorText = _ "El dato no es válido: ingrese Vendedor o Encargado o Supervisor o Gerente" e.Cancel = True Else DataGridView1.Rows(e.RowIndex).ErrorText = String.Empty End If Case "Categoria" If e.FormattedValue.ToString() <> "A" And _ e.FormattedValue.ToString() <> "B" And _ e.FormattedValue.ToString() <> "C" And _ e.FormattedValue.ToString() <> "" Then DataGridView1.Rows(e.RowIndex).ErrorText = _ "Categorias permitidas: A, B o C" e.Cancel = True Else DataGridView1.Rows(e.RowIndex).ErrorText = String.Empty End If Case "Sueldo" 'se valida que sea un dato numérico If Not IsNumeric(e.FormattedValue.ToString()) And Not String.IsNullOrEmpty(e.FormattedValue.ToString()) Then DataGridView1.Rows(e.RowIndex).ErrorText = _ "Debe ingresar un valor numérico" e.Cancel = True Else DataGridView1.Rows(e.RowIndex).ErrorText = String.Empty End If End Select End Sub

Page 18: Validaciones Vb Net

***************************************************************************************************************

Como clonar un formulario windowsPublicado por Eliseo en Controles, Ejemplos, Tutoriales el 09 21st, 2010 | 14 respuestas

Muchas veces puede surgir la necesidad de hacer dos o mas formularios iguales o muy parecidos. Lo primero que se nos ocurre es ir al explorador de soluciones, seleccionar un formulario y hacer Control-C y Control-V para crear un nuevo formulario igual al primero, pero… para nuestra sorpresa aparecen unos cuantos errores que nos pueden hacer doler la cabeza. Para ayudar con este tema les presento un breve tutorial para saber como copiar (a mano) un formulario windows.

Primero abrimos (para el ejemplo) un nuevo proyecto con un formulario y le agregamos algunos controles y componentes diseñados como más nos guste… aquí un ejemplo:

Para el ejemplo es más que suficiente.

Luego vamos al explorador de soluciones y abrimos el código del designer. En nuestro caso Form1.designer.vb

Page 19: Validaciones Vb Net

  

En la ventana de código copiamos todo desde la subrutina InitializeComponent() hasta el final de la clase.

Page 20: Validaciones Vb Net

Ahora viene lo bueno… agregamos a nuestro proyecto un nuevo formulario y sin hacer nada mas abrimos el designer del nuevo formulario (en mi caso Form2.designer.vb) y reemplazamos el código, que en la siguiente imagen aparece seleccionado por el que anteriormente habíamos copiado.

Listo! al guardar y ver en vista de diseño tendremos un segundo formulario igualito al primero.

**************************************************************************************

Solo mayúsculas o minusculas

Page 21: Validaciones Vb Net

Es te código nos muestra como validar un texbox que acepte solo números, En Visual Basic .NET

Abra un nuevo proyecto, En Proyectos de Visual Basic seleccione la plantilla Aplicación para Windows.

En la Barra de Herramientas Seleccione Proyecto se le desplegara una lista  seleccione Agregar Módulo.

Agregue un Textbox al Formulario y no le cambie el Nombre, Déjelo como textbox1

 En el Modulo copie y pegue este código: '****************************************************************************************'* Código realizado por Angel Ruiz © (Venezolano)                                       *'**************************************************************************************** Function SoloNumeros(ByVal Keyascii As Short) As Short If InStr("1234567890", Chr(Keyascii)) = 0 Then SoloNumeros = 0 Else SoloNumeros = Keyascii End If Select Case Keyascii Case 8 SoloNumeros = Keyascii Case 13 SoloNumeros = Keyascii End Select End Function------------------------------------------------------------------------------------------------Ahora valla al Formulario y haga doble click sobre el:Después de la línea:Inherits System.Windows.Forms.Form Copie y pegue esta Declaración de VariablePublic KeyAscii As Short Ahora en el evento KeyPress del textBox1 copie y pegue este código Dim KeyAscii As Short = CShort(Asc(e.KeyChar)) keyascii = CShort(SoloNumeros(keyascii)) If keyascii = 0 Then e.Handled = True End If Quedaría de la siguiente forma: Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress Dim KeyAscii As Short = CShort(Asc(e.KeyChar)) keyascii = CShort(SoloNumeros(keyascii)) If keyascii = 0 Then e.Handled = True End IfEnd Sub Ahora ejecute su aplicación presionando F5.

Page 22: Validaciones Vb Net

****************************************************

1. Option Explicit On  2. Option Strict On  3. ' Espacio de nombres con clases para el manejo de expresiones regulares en .NET  4. Imports System.Text.RegularExpressions  5.   6. Public Class Form1  7.   8.     Private Function validar_Mail(ByVal sMail As String) As Boolean  9.         ' retorna true o false   10.         Return Regex.IsMatch(sMail, _  11.                 "^([\w-]+\.)*?[\w-]+@[\w-]+\.([\w-]+\.)*?[\w]+$")  12.     End Function  13.   14.     Private Sub Button1_Click(ByVal sender As System.Object, _  15.                               ByVal e As System.EventArgs) Handles Button1.Click  16.   17.         Dim sMail As String  18.   19.         sMail = InputBox("Escribir una dirección de email", "validación")  20.   21.         If Len(sMail) > 0 Then  22.             MsgBox(validar_Mail(sMail), MsgBoxStyle.Information)  23.         End If  24.     End Sub  25.   26.     Private Sub Form1_Load(ByVal sender As System.Object, _  27.                            ByVal e As System.EventArgs) _  28.                            Handles MyBase.Load  29.   30.         Button1.Text = " Validar mail "  31.   32.     End Sub  33. End Class  

*****************************************************

Fecha y Hora

Dim aDateString, aTimeString As StringDim aDate, aTime As DateaDateString = "February 12, 1969"aTimeString = "4:35:47 PM"' The following line of code sets aDate to a Date value.aDate = CDate(aDateString)' The following line of code sets aTime to Date value.aTime = CDate(aTimeString)

Validar que solo se ingresen letras en un textbox

Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress2.    If (Not Char.IsLetter(e.KeyChar) And e.KeyChar <> Microsoft.VisualBasic.ChrW(8)) Then3.        e.Handled = True4.    End If5.End Sub

El tipo char tiene varias propiedades que nos resultarían muy útiles a la hora de realizar validaciones. En el ejemplo vemos la propiedad .IsLetter… aca algunas más para recordar:

IsControl: Indica si el caracter unicode especificado se clasifica por categorias como un caracter de Control

Page 23: Validaciones Vb Net

IsDigit: Indica si el caracter unicode especificado se clasifica por categorias como un Dígito Decimal

IsNumber: Indica si el caracter unicode especificado se clasifica por categorias como un número

IsLetterOrDigit: Indica si el caracter unicode especificado se clasifica por categorias como un caracter alfabético o un Dígito Decimal

**************************************************************

Validar para ingresar solo números punto y guion

Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress If InStr(1, "0123456789.-" & Chr(8), e.KeyChar) = 0 Then e.KeyChar = "" End If End Sub

****************************************************************

'ESTA FUNCION LA UTILIZO PARA VALIDAR QUE NO SE INGRESE MAS DE UN 'PUNTO

Public Function buscarPunto(ByVal Cadena As Double) Dim i As Integer i = InStr(Cadena, ".") If i = 0 Then Return True Else Return False End Function

*****************************************************

Dim i As Integeri = InStr(txtPrecio.Text, ".")If i = 0 ThenIf InStr(1, "0123456789." & Chr(8), e.KeyChar) = 0 Thene.Handled = TrueEnd IfElseIf InStr(1, "0123456789" & Chr(8), e.KeyChar) = 0 Thene.Handled = TrueEnd IfEnd If

*******************************************************

Validar digitación de solo numeros

Public Function EsNumero(KeyAscii As Integer) As Boolean'Agrego el "." decimal (lo podes cambiar por "," si usas ese...'Y agrego el Ascii "8" que es la tecla BORRARSelect Case KeyAscii Case Asc("0"), Asc("1"), Asc("2"), Asc("3"), Asc("4"), Asc("5"), Asc("6") & _ Asc("7"), Asc("8"), Asc("9"), Asc("."), 8 EsNumero = True Case Else EsNumero = FalseEnd SelectEnd Function

Private Sub Text1_KeyPress(KeyAscii As Integer)If EsNumero(KeyAscii) = False Then MsgBox "Este es el mensaje de alerta", vbCritical KeyAscii = 0 'no escribo el caracterEnd IfEnd Sub

***************************************************************************

Page 24: Validaciones Vb Net

Validar correo electrónico

Validar correo electrónico

Normalmente se nos presenta el inconveniente de saber si la dirección de correo electrónico que están escribiendo nuestros usuarios esta en un formato valido o no, para este fin el proceso a realizar es, la validacion de las partes básicas de  un correo electrónico, tal como una @ un . (Punto) y un dominio consecuente

Para poder lograr esta validacion usaremos una expresión regular, en vb.net

Espacio de nombres:

Imports System.Text.RegularExpressions

Función

  Public Function validar_Mail(ByVal sMail As String) As Boolean        ' retorna true o false        Return Regex.IsMatch(sMail, _               "^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-                 9-]+)*(\.[a-z]{2,4})$")  End Function

Llamado a la funcion la cual puede ser desde el evente leave de el textbox deseado

 If validar_Mail(LCase(TxtMail.Text)) = False Then     MessageBox.Show("Dirección de correo electronico no valida,        el correo debe tener el formato: [email protected], " & _     " por favor seleccione un correo valido", "Validación de        correo electronico", MessageBoxButtons.OK,      MessageBoxIcon.Exclamation)     TxtMail.Focus()     TxtMail.SelectAll()End If

Page 25: Validaciones Vb Net

****************************************************************************************

convierte todo a mayúsculas en durante la ejecución, así:

Private Sub cbfamilia_Leave(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cbfamilia.LeaveDim a As Stringa = cbfamilia.Text.ToUpper 'convierte a mayúsculasIf cbfamilia.Items.Contains(a).ToString.ToUpper Then 'comparas mayúsculas con mayúsculasElseMsgBox("Elija una familia valida")cbfamilia.Focus()End IfEnd Sub

**********************************************************

Saber que tecla se ha pulsado en un textbox y otras cosillas (VB)

Este es el código para Visual Basic .NET

Private Sub txtNumero_KeyPress(ByVal sender As Object, _ ByVal e As System.Windows.Forms.KeyPressEventArgs) _ Handles txtNumero.KeyPress ' Si se pulsa la tecla Intro, pasar al siguiente If e.KeyChar = Convert.ToChar(Keys.Return) Then 'If e.KeyChar = ChrW(Keys.Return) Then e.Handled = True txtFecha.Focus() ElseIf e.KeyChar = "."c Then ' si se pulsa en el punto se convertirá en coma e.Handled = True SendKeys.Send(",") End IfEnd Sub'Private Sub txtFecha_KeyPress(ByVal sender As Object, _ ByVal e As System.Windows.Forms.KeyPressEventArgs) _ Handles txtFecha.KeyPress Select Case e.KeyChar Case Convert.ToChar(Keys.Return) 'ChrW(Keys.Return) e.Handled = True btnAdd.Focus() Case "."c, ","c, "-"c ' si se pulsa en estos caracteres, se convertirá en / e.Handled = True SendKeys.Send("/") End SelectEnd Sub'Private Sub txtNumero_Enter(ByVal sender As Object, _ ByVal e As System.EventArgs) _ Handles txtNumero.Enter, txtFecha.Enter ' Al recibir el foco, seleccionarlo todo CType(sender, TextBox).SelectAll()End Sub'Private Sub ListBox1_KeyDown(ByVal sender As Object, _ ByVal e As System.Windows.Forms.KeyEventArgs) _ Handles ListBox1.KeyDown ' Si se pulsa en Supr, borrar el elemento seleccionado If e.KeyCode = Keys.Delete Then

Page 26: Validaciones Vb Net

ListBox1.Items.Remove(ListBox1.SelectedItem) End IfEnd Sub'Private Sub btnAdd_Click(ByVal sender As Object, _ ByVal e As System.EventArgs) _ Handles btnAdd.Click ' Añadir el contenido de las cajas al listbox ListBox1.Items.Add(txtNumero.Text & ", " & txtFecha.Text) txtNumero.Focus()End Sub'Private Sub btnCerrar_Click(ByVal sender As Object, _ ByVal e As System.EventArgs) _ Handles btnCerrar.Click ' cerrar el formulario ' (si este es el único formulario, también se cerrará el ejecutable) Me.Close()End Sub

*********************************************************************

Page 27: Validaciones Vb Net