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

lunes, 12 de julio de 2010

Convertir .doc a .pdf

Convertir .doc a .pdf

Muchas veces nos hemos visto en la necesidad de realizar una conversion de documentos entre estos dos tipos de formatos, existen muchas herramientas en la red que hacen dicho proceso, sin enbargo como programadores nos vemos en la necesidad muchas veces de manipular dicha conversion por tal motivo se inicia este pequeño tutorial.

Comenzemos...

Usaremos VB .Net 2008
Office 2010 [Version actualmente en mi PC]


Primero crearemos un nuevo proyecto.

En el formulario de inicio [Form1] agregaremos los siguientes controles
1- Caja de texto [TxtSource]
2- Boton Examinar [BtnExaminar]
3- Boton Convertir a PDF [BtnConvertir]
4- Un label [Label1]

El formulario se vera asi:





A nuestro proyecto debemos agregar la referencia correspondiente a Word
para mi caso es Microsoft Word 14.0 Object Library
Si tienes otra version de offices debes agregar la libreria correspondiente a tu version.




Vamos al codigo...

En el evento click del boton examinar haremos lo siguiente, esto lo que hace es habrir un dialogo el cual nos permitira seleccionar un documento de Word y almacenara la ruta en el TxtSource


'Seleccionar Tipo de Fichero
Dim TipoFichero As String
TipoFichero = ""
TipoFichero = "Fichero MSWord |*.doc;*.docx"


Try
Dim oFD As New OpenFileDialog
With oFD
.Filter = TipoFichero
.FileName = TxtSource.Text
If .ShowDialog = DialogResult.OK Then
TxtSource.Text = .FileName
End If
End With

Catch oexcep As Exception
MessageBox.Show("Error: //Abriendo Documento// " & vbCrLf & _
"Use una ubicación diferente" & vbCrLf & _
ControlChars.CrLf & _
oexcep.Message & ControlChars.CrLf)

End Try


Luego en el evento click del boton ConvertirArchivo!!!

'----Pasando documento de Word a PDF ---------------------------------------
'----By CesarL

Dim wordApplication As ApplicationClass = New ApplicationClass()
Dim wordDocument As Document = Nothing

Dim paramSourceDocPath As String = TxtSource.Text

Dim paramExportFilePath As String = "C:\Test.pdf"
Dim paramExportFormat As WdExportFormat = _
WdExportFormat.wdExportFormatPDF
Dim paramOpenAfterExport As Boolean = False
Dim paramExportOptimizeFor As WdExportOptimizeFor = _
WdExportOptimizeFor.wdExportOptimizeForPrint
Dim paramExportRange As WdExportRange = _
WdExportRange.wdExportAllDocument
Dim paramStartPage As Int32 = 0
Dim paramEndPage As Int32 = 0
Dim paramExportItem As WdExportItem = _
WdExportItem.wdExportDocumentContent
Dim paramIncludeDocProps As Boolean = True
Dim paramKeepIRM As Boolean = True
Dim paramCreateBookmarks As WdExportCreateBookmarks = _
WdExportCreateBookmarks.wdExportCreateWordBookmarks
Dim paramDocStructureTags As Boolean = True
Dim paramBitmapMissingFonts As Boolean = True
Dim paramUseISO19005_1 As Boolean = False

Try
'Abrir documento basados en el que selecciono
wordDocument = wordApplication.Documents.Open(paramSourceDocPath)

' Exportar al formato deseado
If Not wordDocument Is Nothing Then
wordDocument.ExportAsFixedFormat(paramExportFilePath, _
paramExportFormat, paramOpenAfterExport, _
paramExportOptimizeFor, paramExportRange, paramStartPage, _
paramEndPage, paramExportItem, paramIncludeDocProps, _
paramKeepIRM, paramCreateBookmarks, _
paramDocStructureTags, paramBitmapMissingFonts, _
paramUseISO19005_1)
End If
Catch ex As Exception
'Aqui una exepcion no controlada
Finally
'cerrar documento
If Not wordDocument Is Nothing Then
wordDocument.Close(False)
wordDocument = Nothing
End If

'Quit a la aplicacion WinWord
If Not wordApplication Is Nothing Then
wordApplication.Quit()
wordApplication = Nothing
End If

GC.Collect()
GC.WaitForPendingFinalizers()
GC.Collect()
GC.WaitForPendingFinalizers()
End Try


' Fin de proceso -----------------------------------------------------------

Ahora solo ejecutamos nuestro proyecto, seleccionamos el archivo .doc ó .docx y presionamos el boton ConvertirArchivo!!! y se convertira el documento seleccionado y se almacenara en "C:\Test.pdf"


