lunes, 6 de septiembre de 2010

Visual Basic 2008 - Aplicacion de Consola

Vamos a realizar un pequeño ejemplo de como crear una aplicación de consola en VB .NET 9.0, las aplicaciones de consola tiene la caracteristica de presentar un entorno como el DOS, esta aplicacion al igual como las aplicaciones de Windows tienen toda las bondaes de .NET osea que puede emplear las librerias del Net FrameWork 3.5 ... para el ejemplo vamos a emplear algunos comandos basicos y tambien vamos a crear una funcion para luego ser llamada al momento de realizar unos calculos.
El ejemplo es el siguiente, vamos a simular la venta de unos articulos de ferreteria, el cual tiene una promocion y aplica las siguiente condiciones
  • Si la cantidad que compramos es mayor a 3 Unidades y menor a 6 Unidades, obtendra un 5% de Descuento.
  • Si la cantidad que compramos es mayor a 5 Unidades, obtendra un 7% de Descuento.

Bien ahora si nos ponemos manos a la obra ..., lo primero que tenemos que hacer es abrir el Visual Studio 2008. y vamos a crear Nuevo Proyecto
1)Al crear un nuevo proyecto nos muestra esta pantalla, tenemos que seleccionar Visual Basic y el tipo de proyecto Console Application, como se muestra en la figura.

2)vamos a tener el siguiente código, bueno tenemos un Modulo y el Procedimiento Main, dentro del Modulo puedo crear procedimientos y funciones , declarar variables etc ...

Module Module1
Sub Main()
End Sub
End Module


3)Ahora vamos a programar ... el código quedaria algo asi

3)Para ejecutar nuestra aplicación presionamos el boton F5, ingresamos el producto y presionamos ENTER hacemos el mismo procedimiento para el precio y cantidad, fijense que dependiendo de la cantidad ingresada se va calcular el descuento.


Nota :
El método ReadLine()
Este método se usa para recoger la información que el usuario introduce cuando la aplicación así lo requiera. Cuando invocamos al método Console.ReadLine() el sistema queda en espera hasta que el usuario pulsa la tecla Intro.
El método Read()
Este es otro método que permite capturar información que proviene del usuario. La diferencia con el anterior es que Read() no espera a que el usuario pulse intro para capturar el dato introducido, sino que lo hace tras la pulsación de cualquier tecla, capturando el valor de la tecla pulsada en código ASCII.

Crear un ODBC (Open DataBase Connectivity)

Si entramos a Wikipedia y buscamos ODBC vamos a encontrar el siguiente concepto.

"Open DataBase Connectivity (ODBC) es un estándar de acceso a Bases de datos desarrollado por Microsoft Corporation, el objetivo de ODBC es hacer posible el acceder a cualquier dato desde cualquier aplicación, sin importar qué Sistema Gestor de Bases de Datos (DBMS por sus siglas en inglés) almacene los datos, ODBC logra esto al insertar una capa intermedia llamada manejador de Bases de Datos, entre la aplicación y el DBMS, el propósito de esta capa es traducir las consultas de datos de la aplicación en comandos que el DBMS entienda. Para que esto funcione tanto la aplicación como el DBMS deben ser compatibles con ODBC, esto es que la aplicación debe ser capaz de producir comandos ODBC y el DBMS debe ser capaz de responder a ellos. Desde la versión 2.0 el estandar soporta SAG y SQL."

Cuando creamos una aplicacion con acceso a BD (Base de Datos) lo primero que pensamos es si el lenguaje de programacion que estamos empleando tiene las librerias necesarias para acceder a la BD de forma directa, como es el caso de VB 6.0 y .NET para conectarnos al SQL SERVER no necesita crear un ODBC ya que de forma directa lo podemos hacer pero que pasa si no es SQL SERVER la BD que queremos acceder, sino MySQL, DB/2, Postgres ... etc son motores de BD que necesariamente se tiene que crear un ODBC para que nuestra aplicacion pueda conectarse y asi de esta manera poder manupular la data (SELECT ,UPDATE ,INSERT ,DELETE).
recuerdo que una vez creamos una modulo en VB 6.0 que permitia conectar a una BD Postgress y que esta misma aplicación a la vez se conectaba tambien al SQL SERVER para el segundo caso la conexion lo manejaba de forma directa en cambio para conectarme al Postgress tenia que crear mi OBDC. Bueno con este preambulo, ahora vamos a ver como crear un ODBC en Windows 2008, los pasos son los mismos para Windows Vista, XP y 7, manos a la obra.
1)Abrimos el Panel de Control


