Blogia

VISUALNETMELINA

CONEXIONES A BASES DE DATOS

No cabe duda que uno de los mayores atractivos de Visual Basic .NET es su parte visual. Por parte de Microsoft se han cansado de decirnos que utilicemos esas herramientas pero lo cierto es que existe un gran numero de programadores que no son excesivamente amantes de los Wizard y prefieren trabajar con el código que dejar que los asistentes creen conexiones que en ocasiones tienen demasiados aspectos inútiles añadidos.

No obstante las herramientas visuales para crear conexiones con bases de datos en Visual Basic .NET existen y siempre es bueno saber cómo funcionan.

Podemos crear una conexión de bases de datos de forma visual de varias maneras, aunque llegaremos al mismo objetivo. Podríamos decir que son diferentes caminos para ir al mismo lugar.

 

 

Abriremos el cuadro de herramientas y seleccionaremos la pestaña Datos dentro de la pestaña podemos observar cuatro objetos conexión: OleDbConnection, SqlConnection, OdbcConnection y OracleConnection.

Para conectar con una base de datos SqlServer u Oracle usaremos los objetos conexión creados para ese cometido, para todas las demás bases usaremos los dos restantes.

Pincharemos sobre el objeto OleDbConnection y lo arrastraremos sobre el formulario donde lo soltaremos, podremos comprobar que se deposita debajo del formulario activo.

 

 

A continuación teniendo el objeto conexión seleccionado abriremos la ventana de propiedades y haremos clic sobre la propiedad ConnectionString, de nuevo haremos clic en la fecha que nos muestra y seleccionaremos Nueva conexión, al seleccionar esta opción se mostrara el cuadro de dialogo de Propiedades de vínculos de datos.

En primer lugar seleccionamos el proveedor de la conexión, en este caso Microsoft Jet 4.0 OLE DB Provider ya que vamos a conectar con una base de datos Access.

Pulsaremos el botón Siguiente y pasaremos al apartado Conexión donde buscaremos y seleccionaremos la base de datos Access. Una vez seleccionada y aceptada la base de datos la conexión ya estará terminada, podremos entonces comprobar que se han producido ciertas modificaciones:

 

  • La propiedad ConnectionString del objeto conexión está completa, antes estaba en blanco.
  • Si abrimos el explorador de servidores (Ctrl+Alt+S) veremos que se ha creado una nueva conexión a la base de datos de Access que hemos seleccionado.

                           MYSQL

 

Siempre que sea posible, en Visual Basic .NET hay que evitar utilizar conexiones ODBC y utilizar en su lugar conexiones vía OLEDB. La conexión ODBC siempre irá más lenta debido a que se crea una capa mas entre la aplicación y la base de datos, pero también es cierto que no existen conexiones OLEDB para todas las bases de datos. Veamos un ejemplo de conexión, con ODBC, desde Visual Basic .NET y una base de datos MySql.

Antes de comenzar a trabajar debemos preparar nuestra maquina

. En primer lugar descargaremos de la Web el driver necesario para la conexión, en este caso precisamos MyODBC-standard-3.51.9-win y procederemos a su instalación haciendo doble clic en el programa de instalación.

Después de la primera pantalla solo tenemos que aceptar los valores que indica y pulsar en siguiente y el driver se instalara sin problemas.

Se debe tener presente que para que este ejemplo funcione debemos tener instalado el gestor de base de datos MySql./p>  Una vez instalado el driver MyODBC iremos al panel de control y seleccionaremos el icono de herramientas administrativas. Dentro de esta carpeta encontraremos un enlace a Origen de datos (ODBC) sobre el que haremos doble clic. Pulsaremos sobre la pestaña DNS de sistema y pulsaremos el botón Agregar.

 

Seleccionaremos el driver que nos interesa como podemos ver en la imagen, y pulsaremos el botón de Finalizar./p>

Al pulsar Finalizar se mostrará el formulario que aparece en la siguiente imagen.

CONEXIONES

En este formulario deberemos llenar los cuadros de texto. En:

  • Data Source Name: Pondremos el nombre que le queremos dar a esta conexión, a este DSN. P.e: Conexión Libros.
  • Database Name: Cambiaremos test por el nombre de nuestra base de datos. P.e: Libros.
  • Podemos pulsar sobre el botón Test Data Source para comprobar que la conexión es correcta.
  • Una vez hecho esto ya podemos pulsar sobre el botón OK para aceptar el nuevo DSN y cerrar el cuadro de diálogo.