miércoles, 2 de junio de 2010

Embedir Imagen en e-mail [VB.Net]

Embedir Imagen en e-mail [VB.Net]

Buenoooooo, en esta ocacion mostrare como embedir un archivo de imagen en un correo electronico, no es simplemente atachar en el correo, si no que desplegar dicha imagen en el cuerpo del correo, como que se tratase de una edicion de OutLook.

Comencemos....

' Espacio de nombres a importar
Imports System.Net.Mail

Private Sub EnviandoMailAt()

'Funcion de envio de correo

Dim SMTP As New System.Net.Mail.SmtpClient 'Variable con la que se envia el correo
Dim CORREO As New System.Net.Mail.MailMessage
CORREO.From = New System.Net.Mail.MailAddress(Desdemail, "Correo Electronico", System.Text.Encoding.UTF8)


Dim htmlView As AlternateView = AlternateView.CreateAlternateViewFromString("Cuerpo del correo", Nothing, "text/html")
'Path de la imagen
Dim logo As New LinkedResource("IMG\LOGOLSAL.png")
logo.ContentId = "companylogo"
'Adicionando logo
htmlView.LinkedResources.Add(logo)

CORREO.To.Add("cliente@mail.com")
'Adicionando copia oculta
CORREO.Bcc.Add("cliente@mail.com")

CORREO.IsBodyHtml = True
CORREO.AlternateViews.Add(htmlView)

CORREO.Subject = "Confirmación de recarga - AutoMailer -"
SMTP.Host = "ServidorSMTP"
SMTP.Port = "Puerto"


Try
SMTP.Credentials = New System.Net.NetworkCredential("UsuarioSMTP", "PassSMTP")
SMTP.Send(CORREO)

Catch ex As System.Net.Mail.SmtpException
MessageBox.Show("Fallo el envio: " & ex.Message)
End Try

Obtener Fecha y Hora de un servidor MSSQL 2005

Obtener Fecha y Hora de un servidor MSSQL 2005
Muchas veces nos vemos en la obligacion de obtener la fecha de nuestro servidor, esto para efectos de auditoria de las transacciones realizadas por los usuarios.

Para eso aca pongo un ejemplo de como obtener dicho dato, ojala le sirva a alguien...


' Espacio de nombres a importar

Imports System.Data.SqlClient

' Funcion para realizar consulta


Public Function SetFechaHoraServer()
SetFechaHoraServer = ""
Try

Dim CmdSsql As New SqlCommand("SELECT YEAR(NOW()) AS AÑO, MONTH(NOW()) AS MES, DAY(NOW()) AS DIA, " & _
"HOUR(NOW('h')) AS HORA, MINUTE(NOW()) AS MINUTO, SECOND(NOW()) AS SEGUNDO", MyConex)
Dim Rd As SqlDataReader
MyConex.Open()
Rd = CmdSsql.ExecuteReader
Rd.Read()

If Rd.HasRows = False Then
MsgBox("No hay datos para formar hora actual del servidor")
MyConex.Close()
Exit Function
End If

FechaHoraServer = Rd(0) & "-" & Rd(1) & "-" & Rd(2) & " " & Rd(3) & ":" & Rd(4) & ":" & Rd(5)

MyConex.Close()

Catch oexcep As SqlException
MessageBox.Show("Error al conectar con BD o actualizar, Proceso: Consultando fecha del servidor" & _
ControlChars.CrLf & _
oexcep.Message & ControlChars.CrLf)
MyConex.Close()
End Try


End Function

Finalmente obtenemos la fecha en el formato deseado, segun el ejemplo el formato que obtendremos seria: "2010-06-02 04:10:35"


Dudas o comentarios a: cesarlopez1909@gmial.com


Aplicar MD5 a String [VB.Net]


El Proceso consta de obtener una cadena encriptada, partiendo de una cadena normal, este tipo de funciones son utiles normalmente para encriptar password´s en nuestros sistemas, pues con esto agregamos un poco mas de seguridad a los mismos.

espero a alguien le sirva....


' Hacer la llamada a la funcion y enviar el parametro solicitado

Call MD5EncryptPass(TxtPassword.Text)


' Espacio de nombres a importar

Imports System.Security.Cryptography

'Funcion de encriptado

Private Sub MD5EncryptPass(ByVal StrPass As String)
PasConMd5 = ""
Dim md5 As New MD5CryptoServiceProvider
Dim bytValue() As Byte
Dim bytHash() As Byte
Dim i As Integer

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

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

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

MsgBox(PasConMd5)

End Sub


'El resultado




Dudas o consultas a: cesarlopez1909@gmail.com