2)Hacemos Doble Clic en el siguiente icono Herramientas Administrativas


3)Ubicamos la opcion Origenes de datos ODBC y hacemos doble Clic

4)Para crear nuetro ODBC ahcemos Clic en Añadir

5)En este paso seleccionamos del Controlador de la BD a la cual queremos realizar la conexion (DB/2, MySQL, Postgress,..etc), para el ejemplo vamos a trabajar con el SQL SERVER.


6)vamos a dar un nombre a nuestra conexion ODBC dsnPrueba y especificamos el nombre o IP del servidor

7)Vamos a trabajar con la autentificacion del SQL SERVER, si trabajamos con la autentificacion Windows fijense que su usuario tenga acceso al Servidor de BD.

8)Si la autentificacion fue un exito, ahora tenemos que seleccionar la BD con el cual vamos a trabajar

9)Dejamos los valores por default y pasamos a la siguiente ventana

10)El ultimo paso es comprobar si hay conectividad a la BD


bueno eso es todo!!!!... , espero que les haya sido de utilidad .
Saludo2,

viernes, 3 de septiembre de 2010

Visual Basic - Uso de Reportes

Luego de realizar el diseño de los formularios y realizar la codificacion para que nuestros procesos se comporten de la manera como lo hemos planeado ... lo que sigue es crear los reportes a la medida de los usuarios, en el caso de visual basic como herramienta de reporte el mas usado sin lugar a dudas es el Crystal Reports ,en muchos foros siempre hay preguntas como esta ¿Como creo mis informes en vb? , Ayuda con Cristal Reports (CR) y VB ..., etc etc.
Voy a mostrarles como trabajar con el CR desde VB.

1)Bien lo primero que vamos a a hacer es crear una vista en el T-SQL en mi caso lo hice en SQL SERVER 2008, usando como BD Northwind.

2)Ahora vamos a crear un ODBC que se conecta a nuestro SQL SERVER a la BD Northwind, como nombre del DSN ponemos SQL_144

3)Ya creamos nuestro ODBC que nos va permitir trabajar con el CR, vamos a abrir el Crystal Reports 8

4)Vamos a crear un informe nuevo con la ayuda del asistente, seleccionamos la primera opción y aceptamos.

5)Seguimos los pasos del asistente, hacemos clic en Base de Datos, seleccionamos nuestro ODBC y buscamos la vista que creamos.

6)Seleccionamos todos los campos de la vista.

7)Agupamos por el Nro de la Orden

8)Como campo de resumen seleccionamos TOTAL para que nos haga la sumatoria del importe de todo los productos que contempla la orden.

9)Por ultimo ponemos un titulo a nuestro informe

10)Realizamos algunos retoques para que nos quede así nuestro informe

luego guardamos nuestro informe con el siguiente nombre Listado de Ordenes.rpt

11)Ahora nos toca diseñar y poner un poco de código a nuestro programa para poder llamar nuestro informe desde VB, lo primero que vamos a hacer es Referencia al componente CRYSTAL REPORTS

12)Diseñamos el siguiente formulario, como se muestra en la figura.

13)El código para el botón que llama al reporte, es el siguiente

Private Sub Command1_Click()

cr.WindowShowExportBtn = True

cr.WindowShowPrintBtn = True
cr.WindowShowPrintSetupBtn = True

'Vista Previa del Informe

cr.Destination = 0
cr.WindowTitle = "Informes con VB - Crystal Reports 8 /" & Now

'Especificamos la ubicacion del informe
cr.ReportFileName = "c:\Listado de Ordenes.rpt"

'Nos conectamos al ODBC que creamos
cr.Connect = "DSN=SQL_144;UID=sa;PWD=123456"


If ImpDestino = 0 Then cr.WindowState = crptMaximized

'Llamamos al informe
cr.Action = 1

End Sub

14)Bien llego el momento de ver los resultados, presionamos la tecla F5 , llamamos al reporte y listo!!!!!!!!!!!!!!! ...






