Buscar en Google

Busca en Todo Vb-Net

Búsqueda personalizada

miércoles, 19 de junio de 2013

Exportar DataGridView a Microsoft Excel

Sencilla funcion para exportar un DataGridView a Microsoft excel

La presente función exporta el contenido de un datagridview a Excel, crear un archivo temporal y lo muestra al usuario, por lo tanto si no almacenas el documento en el entorno grafico de MS Excel, este no será recuperable

Antes debemos adicionar a nuestro proyecto las referencias necesarias (Interop.excel) dependiendo de la version instalada en tu computador.


Public Function GridAExcel(ByVal DGV As DataGridView) As Boolean

        'Creamos las variables

        Dim exApp As New Microsoft.Office.Interop.Excel.Application
        Dim exLibro As Microsoft.Office.Interop.Excel.Workbook
        Dim exHoja As Microsoft.Office.Interop.Excel.Worksheet

        Try

            exLibro = exApp.Workbooks.Add
            exHoja = exLibro.Worksheets.Add()

    ' ¿Cuantas columnas y cuantas filas?
            Dim NCol As Integer =
DGV.ColumnCount
            Dim NRow As Integer =
DGV.RowCount
    'recorremos todas las filas, y por cada fila todas las columnas
    'y vamos escribiendo.

          For i As Integer = 1 To NCol
            exHoja.Cells.Item(1, i)=
DGV.Columns(i-1).Name.ToString
          Next

          For Fila As Integer = 0 To NRow - 1
              For Col As Integer = 0 To NCol - 1
                exHoja.Cells.Item(Fila+2, Col+1)=

                DGV.Rows(Fila).Cells(Col).Value()
              Next

           Next

 
'Titulo en negrita, Alineado
            exHoja.Rows.Item(1).Font.Bold = 1
            exHoja.Rows.Item(1).HorizontalAlignment = 3
            exHoja.Columns.AutoFit()

'para visualizar el libro
            exApp.Application.Visible = True
            exHoja = Nothing
            exLibro = Nothing
            exApp = Nothing 



Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Critical, "Error al exportar a Excel")

    Return False
End Try
Return True
End Function


Luego basta con llamar la funcion anteriormente creada y adicionar como parametro el nombre de nuestro grid

GridAExcel(DtgridPacientes)

Y es todo...


miércoles, 5 de junio de 2013

Verificar si existe directorio, si no existe crearlo

Verificar si existe directorio, si no existe crearlo


El siguiente codigo, verifica si un directorio existe, si este no existe lo crea en el path seleccionado

Espacio de nombres necesario:
 
Imports System.IO


If Not Directory.Exists(VariableConPath) Then
   Directory.CreateDirectory(
VariableConPath)
End If



Aquí  un ejemplo con el directorio donde se ejecuta nuestra aplicacion y una carpeta dentro de esta

If Not Directory.Exists(Application.StartupPath & "\PDF") Then
   Directory.CreateDirectory(Application.StartupPath & "\PDF")
End If



jueves, 16 de mayo de 2013

Crear un teclado virtual(Virtual Keyboard)



Crear un teclado virtual(Virtual Keyboard) 


Con el auge de las nuevas tendencias a monitores y pantallas touch es necesario el desarrollo de apps que esten acorde a dicha tendencia.

 En esta ocacion veremos la forma de crear un teclado virtual adecuado a un monitor touch, el cual funcionara de manera independiente, lo que significa que podemos hacer la invocacion de nuestro teclado desde cualquier formulario de cualquier aplicacion donde se requiera, unicamente enviando el id de la ventana que lo invoca, eso para saber donde se enviara cada tecla pulsada.







Para invocar el teclado desde una aplicacion externa basta con

Identificamos cual es el proceso en ejecucion
Dim process As System.Diagnostics.Process = System.Diagnostics.Process.GetCurrentProcess

Adicionamos el valor a una variable
VariableParaKeyBoard = process.MainWindowHandle

Verificamos la existencia del ejecutable e iniciamos el proceso enviando la variable capturada anterioemnete como parametro
 If File.Exists("KB_.exe") Then
            Process.Start("KB_.exe", VariableParaKeyBoard)
        Else
            MessageBox.Show("No se ha encontrado: KB_.exe el proceso no puede continuar", "No se encontro ejecutable", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
        End If





Por cuestiones de tiempo unicamente colocare la descarga del proyecto.
Descargar Proyecto

lunes, 15 de octubre de 2012

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: nombre@dominio.com, " & _
     " por favor seleccione un correo valido", "Validación de   
     correo electronico", MessageBoxButtons.OK, 
     MessageBoxIcon.Exclamation)
     TxtMail.Focus()
     TxtMail.SelectAll()