ComboBox Dependientes [VB.Net]


Añadir un dataset a un ComboBox [VB.Net]

Para el ejemplo se usaran datos extraidos desde una BD MySQL
La tematica del ejemplo es simple, siempre con la misma filosofia añadir dataset a un combo luego realizar indexacion para realizar una neva busqueda y alimentar un nuevo dataset el cual sera asignado a su vez a otro combo.


espacios de nombres a importar

Imports MySql.Data.MySqlClient

Declaraciones

Public AdapterCats As MySqlDataAdapter
Public AdapterSubCats As MySqlDataAdapter
Public CDatasetCats As DataSet
Public CDatasetSubCats As DataSet

' Primero en el evento load del formulario hacemos el llenado del Combo categorias

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

Try

AdapterCats = New MySqlDataAdapter("SELECT CATEGORIA, NOMBRE FROM.CATEGORIA", MyConex)

CDatasetCats = New DataSet()
MyConex.Open()
AdapterCats.Fill(CDatasetCats, "CATS")
MyConex.Close()

CmbCategoria.DataSource = CDatasetCats.Tables("CATS")
CmbCategoria.DisplayMember = CDatasetCats.Tables("CATS").Columns("NOMBRE").ToString
CmbCategoria.ValueMember = CDatasetCats.Tables("CATS").Columns("CATEGORIA").ToString


Catch oexcep As MySqlException
MessageBox.Show("Error al conectar con BD o actualizar, Proceso: Consultando datos " & _
ControlChars.CrLf & _
oexcep.Message & ControlChars.CrLf)
MyConex.Close()
End Try

End Sub



Luego en el evento de cambio de indice del combo hacemos el llenado del la subcategorias, recordemos que una categoria puede tener 'n' subcategorias


Private Sub CmbCategoria_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CmbCategoria.SelectedIndexChanged
Dim CatBuscar As String
CatBuscar = CDatasetCats.Tables("CATS").Rows(CmbCategoria.SelectedIndex)("CATEGORIA")
Try

AdapterSubCats = New MySqlDataAdapter("SELECT SUBCAT, NOMBRE FROM " & BaseDatos & ".SUBCATEGORIA WHERE CATEGORIA = '" & CatBuscar & "'", MyConex)

CDatasetSubCats = New DataSet()
MyConex.Open()
AdapterSubCats.Fill(CDatasetSubCats, "SUBCATS")
MyConex.Close()


CmbSubcategoria.DataSource = CDatasetSubCats.Tables("SUBCATS")
CmbSubcategoria.DisplayMember = CDatasetSubCats.Tables("SUBCATS").Columns("NOMBRE").ToString
CmbSubcategoria.ValueMember = CDatasetSubCats.Tables("SUBCATS").Columns("SUBCAT").ToString

Catch oexcep As MySqlException
MessageBox.Show("Error al conectar con BD o actualizar, Proceso: Consultando datos " & _
ControlChars.CrLf & _
oexcep.Message & ControlChars.CrLf)
MyConex.Close()
End Try
End Sub




Esto ha sido todooooooo... dudas o comentarios a cesarlopez1909@gmail.com

miércoles, 17 de junio de 2009

Abrir una imagen con PAINT desde VB.Net

En esta ocacion aprenderemos a cargar imagenes con una aplicacion externa a la nuestra, la idea es hacer como una galeria de imagenes (thumbails) y abrirlas con un editor de imagenes, para el siguiente ejemplo solo se tomara una imajen como ejemplo.

Bueno Iniciemos


primero creamos un nuevo proyecto y le adicionamos un Boton y un PictureBox a este ultimo le agregaremos un recurso de una vista previa de la imagen que queremos mostrar, esto en la propiedad imagen del elemento

el formulario nos quedara algo como esto:





En el Load del formulario escribimos lo sigueinte

Dim bmp As Bitmap
bmp = Me.PictureBox1.Image
bmp.Save("C:\imagen.jpg")


-------
En el evento click del boton1
-------

Process.Start("C:\WINDOWS\system32\mspaint.exe", "C:\imagen.jpg")


Si queremos usar una aplicacion distinta solo cambiamos el path del el Process.Start


al precionar el boton nos dara este resultado






Saludos!!!

Ejecutar cmd desde Visual Basic.Net

Muchas veces nos hemos encontrado que para nuestras aplicaciones es necesario ejecutar x comando en Ms-Dos o su ambiente CMD, pues con la clase Process podemos hacerlo.

La clase Process y su sintaxis basica es asi:

Process.Start("notepad.exe")

Tambien podemos pasar parametros asi:

Process.Start("notepad.exe", "C:\miarchivo.txt")

