Saber si hay conexión a Internet

3

Escrito en Febrero 12, 2009 por Alex

En ocasiones necesitamos saber si estamos conectados a Internet para que nuestra aplicación pueda descargar actualizaciones o conectarse a algún sitio y así evitar errores.

Para esto vamos a hacer uso del espacio de nombres My que es la clase que se utiliza para realizar operaciones de red y de internet.

Utlizamos el método IsAvailable para saber si estamos conectados a la red y una vez realizada la prueba de red, hacemos un Ping a un sitio que sabemos que siempre estara activo como Google.

Aquí está el código completo:

'si está dentro de la red
        If My.Computer.Network.IsAvailable Then
            Try
                'hace ping a google
                If My.Computer.Network.Ping("google.com") Then
                    'y da respuesta
                    MsgBox("Está conectado a Internet")
                End If
            Catch ex As Exception
                'en caso de no obtener respuesta del ping
                'asume que no estamos conectados a internet
                MsgBox("No está conectado a Internet")
            End Try
        Else
            'en caso de no estar dentro de la red
            MsgBox("Esta fuera de una red")
        End If
    End Sub
Vote This Post DownVote This Post Up (-1 rating, 1 votes)
Loading ... Loading ...

Admitir letras o números en un Textbox

0

Escrito en Febrero 7, 2009 por Alex

La estructura Char nos permite determinar si un caracter pertenece a determinada categoría unicode, es decir, si un caracter es una letra, un número, si es mayúscula, si es minúscula, espacio en blanco etc.

Para lograr que un textbox admita solo letras, necesitamos codificar el evento KeyPress del control Textbox que es el evento que se dispara en el momento que se pulsa el teclado y utilizamos el método IsLetter de Char.

Private Sub TextBox1_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
        'si el caracter es Letra
        If Char.IsLetter(e.KeyChar) Then
            'acepta el cracter
            e.Handled = False
            'si es un caracter de control como Enter
        ElseIf Char.IsControl(e.KeyChar) Then
            e.Handled = False
            'si es un espacio en blanco
        ElseIf Char.IsSeparator(e.KeyChar) Then
            e.Handled = False
        Else
            ' de lo contario al poner e.handled en True
            'cancelamos la pulsación.
            e.Handled = True
        End If
    End Sub

Acerca del E.handled

Si asignamos a E.handled un valor verdadero, le estamos indicando a .Net que nosotros ya hemos manejado esta tecla y por lo tanto la ignora.

Para admitir números en vez de letras utilizamos la misma estructura solo que ahora vamos a cambiar el método IsLetter por IsDigit.

Si queremos cambiar un caracter tecleado por otro, por ejemplo: Si queremos que cada vez que el usuario tecleé la letra “a” se escriba la letra “A” (mayúscula) no podemos cambiar el valor de Keypress porque es de solo lectura, lo que tenemos que hacer es poner valor verdadero al Handled, y utilizar la clase SendKeys.

 If e.KeyChar = "a" Then
            e.Handled = True
            SendKeys.Send("A")
        End If

Y para pasar de minúsculas a mayúsculas todas las letras pulsadas en el control:

 If Char.IsLower(e.KeyChar) Then
            e.Handled = True
            SendKeys.Send(Char.ToUpper(e.KeyChar))
        End If
Vote This Post DownVote This Post Up (4 rating, 4 votes)
Loading ... Loading ...

Reordenar Items de ListView Con arrastrar y soltar

0

Escrito en Enero 12, 2009 por Alex

El control ListView de Visual Basic.Net no tiene ningún método que nos ayude a reordenar los Items que no sea de una manera alfabética con solo arrastrar y soltar un elemento.

Necesitamos insertar el ListView que en este ejemplo lleva en su propiedad Name o Nombre: List1, la propiedad View la ponemos en Details, le agregamos una columna con el nombre que deseen y en el evento Load del formulario le agregamos algunos Items de prueba:
Continar leyendo! »

Vote This Post DownVote This Post Up (2 rating, 2 votes)
Loading ... Loading ...

Almacenar PDF o DOC en MYSQL con VB.NET

8

Escrito en Enero 6, 2009 por Alex