A partir de este momento ya podemos trabajar con esta conexión. Abriremos un nuevo proyecto Windows y añadiremos un módulo al que dejaremos el nombre por defecto Module1y en el que incluiremos el siguiente código.

  • Module Module1
  • Public Conexion As System.Data.odbc.OdbcConnection ‘ variable publica que utilizaremos como ón única
  • Sub Main()
  • Try
  • Conexion = New System.Data.odbc.OdbcConnection(”STMT=;OPTION=3;DSN=Conexion Libros;UID=;SOCKET=;DESC=MySQL ODBC 3.51 Driver      DSN;DATABASE=Libros;SERVER=ITESS;PORT=3306″)
  • ‘Lo que hemos marcado en rojo es nuestra cadena de conexión. En ella podemos apreciar la
  • ‘DSN=Conexión Libros que es el DSN que hemos creado y DATABASE=Libros que el nombre de nuestra base de datos
  • ‘Abrimos la conexión para comprobar que funciona
  • Conexion.Open ()
  • cerramos la conexión
  • Conexion.Close()
  • ’si se produce algún error al abrir o cerrar la ón saltara al apartado del Casth
  • ‘Si todo va bien se mostrara el mensaje que confirma la conexión.
  • MsgBox(”Conexion con Base de Datos realizada”)
  • Catch e As Exception
  • MsgBox(e.ToString, MsgBoxStyle.Critical, “Information del Sistema”)
  • End Try
  • End Sub
  • End Module

A partir de este punto podremos llamar a la conexión siempre que queramos en cualquier formulario de nuestro proyecto.

Una vez realizada la conexión con la base de datos la utilizaremos para comunicarnos y trabajar con esa base de datos. Podemos realizar cuatro tipos de operaciones diferentes: Consultar, Modificar, Insertar y Eliminar datos. Las consultas a una base de datos son básicamente todas iguales solo varia el volumen de la respuesta. Ante una consulta así:

  1. Dim Sql as String
  2. Sql="Select Nombre From Clientes"

Es de esperar que el volumen de la respuesta sea bastante grande, es decir que la base de datos devuelva muchos registros. En cambio ante una consulta así­:

  1. Dim Sql as Strip Sql="Select Nombre From Clientes Where IdCliente=1"

Solo obtendremos un registro como respuesta, el nombre del cliente 1. Por lo tanto la forma de tratar ambas consultas la haremos de forma diferente para sacarle algo más de partido a las opciones que nos da Visual Basic.

Veremos en primer lugar el segundo escenario, donde la base de datos nos devolverá un solo registro. Dado que este tipo de consulta se puede repetir mucho dentro de un proyecto podrÃímos crear una Clase que nos sirviera para siempre y en cualquier tipo de proyecto. Se podrí­a incluir dentro de una dll o sencillamente copiar y pegar en otro proyecto.

Para desarrollar esta pequeña clase emplearemos diversos objetos, que pasamos a explicar:

 

  1. OleDbCommand: La conexión que usamos en este ejemplo es una conexión vi­a OleDb, por eso usamos este objeto. Si fuera una conexión ODBC utilizarí­amos OdbcCommand y si fuera una conexión Sql usarí­amos SqlCommand. El objeto OleDbCommand es el comando que nos permitirá pasar a la base de datos una sentencia SQL.
  2. OleDbCommand tiene una serie de métodos que ejecutan comandos en la base de datos, el que en este momento nos interesa es ExecuteScalar ya que es especialmente adecuado para una consulta que devuelve una única línea.

