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.

martes, 31 de agosto de 2010

Como Crear una función en SQL SERVER 2008

Muchas veces a la hora de realizar consultas necesitamos que cierto campo de la tabla que estamos consultando se comporte de una manera determinada, por ejemplo que un campo c1 sea enviado como un parámetro de una función y esta me devuelva un valor. Para entender vamos a plantear que en el campo c1 guardo estos valores :
c1
---
1
2
3

... bueno a la hora de realizar la consulta deseo que en lugar de que me muestre 1, 2 o 3 me muestres "RUC", "DNI" , "CARNE DE EXTRANJERIA " ... bien entonces para este caso puedo hacer uso de una FUNCIÓN del SQL SERVER 2008 ,mandar el campo c1 y que me muestre el valor ,es algo sencillo lo sé ,que seguramente se puede realizar en la misma consulta empleando un WHEN u otro método pero para el ejemplo vamos a emplear una FUNCION ESCALAR, la sintaxis para crear este tipo de función es la siguiente :


CREATE FUNCTION <Scalar_Function_Name, sysname, FunctionName>

(

-- Add the parameters for the function here

<@Param1, sysname, @p1&gt; &lt;Data_Type_For_Param1, , int&gt;

)

RETURNS &lt;Function_Data_Type, ,int&gt;

AS

BEGIN

-- Declare the return variable here

DECLARE <@ResultVar, sysname, @Result&gt; &lt;Function_Data_Type, ,int&gt;


-- Add the T-SQL statements to compute the return value here

SELECT <@ResultVar, sysname, @Result&gt; = <@Param1, sysname, @p1&gt;


-- Return the result of the function

RETURN <@ResultVar, sysname, @Result&gt;


END

Bien ahora que ya conocemos la sintaxis y hemos comentado lo que pretendemos realizar empleando la función, vayamos a la practica, una vez abierto el SQL Server Management Studio, vamos a la siguiente opción :
1)



2)Hacemos Clic con el botón derecho en la opción seleccionada y seleccionamos la opción Nueva Funcion Escalar

3) Llego el momento de crear nuestra función, analicen el código

CREATE FUNCTION ufsGetTipodeDocumento

(@Id int)

RETURNS varchar(25)

AS

BEGIN

declare @strtd varchar(25)

if @Id=1

set @strtd='RUC'

if @Id=2

set @strtd='DNI'

if @Id=3

set @strtd='CARNE EXTRANJERIA'



RETURN @strtd


END


4)Una vez creada nuestra función ufsGetTipodeDocumento ahora vamos a hacer uso de ella



Sencillo no? ... bueno asi de sencillo es crear nuestras propias funciones en SQL SERVER 2008, en una proxima publicación vamos a seguir escribiendo acerca de las funciones porque realmente son muy utiles y te sacan de varios aprietos a la hora de desarrollar nuestros proyectos ... saludos

domingo, 29 de agosto de 2010

Introduccion F# - Tipos de Datos

"F# es un nuevo lenguaje de programación que ha sido introducido en la versión de Microsoft Visual Studio 2010, se ejecuta bajo el Framework del .NET al igual como los demás lenguajes de programcion en .net, F# maneja su propia sintaxis y procedimientos a la hora de programar, bueno la idea no es canzarlos escrbiendo líneas y líneas sobre este lenguaje sino mostrarles un ejemplo. Vamos a desarrollar un primer ejemplo para mostrar como trabaja los tipos de datos (int, float, string , etc ) F# … bueno manos a la obra."

1) Abra el Visual Studio 2010 del símbolo del sistema de Inicio | Todos los programas | Microsoft Visual Studio 2010 | Visual Studio Tools | Visual Studio 2010 del símbolo del sistema

2)
Para poder trabajar con F# en la consola, diguitamos lo siguiente fsi.exe y presionamos ENTER. Ahora tenemos la siguiente pantalla.



3) Vamos a escribir la siguiente instrucción y presionamos enter.

37;;

Resultado :

val it : int = 37

4)Podemos ver que F# resuelve el valor del tipo de dato ingresado y lo identifica llamándolo “it”, ahora vamos a probar si esto es verdad, diguitamos en la consola it y presionamos ENTER

Resultado:

val it : int = 37

Podemos darnos cuenta que al llamar al identificador nos mostro el mismo valor que la primera vez.

5)
Ahora vamos a añadir un decimal y vamos a ver como F# identifica el tipo de dato, entonces en la consola escribimos.

37.0;;

Resultado:

val it : float = 37.0

Notese que ahora F# le asigno el tipo de dato float, si queremos ejecutar su identificador , diguitamos it y presionamos ENTER, debe aparecer el mismo resultado.

Bueno eso es todo por el momento y como practica para ustedes , prueben ingresando datos de tipo cadena ...

sábado, 28 de agosto de 2010

Visual Basic 6.0 - Calculadora

En este nuestro primer post vamos a hacer uso de un lenguaje de programación muy conocido y querido seguramente por muchos programadores en las que me incluyo, estoy haciendo referencia a Visual Basic 5.0 y 6.0, bueno vamos a empezar con nuestro primer ejercicio.
  1. Ingresamos al programa, vamos a Inicio-Programas-Microsoft Visual Studio-Microsoft Visual Basic 6.0
  2. Seleccionamos un nuevo proyecto EXE estandar

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

  4. Bien ahora llego el momento de programar nuestra calculadora, primero programamos el evento Load del formulario

    Private Sub Form_Load()
    'Cargamos la lista
    'con los operadores matemáticos
    With Combo1

    .AddItem "SUMA", 0

    .AddItem "RESTA", 1
    .AddItem "MULTIPLICACION", 2
    .AddItem "DIVISION", 3
    End With
    End Sub
  5. Ahora programamos el boton Calcular en el evento Click

    Private Sub Command1_Click()
    'Variable para almacenar el tipo de operacion
    'seleccionado para realizar el calculo
    Dim Operacion As Integer
    Operacion = Combo1.ListIndex

    'Declaramos dos variables para almacenar los valores
    'ingresados y luego realizar la operacion matematica
    Dim n1, n2 As Integer
    n1 = CInt(Text1.Text)
    n2 = CInt(Text2.Text)

    'Evaluamos el tipo de operacion
    'que vamos a realizar

    Select Case Operacion
    Case 0 'SUMA
    Label1.Caption = CStr(n1 + n2)
    Case 1 'RESTA
    Label1.Caption = CStr(n1 - n2)
    Case 2 'MULTIPLICACION
    Label1.Caption = CStr(n1 * n2)
    Case 3 'DIVISION
    Label1.Caption = CStr(n1 / n2)
    End Select

    End Sub

  6. Una vez finalizado la programacion de nuestra calculadora presionamos la tecla F5 y listo



    Bueno para ser nuestro primer post espero que les haya sido ultil este ejercicio, dejen sus comentarios y consultas nos encontramos en un nuevo para seguier posteando lo que mas nos gusta el mundo de la programacion y base de datos.