Cual sería la manera correcta de almacenar archivos como imágenes y documentos para un programador?
Algunas técnicas consisten en guardar solo la ruta o el Path del archivo y depués solo decirle a la aplicación que lo abra, ya que almacenarlo en la base de datos, podría ocasionar que la BD se alente al procesar la información, es decir, afectaría el “performance”.
Pero a veces se necesita seguridad en la aplicación y la mejor opción no siempre es la misma, así que en lo posible, no se deberian de almacenar archivos en una BD a menos que sea necesario.

Aquí pongo el ejemplo de como almacenar un documento, que en este caso sería PDF pero que aplica igual para otro tipo de archivos.

Necesitamos insertar dos botones de comando, un Control OpenFileDialog, y un PDF Browser Control. Este control se agrega desde el menú “Elegir elementos” del cuadro de controles y se llama Adobe PDF Reader y esta en la ficha “Componentes COM”.

Omito la manera de hacer las referencias al conector Mysql y algunos comentarios de explicación porque ya están explicados en anteriores posts.

Imports System.Data
Imports MySql.Data.MySqlClient
Imports System.IO
 
Public Class Form1
    Dim RutaPDF As String
#Region "variables y objetos"
 
    Dim ConStr As String = "server=localhost;uid=miuser;password=mipass;database=mibase"
    Dim Sql As String = "Select pdf from archivo where id='1'"
    Dim Con As New MySqlConnection(ConStr)
    Dim Comando As New MySqlCommand(Sql, Con)
    Dim Dr As MySqlDataReader
 
    'variable de datos
    Dim bDatos() As Byte
    'variable de imagen
    Dim iImagen As File
#End Region
 
#Region "Funciones para tratar archivos PDF"
 
    'convertir PDF a Binario
    Public Function PDF_Bytes(ByVal Path As String) As Byte()
        Dim sPath As String
        sPath = Path
        Dim Ruta As New FileStream(sPath, FileMode.Open, FileAccess.Read)
        Dim Binario(CInt(Ruta.Length)) As Byte
        Ruta.Read(Binario, 0, CInt(Ruta.Length))
        Ruta.Close()
        Return Binario
    End Function
    'convertir binario a PDF
    Private Sub Bytes_PDF(ByVal Bin As Byte())
        Dim oFileStream As FileStream
        Dim pathTemporal As String = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) & "\Dato.pdf"
 
        If File.Exists(pathTemporal) Then File.Delete(pathTemporal)
        oFileStream = New FileStream(pathTemporal, FileMode.CreateNew)
        oFileStream.Write(Bin, 0, Bin.Length)
        oFileStream.Close()
        oFileStream = Nothing
        AR1.LoadFile(pathTemporal)
        If File.Exists(pathTemporal) Then File.Delete(pathTemporal)
    End Sub
 
    Public Function UpdateBD(ByVal Sql As String, ByVal Data() As Byte) As String
        Dim Comando As New MySqlCommand(Sql, Con)
        Comando.Parameters.AddWithValue("?archivo", Data)
 
        Try
            If Not Con Is Nothing Then Con.Close()
            Con.Open()
            Dim res As Integer = Comando.ExecuteNonQuery()
            Return res.ToString
 
        Catch ex As Exception
            Return ex.Message
        Finally
            Con.Close()
            Comando = Nothing
        End Try
    End Function
 