End If



Saludos!
Y como siempre dudas o comentarios son bien recibidos 


viernes, 28 de septiembre de 2012

Uso de control TIMER


Uso de control TIMER 


En esta ocación veremos el funcionamiento del control TIMER o cronometro, el cual puede servirnos por ejemplo para la ejecución de alguna función recurrente, la cual podemos controlar y/o ejecutar en una cantidad de tiempo determinada


Que necesitamos
1- Un formulario WinForm
2- Adicionar el control Timer1 al formulario
3- Un Label para poder mostrar la cuenta regersiva





Timer1 

Vista del Label en tiempo de ejecución con la cuenta regresiva


Vamos al código
En el load del formulario colocamos la llamada para iniciar el timer, utilizando los pulsos del reloj de Windows 

llamamos la función TiempoEjecutar y adicionamos como parámetro la cantidad en segundos en cual se ejecutara


Public Class Form1
 Private TiempoRestante As Integer


Private Sub Form1_load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Click
 Call TiempoEjecutar(10)
End Sub




 Public Function TiempoEjecutar(ByVal Tiempo As Integer)
        TiempoEjecutar = ""
        TiempoRestante = Tiempo  ' 1 minutos=60 segundos 
        Timer1.Interval = 1000

        Call TimerOn(1000) ' Hechanos a andar el timer
    End Function






Public Sub TimerOn(ByRef Interval As Short)
        If Interval > 0 Then
            Timer1.Enabled = True
        Else
            Timer1.Enabled = False
        End If

    End Sub



Cuando el tiempo termina ejecutamos la función deseada.
Cada tick del reloj verificamos la cuenta regresiva.



    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        If TiempoRestante >= 0 Then
            LblEjecutar.Text = "Ejecutar en: " & TiempoRestante
            TiempoRestante = TiempoRestante - 1
        Else
            Timer1.Enabled = False
'Ejecuta tu función cuando termina el tiempo
            TiempoEjecutar(10)

        End If
    End Sub


Saludos!





jueves, 27 de septiembre de 2012

Listar impresores y marcar el predeterminado


Listar impresores y marcar el predeterminado

En este ejemplo veremos como listar las impresoras instaladas en tu OS y marcar la impresora definida como predeterminada, asi tambien se mostrará el uso del control listview para agregar iconos a cada item del control mencionado.

Para tal efecto es necesario agregar al proyecto el control llamado ImageList que sera el contenedor de los iconos que utilizaremos en el ListView
En teoría lo que se pretende es: Listar los impresores encontrados y añadir un icono en el ListView para representar cada uno de ellos.


Controles necesario

ImageList para añadir iconos

ListView1 donde se listarán los impresores


Una vez adicionados los controles adicionas las imagenes que estaran disponibles en el ImageList, basados en el indice de cada una se seleccionarán para adicionar a cada item del ListView




Ok. vamos al codigo

Espacio de nombre 

Imports System

private DFPrinter as string

 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

' Asocioamos el ImageList al ListView para obtener los iconos
 ListView1.StateImageList = ImageList1
 ImpresorasInstaladas()






Private Sub ImpresorasInstaladas()



        Dim pdoc As New PrintDocument
        Dim Impresoras As String

        ' Default printer      
        DFPrinter = pdoc.PrinterSettings.PrinterName
        ' recorre las impresoras instaladas  
        For Each Impresoras In PrinterSettings.InstalledPrinters
            ListView1.Items.Add(Impresoras.ToString)
        Next
       
        ListView1.Focus()

        For x As Integer = 0 To ListView1.Items.Count - 1
            If ListView1.Items(x).Text = DFPrinter Then
                ListView1.Items(x).StateImageIndex = 1 'Indice de icono
            Else
                ListView1.Items(x).StateImageIndex = 0 'Indice de icono
            End If
        Next



    End Sub



Resultado













Encriptar cadena de texto con MD5

En muchas ocaciones nos vemos en la necesidad de encriptar cadenas de texto, ya sea para realizar un Log-In en nuestra aplicacion o para ocultar algun contenido por x razon

a continuación colocaré una funcion sencilla para lograr este objetivo



Espacio de nombres (Imports)

Imports System.Security.Cryptography