Recordando que notepad.exe se encuentra en la ruta c:\Windows\ , por tanto no hay por que agregar ningun path para iniciar el proceso, de la misma forma si una aplicacion se encuentra, en el folder de nuestra aplicacion tambien podemos ejecutarla de la misma forma, pero si queremos ejecutar una aplicacion ajena tanto a windows como a nuestra aplicacion debemos especificar la ruta del *.exe

Process.Start("C:\....")

Ejecutando proceso (CMD.EXE) y corriendo una sentencia de linea de comandos


Dim Pross As Process = New Process
Console.WriteLine("Iniciando el proceso")
Console.Readline()
Pross .StartInfo.FileName = "cmd.exe"
Pross .StartInfo.Arguments = "/C instruccón /y"
Pross .StartInfo.WindowStyle = ProcessWindowStyle.Hidden
Pross.StartInfo.CreateNoWindow = True
Pross .Start()

Console.WriteLine("Fin del Proceso")
Console.Readline()


Saludos

viernes, 29 de mayo de 2009

Comparar dos Cadenas (String) en vb.net

Haciendo una aplicacion, la cual deberia tener un login de usuarios (como todo software), me vi en la necesidad de compara dos passwords para poder insertarlos en la base de datos, despues de un rato encontre la solución aca la pongo por si hay alguien esta con el mismo problema


Tipos Posibles de comparacion

String.Compare :
Compara los valores de dos cadenas. Devuelve un valor entero.

String.CompareOrdinal
Compara dos cadenas independientemente de la referencia cultural local. Devuelve un valor entero.

String.CompareTo
Compara el objeto de cadena actual con otra cadena. Devuelve un valor entero.

String.StartsWith
Determina si una cadena comienza con la cadena que se pasa. Devuelve un valor booleano.

String.EndsWith
Determina si una cadena termina con la cadena que se pasa. Devuelve un valor booleano.


Fuente


Sintaxis en Vb.Net

' CAPTURAMOS LAS VARIABLES

Pass1 = Me.TxtPass1.Text
Pass2 = Me.TxtPass2.Text

Dim Compare As Integer
Compare = Pass1.CompareTo(Pass2)


If Compare = 1 Then
MessageBox.Show("Password No Coinciden Verifiquelos e Intentelo de uevo" , & _
"Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
Exit Sub

End If

jueves, 28 de mayo de 2009

Como Conectar Vb.Net 2005 a MySql

Como Conectar Vb.Net a Mysql

Bueno dejeme contarles que hace unos dias me tope con la insertidumbre de conectar vb.net con MySql, pues lo necesitaba para crear una aplicación en la cual no necesitara una BD con licencia y con la admiracion que le tengo a MySql me parecio la mejor Opcion.

Bueno al mismo tiempo se añadira a este tutorial la creacion de ODBC para Mysql

Ok. comencemos

Que necesitamos

1- MySql 5 o superior
2- Mysql Odbc/Conector
3- MySql Drivers Conector/Net


1- Relizamos la instalacion de estos tres componentes en nuestro ordenador

2- creamos un nuevo proyecto en nuestro VB 2005 y lo llamamos pruebas



3- Renombramos el formulario de unicio se llamara Conectar.vb, adicionamos un boton con el nombre BtnConectar



4- Ahora debemos adicionar las referencias de MySql a nuestro proyecto



5- Importamos las tools necesarias para realizar la conexion

Imports MySql.Data.MySqlClient


6- Declaramos y creamos la cadena de conexion

Public myconex As MySqlConnection

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

Dim connStr As String

connStr = "Server=youserver;" & _
"Database=youbd;" & _
"Uid=youuser;" & _
"Pwd=youpass;" & _
"Connect Timeout=30;"

myconex = New MySqlConnection(connStr)

End Sub

7- Ahora realizamos la conexion mediante BtnConectar con este codigo en el evento click

Private Sub BtnConectar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnConectar.Click


Try

myconex.Open()
MessageBox.Show("Ahora estoy conectado a Mysql", "Confirmación", MessageBoxButtons.OK, MessageBoxIcon.Information)

myconex.Close()
MessageBox.Show("Ahora estoy desconectado de Mysql", "Confirmación", MessageBoxButtons.OK, MessageBoxIcon.Information)

' Si existe alguna excepcion al conectarse con el servidor capturamos el error y mostramos un mensage con el resultado

Catch oexcep As MySqlException
MessageBox.Show("Error al conectar con BD" & _
ControlChars.CrLf & _
oexcep.Message & ControlChars.CrLf)
myconex.Close()
Exit Sub End Try

End Sub


Resultados