fácil
no??? , bueno espero que les ayude en cuanto a como generar sus reportes desde VB usando el CR.

En un próximo post veremos como llamar un reporte de acuerdo a ciertos parámetros

miércoles, 1 de septiembre de 2010

VB - Uso de LIKE con SQL SERVER 2008

Seguramente en muchas oportunidades se nos han presentado los siguientes casos al momento de realizar nuestros formularios de consulta :

  • Consultar todo mis proveedores cuya razón social que inicien con el o los caracteres 'XYZ'
    Rpta:
    [RAZON_SOCIAL] LIKE 'XYZ%'

  • Consultar todo mis proveedores cuya razon social finalicen con el o los caracteres 'XYZ'
    Rpta:
    [RAZON_SOCIAL] LIKE '%XYZ'

  • Consultar todo mis proveedores cuya razon social contenga el o los caracteres 'XYZ'
    Rpta:
    [RAZON_SOCIAL] LIKE '%XYZ%'
Bueno en estos casos hemos echo uso de LIKE un operador relacional que se usa para realizar comparaciones exclusivamente de cadenas.
Tambien podemos hacer uso de un comodín [ ] el cual reemplaza cualquier carácter contenido en el conjunto especificado dentro de los corchetes.

Ejemplos:

LIKE '[AH]%'
Todo lo que comience por A ó H

LIKE '[A-H]%'
Todo lo que comience por cualquier letra comprendida entre la A y la H

LIKE '[A^N]%'
Todo lo que comience por A y la segunda letra no sea una N.

Bueno ahora vayamos a la práctica, vamos a hacer uso de este operador desde VB 6.0, manos a la obra.

1)Creamos nuestra Tabla lgProveedor con la siguiente estructura


2)Abrimos Microsoft Visual Basic 6.0, como vamos a trabajar con acceso a base de datos, lo primero que tenemos que hacer es hacer referencia a la biblioteca de ADO, como se muestra en la pantalla.



3)Añadimos el siguiente control MSFlexgrid

4)Ahora diseñamos nuestro formulario de consulta, como se muestra en la figura.

5)Ahora vamos a programar nuestro formulario de consulta
Primero declaramos nuestra cadena de conexión
Const strConexion As String = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;" & _
"Initial Catalog=BDDEMO;Data Source=."


Ahora programamos el botón que nos va permitir realizar la consulta.

Private Sub Command1_Click()
Dim rsProveedor As New ADODB.Recordset
Dim strNombre, strSQL, strLIKE As String

Dim iFilas As Integer 'Nro de Registros

Dim iColumnas As Integer 'Nro de Columnas


strNombre = TxtNombre.Text

strSQL = "SELECT 'COD'=prov_cod"
strSQL = strSQL & ",'NOMBRE'=prov_nom"
strSQL = strSQL & ",'DIRECCION'=prov_dir"
strSQL = strSQL & ",'TLF'=prov_tlf "
strSQL = strSQL & " FROM lgProveedor WHERE "

strLIKE = " prov_nom LIKE '" & strNombre & "%'"


rsProveedor.Open strSQL & strLIKE, strConexion, adOpenStatic, adLockPessimistic

iFilas = rsProveedor.RecordCount

iColumnas = rsProveedor.Fields.Count

Flex.Rows = iFilas + 1

Flex.Cols = iColumnas + 1

'Vamos a poner el encabezado a nuestra grilla

For i = 0 To iColumnas - 1
Flex.TextMatrix(0, i + 1) = rsProveedor.Fields(i).Name
Next i
'--------------------------------------------

'Fijamos el Ancho de las columnas

Flex.ColWidth(0) = 180: Flex.ColWidth(1) = 1000
Flex.ColWidth(2) = 3800: Flex.ColWidth(3) = 3500
Flex.ColWidth(4) = 800
'--------------------------------------------

i = 0


For i = 0 To iFilas - 1

For j = 1 To iColumnas

Flex.TextMatrix(i + 1, j) = rsProveedor.Fields(j - 1).Value

Next j


rsProveedor.MoveNext

Next i


End Sub


6)Una vez finalizado, llego el momento de poner en marcha nuestro formulario de consulta, presionamos la tecla F5 y listo!!!!!!!!!


Espero les haya sido util este post.