llamado de función

Dim MiCadenaEncriptada as string = MD5EncryptPass("123")



 Public Sub MD5EncryptPass(ByVal StrPass As String)

        Dim md5 As MD5CryptoServiceProvider
        Dim bytValue() As Byte
        Dim bytHash() As Byte
        Dim strPassOutput As String
        Dim i As Integer
        strPassOutput = ""

        md5 = New MD5CryptoServiceProvider

        bytValue = System.Text.Encoding.UTF8.GetBytes(StrPass)

        bytHash = md5.ComputeHash(bytValue)
        md5.Clear()

        For i = 0 To bytHash.Length - 1
            strPassOutput &= bytHash(i).ToString("x").PadLeft(2, "0")
        Next

        PasConMD5 = strPassOutput

    End Sub



Resultado obtenido "202cb962ac59075b964b07152d234b70"


Saludos

miércoles, 21 de julio de 2010

Uso de crystal reports en VB.NET [Via ODBC]

Uso de crystal reports en VB.NET

Bueno... tomando en cuenta todos los problemas que puede llegar a dar el manejo de reportes, es viable apuntar que tanto CrystalRepots Como .Net hacen una gran pareja para el trabajo ordenado y confiable.

Iniciemos

1- Elaboro un reporte fuera de .NET [osea desde el mismo CR] , el cual lleva absolutamente todo lo que necesito osea que si lo ejecuto desde CR este dara los resultados deseados, el reporte puede haber sido creado partiendo de un procedimiento almacenado[SP] o directamente de un grupo de tablas o vistas.

Ahora lo que necesitamos es que .Net deploye el reporte previamente elaborado.

Para el ejemplo elabore un reporte el cual fue hecho a partir de un SP [procedimiento almacenado], el cual solicita tres parametros, por ende dichos parametros tengo que enviarlos desde .Net para que sean a su vez capturados por CR y los pueda procesar.

parametros solicitados por el reporte



OK. OK.

Ahora en VB.Net crearemos un nuevo proyecto y en el formulario de inicio [Form1] agregaremos un control CrystalReportViewer1, en la propiedad Dock le colocamos Fill



Espacios de nombre utilizados:

Imports CrystalDecisions.CrystalReports.Engine
Imports CrystalDecisions.Shared


En el evento load del Fom1 colocaremos el siguiente codigo.
' ---------------------------By CesarL--------------
' SETEANDO CONEXION PARA CR
Dim oConexInfo As ConnectionInfo
Dim oListaTablas As Tables
Dim oTabla As Table
Dim oTablaConexInfo As TableLogOnInfo
' instanciar objeto para guardar datos de conexión
oConexInfo = New ConnectionInfo()
oConexInfo.ServerName = "NombreServidor"
oConexInfo.DatabaseName = "NombreBaseDatosODBC"
oConexInfo.UserID = "Usuario"
oConexInfo.Password = "Password"

Dim rpt_id As New ReportDocument
' Comprobamos la existencia del reporte, si el reporte no existe abortamos si no continuamos
Dim Reporte As String = Application.StartupPath & "Reporte.rpt"
If Not IO.File.Exists(Reporte) Then
MessageBox.Show("No se encontro reporte:" & vbCrLf & _
Reporte, "Report Not Found", MessageBoxButtons.OK, MessageBoxIcon.Error)
Me.Close()
Exit Sub
End If
'Una vez verificado el reporte procedemos a cargarlo
rpt_id.Load(Reporte)
oListaTablas = rpt_id.Database.Tables
For Each oTabla In oListaTablas
oTablaConexInfo = oTabla.LogOnInfo
oTablaConexInfo.ConnectionInfo = oConexInfo
oTabla.ApplyLogOnInfo(oTablaConexInfo)
'ENVIANDO VARIABLE A CR
rpt_id.SetParameterValue("@FechaInicio", "VariableFechaInicial")
rpt_id.SetParameterValue("@FechaFin", "VariableFechaFinal")
rpt_id.SetParameterValue("@Company", "VariableCompany")
Me.CrystalReportViewer1.ReportSource = rpt_id



Con esto el form1 cuando cargue hara lo siguiente

1- Seteara las variables de conexion
2- Comprobara la existencia del reporte
3- Si el reporte existe este creara una instancia de tipo CR y enviara los parametros de conexion y los parametros del reporte
4- Finalmente cargara el reporte.


Si quieres los fuentes, dudas o comentrios: cesarlopez1909@gmail.com