#End Region
 
    'Esto ocurre en la carga del formulario
    'y solo se ejecuta cuando ya existe un archivo en la BD
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'Si no hay conexión activa se establece conexión con la BD
        'siempre capturando errores con try
        Try
            If Not Con Is Nothing Then Con.Close()
            Con.Open()
 
            'Una vez establecida la conexión ejecutamos la Query
            'asignando el resultado al objeto MysqlDataReader
            Dr = Comando.ExecuteReader
 
            'Mientras este leyendo, cada resultado que por la Query
            ' no es mayor a uno
            While Dr.Read
                'lo guardamos en una variable de tipo array de bytes
                'y convertimos en byte el resultado por si tenemos
                'activado Option Strict en ON
                bDatos = CType(Dr("pdf"), Byte())
 
                'si la consulta no genera datos salimos del Sub
                If bDatos.Length = 0 Then Exit Sub
 
                'SI HAY DATOS
                'al ser datos binarios, los convertimos a PDF
                'con una funcion que hicimos llamada bytes_PDF
                'asignandolo a la variable de datos
                Bytes_PDF(bDatos)
 
            End While
 
            'en caso de error mostramos el mensaje
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
 
    End Sub
 
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        'utilizamos el OPenFileDialog para seleccionar PDFs
        'Establecemos titulo a mostrar
        Me.OpenFileDialog1.Title = "Seleccionar Documento"
        'aquí por ser PDF les recomiendo abrir por default la carpeta
        'Mis Documentos y utilizamos una variable de entorno de windows
        'Enviroment.SpecialFolder.MyDocuments apunta a Mis Documentos
        Me.OpenFileDialog1.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)
        'filtramos solo Archivos PDF 
        'siempre es recomendable filtrar para evitar errores al seleccionar archivos
        Me.OpenFileDialog1.Filter = "Archivos de imágen(*.pdf)|*.pdf"
        ' abrir el diálogo
        Me.OpenFileDialog1.ShowDialog()
    End Sub
 
    'AQUI UTILIZAMOS EL EVENTO FILE_OK
    'PARA SABER EN QUE MOMENTO YA SE SELECCIONO UNA IMAGEN
    Private Sub OpenFileDialog1_FileOk(ByVal sender As System.Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles OpenFileDialog1.FileOk
        'Asignar ruta y mostrar Documento
        RutaPDF = OpenFileDialog1.FileName
        AR1.LoadFile(RutaPDF)
    End Sub
 
    'Y EN ESTE EVENTO DEL BOTON GUARDAMOS LA IMAGEN EN LA BD
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Try
            'si se seleccionó archivo
            If OpenFileDialog1.FileName <> "" Then
                'variable para datos
                Dim PDF() As Byte
                'convertir PDF a binario
                'y guardar en variable
                PDF = PDF_Bytes(RutaPDF)
 
                'guardar la imagen en BD con parametros utilizando una funcion para guardar
                'llamada UpdateBD
                Dim res As String = UpdateBD("UPDATE archivo SET pdf=?archivo WHERE id='1'", PDF)
 
                'aqui comprobamos si se modifico algun campo
                If res = "1" Then
                    MsgBox("Archivo guardado")
                Else
                    MsgBox("Archivo no se guardó")
                End If
 
            End If
        Catch ex As Exception
        End Try
    End Sub
 
 
 
 
End Class

Un archivo muy grande superaría la capacidad del campo de Mysql y no se guardaría el archivo.

Nota: El campo LongBlob de Mysql debe existir con un dato aunque sea null ya que la sentencia usada no es INSERT sino UPDATE.

Vote This Post DownVote This Post Up (1 rating, 1 votes)
Loading ... Loading ...

Guardar imagen en Mysql con .Net

50

Escrito en Diciembre 26, 2008 por Alex

Para guardar una imagen en Mysql desde Visual Basic .Net que puede ser en su versión 2005 o 2008 necesitamos lo siguiente:

Que en la base de datos MySql esté definido un campo de tipo “longblob” Este tipo de campo nos permite guardar datos en formato binario, de tal manera que está pensado para guardar archivos de cualquier tipo, entre ellos imágenes sin importar el formato.

Continar leyendo! »

Vote This Post DownVote This Post Up (No Ratings Yet)
Loading ... Loading ...

Llenar ListView desde base de datos

36

Escrito en Diciembre 16, 2008 por Alex

En este ejemplo como siempre lo explico utilizando la base de datos Mysql porque todos los ejemplos por la web son ya con Sql server.

Necesitamos un proyecto con un Windows Form y un ListView.

Para no complicarnos mucho vamos a poner el código desde el evento Load del formulario.

Así queda el código:

Imports System.Data
Imports MySql.Data.MySqlClient
 
Public Class Form1
    Dim Constr As String = "server=localhost;uid=user;password=mipass;database=mibase"
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
 
        Dim Con As New MySqlConnection(Constr)
        Dim Cmd As New MySqlCommand("select * from articulos", Con)
        Dim Dr As MySqlDataReader
 
        Try
            ListView1.Items.Clear()
 
            Con.Open()
            Dr = Cmd.ExecuteReader
            Dim item As New ListViewItem
            While Dr.Read()
                item = ListView1.Items.Add(CStr(Dr("upc")))
                item.SubItems.Add(CStr(Dr("descripcion")))
                item.SubItems.Add(CStr(Dr("precio")))
            End While
        Catch ex As MySqlException
            MsgBox(ex.Message)
 
        Finally
            Con.Close()
            Cmd = Nothing
            Dr = Nothing
        End Try
    End Sub
End Class

Vote This Post DownVote This Post Up (1 rating, 1 votes)
Loading ... Loading ...