Nuestra pequeña clase quedará de esta manera:

  1. Public Class CBuscarValor ’es el nombre de la clase
  2. Public Shared Sub BuscarValor(ByVal Sql As String, ByVal Variable As TextBox)
  3. ’es el procedimiento compartido que utilizaremos para encontrar el valor que buscamos.
  4. ’a este procedimiento le pasamos dos parámetros. La correspondiente sentencia SQL y un
  5. ’objeto textbox donde recogeremos la respuesta del procedimiento. De la misma manera podríamos
  6. ’pasarle una variable si eso nos interesa mas.
  7. ’nos aseguramos que el textbox esta vacio
  8. Variable.Text = ""
  9. ’abrimos el gestor de errores.
  10. Try
  11. ’abrimos la conexión
  12. Conexion.Open()
  13. ’creamos el comando al que pasamos la sentencia SQL y le indicamos que conexión debe utilizar
  14. ’conexión que como vimos en el artículo Visual Basic: Conexión con bases de datos (2) hemos creado en un modulo aparte.
  15. ’Al final de la explicación mostraremos otra vez el código para que lo tengais más cómodo.
  16. Dim Olecmd As OleDbCommand = New OleDbCommand(Sql, Conexion)
  17. ’ejecutamos el comando en la base de datos y comprobamos que nos devuelve
  18. ’si devuelve un valor nulo no devolvemos nada
  19. If IsDBNull(Olecmd.ExecuteScalar()) Then
  20. Variable.Text = ""
  21. Else
  22. ’si devuelve un valor se lo pasamos al textbox
  23. Variable.Text = Olecmd.ExecuteScalar()
  24. End If
  25. Catch err As Exception
  26. ’en caso de error mostramos que ha sucedido
  27. MsgBox(err.ToString, MsgBoxStyle.Critical, "Información del Sistema")
  28. Finally
  29. ’y pase lo que pase cerramos la conexión
  30. Conexion.Close()
  31. End Try
  32. End Sub
  33. End Class

Veamos como funcionaria todo esto en un proyecto real. Abrimos un nuevo proyecto de Windows, con un solo formulario cuyo diseño será el siguiente:

 

Haremos doble clic en el botón y escribiremos el siguiente código:

  1. Imports System.Data.OleDb ’importamos el espacio con nombres
  2. Private Sub cmdAceptar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdAceptar.Click
  3. ’creo una cadena de conexión con la constante strProv que está en el module1 a la que concateno
  4. ’con & la dirección completa de la BD que voy a utilizar
  5. Conexion.ConnectionString = strProv % "Data Source=C:Pruebas.mdb"
  6. ’creo la sentencia SQL del valor que quiere recuperar.
  7. ’quiere el nombre del cliente numero 15 de mi tabla de clientes.
  8. Dim Sql As String
  9. Sql = "Select Cliente From Clientes Where IdCliente=" & 15
  10. ’ahora utilizamos nuestra clase. No es preciso crear una nueva instancia de clase
  11. ’del tipo: Dim Valor as New CBuscarValor, porque el procedimiento que contiene es
  12. ’publico y Shared por lo tanto podemos acceder a el directamente.
  13. CBuscarValor.BuscarValor(Sql, txtPrueba)
  14. ’Al pulsar el botón del formulario nos mostrara el nombre del cliente solicitado.
  15. End Sub
  16. End Class

 

El código del modulo donde esta la conexión es:

  1. Imports System.Data.OleDb ’importamos el espacio con nombres
  2. Module Module1
  3. Public Conexion As New System.Data.OleDb.OleDbConnection
  4. Public Const strProv = "Provider=Microsoft.Jet.OLEDB.4.0"
  5. End Module

 

 

 

 

 

VISUAL NET

VISUAL NET

Es un lenguaje de programación orientado a objetos que se puede considerar una evolución de Visual Basic implementada sobre el framework .NET. Su introducción resultó muy controvertida, ya que debido a cambios significativos en el lenguaje VB.NET no es compatible hacia atrás con Visual Basic, cosa que causó gran división en la comunidad de desarrolladores de Visual Basic.

La gran mayoría de programadores de VB.NET utilizan el entorno de programación Microsoft Visual Studio .Net en alguna de sus versiones (Visual Studio .NET, Visual Studio .NET 2003 o Visual Studio .NET 2005), aunque existen otras alternativas, como SharpDevelop (que además es libre).

NUEVOS CONTROLES DE REPORTE EN VISUAL STUDIO 2005

Introducción El tema de este artículo son los nuevos Controles para Reportes en Aplicaciones Windows. Con VS 2005 tenemos nuevos controles; uno de ellos, el ReportViewer, posee funcionalidades muy útiles para elaborar reportes profesionales, ricos en información y basados en Reporting Services. En este artículo veremos las dos formas que ofrece VS 2005 para visualizar un reporte con el control ReportViewer: creando el reporte en VS 2005, o bien usando un reporte de la web.

 

Modelos de Uso de Reportes Existen dos modelos a tener en cuenta al momento de presentar un reporte con el control ReportViewer: Server Mode y Local Mode.