Vous êtes sur la page 1sur 49

Visual Basic .

Net 2003

Formularios MDI y Controles Avanzados

Joel Martin Chuco Marrufo


1
Visual Basic .Net 2003

CREACIN DE MEN

Control MainMenu

En la versin anterior de visual Basic, se llamaba Men, pero ahora se llama


MainMenu, viene a hacer el mismo control pero con otro nombre, a diferencia del
control anterior en VB 6.0, este no utiliza un editor de mens, solo nos basta
escribir en el men y darle entrar cada vez que ya queremos que grabe ese men,
como en la figura que esta a continuacin.

Como se dan cuenta, este control se ubica en la parte inferior como todos
los controles que son objetos de coleccin, si se preguntan como uno hace para
ponerle teclas calientes a los mens es bien sencillo, para eso nos dirigiremos a la
ventana de propiedades del men que hemos ingresados y seleccionaremos en la
opcin ShortCut las teclas que queremos que al presionarse se ejecute las
instrucciones del men que queremos, para que me entiendan un poco mas, vean
la figura y lean esto de nuevo.

Joel Martin Chuco Marrufo


2
Visual Basic .Net 2003

Aclarado como crear mens, solo me falta decirles que para poner una lnea
en un men se hace lo mismo que en la versin anterior, sea ponerle un en la
parte de texto del men.

Control ToolBar

Este control tambin no ha cambiado mucho en su utilizacin, necesita un


control ImageList para almacenar las imgenes que se van a mostrar en los
botones, lo nico que cambia es un poco en su codificacin pero eso ya lo veremos
con un ejemplo por no decir que lo veremos en la aplicacin 44, como ya les dije
este, tambin es un control de coleccin as que tambin tendr un editor de
colecciones, veamos la ventana de propiedades de este control para que me
entiendan.

ImageList.- En esta propiedad seleccionaremos de qu contenedor (Control de


coleccin) utilizaremos las imgenes para los botones.

Buttons.- En esta propiedad empezaremos a insertar los botones que queramos que
se muestre en nuestro toolbar.

Joel Martin Chuco Marrufo


3
Visual Basic .Net 2003

Una vez de dar clic en la propiedad Buttons del control Toolbar nos
aparecer el editor de men, que es la siguiente figura.

Joel Martin Chuco Marrufo


4
Visual Basic .Net 2003

Las propiedades mas utilizadas en el editor de los botones son:

Name.- Si queremos ponerle un nombre especial o identificativo al botn.

ImageIndex.- Aqu seleccionaremos el ndice o la imagen que queramos que se


muestre en el botn, estas imgenes son las que estn en el control ImageList.

ToolTipText.- Aqu escribiremos el texto que se va a mostrar cuando ubicaremos el


Mouse por el botn.

Formulario MDI

A diferencia de la versin anterior, aqu nos agrega un formulario MDI, solo


se cambia una propiedad del formulario.

Como ya saben se cambia el valor de False a True, y para especificar un


formulario como hijo se tendr que digitar el siguiente cdigo.

Dim Variable As New NombreDelFormularioAMostrar


Variable.MdiParent = Me
Variable.Show()

Joel Martin Chuco Marrufo


5
Visual Basic .Net 2003

Ejemplo:

Dim NuevoRegistro As New frmregistro()


NuevoRegistro.MdiParent = Me
NuevoRegistro.Show()

Y nos mostrar el formulario como Hijo, as de sencillo no lo creen?.

Ahora veremos una aplicacin que vamos a utilizar estos dos controles y
otro control anterior que ya he explicado en la entrega anterior.

APLICACIN 42

En este formulario aprenderemos a utilizar los controles ya explicados,


primero aadiremos un MainMenu, un Toolbar, un ImageList,, un StatusBar, y por
ultimo cambiaremos la propiedad de IsMdiConteiner, de False a True. As que
comencemos.

Joel Martin Chuco Marrufo


6
Visual Basic .Net 2003

Paso 1.- Disear el Formulario, Ingresar los controles mencionados y editar


el men y el ToolBar como se muestra en la figura.

Paso 2.- Para este caso no cambiaremos ningn nombre a los controles, ya
que este formulario es puro diseo.

Paso 3.- No hay Codificacin.

Como ya vieron no es nada del otro mundo, ahora veremos otra aplicacin que
utilizaremos poca codificacin, ya que solo consta de dos formularios.

Joel Martin Chuco Marrufo


7
Visual Basic .Net 2003

APLICACIN 44

En este formulario tendremos dos formularios, uno que es el login que solo
nos permitir tener tres intentos de ingreso, y el otro ser el MDI, pero no tendr
ningn formulario hijo todava.

Formulario frmlogin

Paso 1.- Disear el formulario.


Paso 2.- Asignarles nombres a los controles

Control Name

TextBox1 txtusuario
TextBox2 txtcontrasea
Button1 btnok
Button2 btncancelar

Paso 3.- Codificacin.

Btncancelar (Evento Clic)

Me.Close()

Joel Martin Chuco Marrufo


8
Visual Basic .Net 2003

Btnok (Evento Clic)

Static Opcion As Integer


Dim Usuario, Contrasea As String
Dim Correcto As Boolean
Dim Formulario As New frmsistema()
Usuario = txtusuario.Text
Contrasea = txtcontrasea.Text
Opcion = Opcion + 1
Select Case Usuario
Case "joel"
If Contrasea = "150984" Then Correcto = True
REM Usuario sin restricciones
Case "GISELLE"
If Contrasea = "VALVERDE" Then Correcto = True
Formulario.Actualizar_Precios.Enabled = False
Formulario.Registros_ventas.Enabled = False
Formulario.Usuario.Visible = False
Case "Krizia"
If Contrasea = "Rupay" Then Correcto = True
Formulario.Copia_Seguridad.Enabled = False
Formulario.Internet.Enabled = False
Formulario.Ventas.Visible = False
Case Else
Correcto = False
End Select
If Correcto = True Then
Formulario.Show()
Me.Hide()
ElseIf Opcion = 3 Then
Me.Close()
Else
MsgBox("Usuario o Contrasea Incorrecta", MsgBoxStyle.Information,
"Seguridad")
txtusuario.Text = ""
txtcontrasea.Text = ""
txtusuario.Focus()
End If

Joel Martin Chuco Marrufo


9
Visual Basic .Net 2003

Formulario frmsistemas

Paso 1.- Disear el formulario, poner un Timer.

Primero, el men y el ToolBar.

El Menu:

Joel Martin Chuco Marrufo


10
Visual Basic .Net 2003

Paso 2.- No cambiaremos ningn nombre mas que el del men Salir,
pondremos de Name Salir.

Paso 3.- Codificacin.

frmsistemas (Evento Load)

StatusBar1.Panels(0).Text = Format(Now, "dd - MMM - yyyy")


StatusBar1.Panels(1).Text = Space(18) + StatusBar1.Panels(1).Text +
Space(18) + "Los Peruanos Si Podemos!"
Timer1.Interval = 100

frmsistemas (Evento Closed)

End

Timer1 (Evento Tick)

StatusBar1.Panels(2).Text = Format(Now, " hh:mm:ss tt")


StatusBar1.Panels(1).Text = Mid(StatusBar1.Panels(1).Text, 2) +
Microsoft.VisualBasic.Left(StatusBar1.Panels(1).Text, 1)

Salir (Evento clic)

If MsgBox("Desea Salir de la Aplicacin", MsgBoxStyle.Question.YesNo,


"Sistema") = MsgBoxResult.Yes Then
Me.Close()
End If

Joel Martin Chuco Marrufo


11
Visual Basic .Net 2003

ToolBar1 (Evento ButtonClick)

Dim Boton As Integer


Boton = ToolBar1.Buttons.IndexOf(e.Button)
Select Case Boton
Case 1
Shell("D:\WINDOWS\system32\calc.exe", AppWinStyle.NormalFocus)
Case 2
If MsgBox("Desea Salir de la Aplicacin", MsgBoxStyle.Question.YesNo,
"Sistema") = MsgBoxResult.Yes Then
Me.Close()
End If
End Select

Control ContextMenu

En la versin anterior de visual Basic, para mostrar un men contextual lo


hacamos mediante cdigo, pero con esta versin tambien se puede hacer as, pero
mas fcil es crendolo mediante el control ContextMenu que nos trae esta versin,
se edita de la misma forma que MainMenu, y para asignar en que ventana va a
funcionar este men contextual solo deberemos de indicarle en una propiedad del
formulario que a continuacin veremos.

En la propiedad ContextMenu del formulario, seleccionaremos que control de


men contextual queramos que nos muestre.

Joel Martin Chuco Marrufo


12
Visual Basic .Net 2003

Control OpenFileDialog

Este uno de los nuevos controles que se encuentra en esta nueva versin y
no te preocupes, que son fciles de usar, primero familiarcese con la imagen del
control, que es el siguiente.

Este control nos permite abrir mltiples tipos de archivos, ya sean de


imgenes, sonido, texto, etc. para abrir cada tipo de archivo necesitar utilizar un
*.ocx o un *.dll que pueda soportar esa extensin, ahora veremos su sintaxis de
utilizacin:

Sintaxis

NombreDelControl.Filter() = Tipo de Archivo (*.ExtensinDelArchivo)|*. ExtensinDelArchivo

Por ejemplo, para abrir archivos de solo texto.

OpenFileDialog1.Filter() = "Archivos de Texto (*.txt)|*.txt"

Control SaveFileDialog

Este nuevo control nos permite guardar mltiples archivos, ya sean de


imgenes, textos, etc. Este es el siguiente icono del archivo.

Sintaxis

NombreDelControl.Filter() = Tipo de Archivo (*.ExtensinDelArchivo)|*. ExtensinDelArchivo

Ejemplo, para guardar un archivo de imagen:

SaveFileDialog1.Filter() = "Imgenes JPG (*.jpg)|*.jpg "


SaveFileDialog1.Title = "Guarda la imagen como..."
'En Una Sola Lnea este cdigo
PictureBox1.Image.Save(SaveFileDialog1.FileName,
System.Drawing.Imaging.ImageFormat.Jpeg)

Y listo esta imagen mostrada en un Picture Box se guardar en el lugar que le


indiquemos, que fcil no?. Como se han dado cuenta para el filtro se utiliza igual la
sintaxis del control anterior, la propiedad FileName del control SaveFileDialog1,
tiene el nombre y la ruta del archivo a guardar y para decirle a la PC como que lo
vamos a guardar, mejor dicho mediante que extensin lo guardamos, utilizamos el
ImageFormat.Jpeg, que es la extensin de una imagen comprimida, si queremos
BMP, seleccionaremos BMP en ImageFormat, as de sencillo.

Joel Martin Chuco Marrufo


13
Visual Basic .Net 2003

Control FontDialog

Este nuevo control nos permite visualizar y cambiar el tipo de fuente de


letra, tamao, estilo, su utilizacin es ms fcil que ponerse unas medias, su
sintaxis es la siguiente:

Sintaxis

NombreDelControl.ShowDialog()

Por ejemplo para cambiar la fuente a un TextBox en tiempo de ejecucin.

FontDialog1.ShowDialog()
TextBox1.Font = FontDialog1.Font

Que Fcil no?

Control ColorDialog

Este nuevo control nos permite visualizar y cambiar el color a varios


controles, tambin es muy fcil de usar, su sintaxis es la siguiente:

Sintaxis

NombreDelControl.ShowDialog()

Por ejemplo para cambiar el color de la letra de un control TextBox en tiempo de


ejecucin.

ColorDialog1.ShowDialog()
TextBox1.ForeColor = ColorDialog1.Color

Joel Martin Chuco Marrufo


14
Visual Basic .Net 2003

APLICACIN 45

En este formulario tendremos tres formularios, y aprenderemos a utilizar


unos nuevos objetos que ha incorporado en esta nueva versin.

Formulario frmmenu

Paso 1.- Disear el formulario, como lo ven, un ToolBar, MainMenu, y un


ContextMenu. El ContextMenu va a tener los mismos elementos que el
MainMenu.

Paso 2.- Asignarles nombres a los controles, para que nos sea mas fcil no
cambiaremos nada.

Paso 3.- Codificacin.

Joel Martin Chuco Marrufo


15
Visual Basic .Net 2003

MenuItem2 y MenuItem6 (Evento Click) - Imagen

Dim Imagen As New frmimagen()


Imagen.MdiParent = Me
Imagen.Show()

MenuItem3 y MenuItem7 (Evento Click) - Texto

Dim Texto As New frmtexto()


Texto.MdiParent = Me
Texto.Show()

MenuItem5 y MenuItem9 (Evento Click) - Salir

If MsgBox("Desea Salir de la Aplicacin?", MsgBoxStyle.Question.YesNo,


"Atencion") = MsgBoxResult.Yes Then
End
End If

ToolBar1 (Evento ButtonClick)

Dim Index As Integer


Index = ToolBar1.Buttons.IndexOf(e.Button)
Select Case Index
Case 0
Dim Imagen As New frmimagen()
Imagen.MdiParent = Me
Imagen.Show()
Case 1
Dim Texto As New frmtexto()
Texto.MdiParent = Me
Texto.Show()
End Select

Joel Martin Chuco Marrufo


16
Visual Basic .Net 2003

Formulario frmimagen

Paso 1.- Disear el formulario, como lo ven, va a contener un


OpenFileDialog, SaveFileDialog, un CheckedBox, 2 PictureBox.

Paso 2.- Asignarles nombres a los controles, para que nos sea mas fcil no
cambiaremos nada.

Control Name

Button1 btnabrir
Button2 btnguardar
Button3 btnsalir

Paso 3.- Codificacin.

Joel Martin Chuco Marrufo


17
Visual Basic .Net 2003

btnabrir (Evento Click)

OpenFileDialog1.Filter() = "Archivos de Imagenes (*.jpg;


*.bmp)|*.jpg;*.bmp"
If OpenFileDialog1.ShowDialog = DialogResult.OK Then
PictureBox1.Image = New Bitmap(OpenFileDialog1.OpenFile)
PictureBox1.SizeMode = PictureBoxSizeMode.CenterImage
btnguardar.Enabled = True
Else
Exit Sub
End If

btnguardar (Evento Click)

Dim NombreImagen As String


If Not PictureBox1.Image Is Nothing Then
SaveFileDialog1.Filter() = "Imgenes JPG (*.jpg)|*.jpg|Mapas de bits
(*.bmp)|*.bmp"
SaveFileDialog1.Title = "Guarda la imagen como..."
If SaveFileDialog1.ShowDialog = DialogResult.OK Then
NombreImagen = SaveFileDialog1.FileName
If (NombreImagen.EndsWith("jpg")) Then
PictureBox1.Image.Save(NombreImagen,
System.Drawing.Imaging.ImageFormat.Jpeg)
End If
If (NombreImagen.EndsWith("bmp")) Then
PictureBox1.Image.Save(NombreImagen,
System.Drawing.Imaging.ImageFormat.Bmp)
End If
End If
End If

btnsalir (Evento Click)

Me.Close()

CheckedBox1 (Evento CheckedChanged)

If CheckBox1.Checked = True Then


PictureBox1.SizeMode = PictureBoxSizeMode.StretchImage
Else
PictureBox1.SizeMode = PictureBoxSizeMode.Normal
PictureBox1.SizeMode = PictureBoxSizeMode.CenterImage
End If

Joel Martin Chuco Marrufo


18
Visual Basic .Net 2003

Formulario frmtexto

Paso 1.- Disear el formulario, como lo ven, va a contener un


OpenFileDialog, SaveFileDialog, FontDialog, ColorDialog, RichTextBox.

Paso 2.- Asignarles nombres a los controles, para que nos sea mas fcil no
cambiaremos nada.

Control Name

Button1 btnabrir
Button2 btnguardar
Button3 btnfuentes
Button4 btncolor
Button5 btnsalir

Paso 3.- Codificacin.

Joel Martin Chuco Marrufo


19
Visual Basic .Net 2003

btnabrir (Evento Click)

OpenFileDialog1.Filter() = "Archivos de Texto (*.txt)|*.txt"


If OpenFileDialog1.ShowDialog = DialogResult.OK Then
RichTextBox1.LoadFile(OpenFileDialog1.OpenFile,
RichTextBoxStreamType.PlainText)
btnguardar.Enabled = True
Else
Exit Sub
End If

btnguardar (Evento Click)

Dim NombreTexto As String


If Not RichTextBox1.Text = "" Then
SaveFileDialog1.Filter() = "Texto .txt (*.txt)|*.txt"
SaveFileDialog1.Title = "Guarda la texto como..."
If SaveFileDialog1.ShowDialog = DialogResult.OK Then
NombreTexto = SaveFileDialog1.FileName
If (NombreTexto.EndsWith("txt")) Then
RichTextBox1.SaveFile(NombreTexto,
RichTextBoxStreamType.UnicodePlainText)
End If
End If
End If

btnsalir (Evento Click)

Me.Close()

btnfuentes (Evento Click)

If FontDialog1.ShowDialog() = DialogResult.OK Then


RichTextBox1.Font = FontDialog1.Font
End If

btncolor (Evento Click)

If ColorDialog1.ShowDialog() = DialogResult.OK Then


RichTextBox1.ForeColor = ColorDialog1.Color
End If

Joel Martin Chuco Marrufo


20
Visual Basic .Net 2003

Para Indicar al Proyecto con que formulario se inicia la aplicacin.

Primero nos ubicaremos en el nombre de la aplicacin y daremos clic


derecho y seleccionaremos la opcin de propiedades y daremos clic.

Despus de dar clic nos mostrara la siguiente ventana, donde nos


ubicaremos en Generales y le daremos clic, y despus seleccionaremos en la opcin
de Objeto inicial, el nombre del formulario que queramos que inicie la aplicacin.

Joel Martin Chuco Marrufo


21
Visual Basic .Net 2003

Joel Martin Chuco Marrufo


22
Visual Basic .Net 2003

Conexiones a Base De Datos, Mediante


ADODB

Joel Martin Chuco Marrufo


23
Visual Basic .Net 2003

MODULOS

Como en las versiones anteriores, existan la ceracin de mdulos, ahora les


explicare los pasos para crear o agregar un nuevo modulo a nuestro proyecto o
solucin, primero aclaremos que una solucin puede tener varios proyectos, y los
proyectos pueden tener varios mdulos, formulario, clases, etc., para agregar un
nuevo mdulo ubicaremos el Mouse en el nombre del proyecto y daremos clic
derecho y seleccionaremos, agregar - agregar nuevo elemento o tambin
podramos ubicarnos en el men proyecto agregar nuevo elemento y darle clic.
Para este caso elegiremos agregar agregar nuevo elemento como se muestra en
la figura.

Al dar clic en esta opcin nos mostrar una ventana en donde podremos
elegir, que tipo de elemento queramos que se muestre, como se darn cuenta hay
varios elementos para agregar, ya sea formulario, clases, mdulos, etc. A
continuacin seleccionaremos modulo y le pondremos el nombre que queramos y le
daremos clic en abrir.

Joel Martin Chuco Marrufo


24
Visual Basic .Net 2003

Y listo eso es todo.

REFERENCIAS

Para agregar una nueva regencia a nuestro proyecto, ya sea para utilizar un
objeto o biblioteca externa, nos ubicaremos en el nombre del proyecto y
seleccionaremos agregar referencia o tambin podramos ir al men proyecto y
escoger agregar referencia y darle clic pero para este caso haremos desde el men
y seleccionaremos agregar referencia en el men de proyecto y daremos clic, luego
nos aparecer una ventana en donde podremos seleccionar.

Joel Martin Chuco Marrufo


25
Visual Basic .Net 2003

Al dar clic en esta opcin nos aparecer la siguiente ventana.

Joel Martin Chuco Marrufo


26
Visual Basic .Net 2003

Las referencias como todos son sabes son librera u objetos, como lo quieran
llamar, en esta nueva versin nos trae para ubicar que tipo de referencia queremos
utilizar, como ven hay tres tipos de referencia:

.Net son todas aquellas referencias que vienen en el FrameWork .Net

Com son todas aquellas referencia que son de todos los programas instalados en el
sistema operativo incluyendo el mismo visual Studio.

Proyectos aqu podremos seleccionar referencia que hallamos creado o agregar


una referencia que no esta instalado en la PC

EXCEPCIN DE ERRORES

Control estructurado de errores

El mtodo recomendado de capturar errores en Visual Basic .NET, es usando


la estructura Try Catch Finally. La forma de usar esta estructura ser algo as:

Try

el cdigo que puede producir error

Catch [tipo de error a capturar]

cdigo cuando se produzca un error

Finally

cdigo se produzca o no un error

End Try

En el bloque Try pondremos el cdigo que puede que produzca un error.

Los bloques Catch y Finally no son los dos obligatorios, pero al menos hay
que usar uno de ellos, es decir o usamos Catch o usamos Finally o, usamos los dos,
pero como mnimo uno de ellos.

Si usamos Catch, esa parte se ejecutar si se produce un error, es la parte


que "capturar" el error. Despus de Catch podemos indicar el tipo de error que
queremos capturar, incluso podemos usar ms de un bloque Catch, si es que
nuestra intencin es detectar diferentes tipos de errores.

En el caso de que slo usemos Finally, tendremos que tener en cuenta de


que si se produce un error, el programa se detendr de la misma forma que si no
hubisemos usado la deteccin de errores, por tanto, aunque usemos Finally (y no
estemos obligados a usar Catch), es ms que recomendable que siempre usemos
una clusula Catch, aunque en ese bloque no hagamos nada, pero aunque no

Joel Martin Chuco Marrufo


27
Visual Basic .Net 2003

"tratemos" correctamente el error, al menos no se detendr porque se haya


producido el error, es como si utilizramos el On Error en la versin 6.0.

Dim i, j As Integer
Try
i = 10
j = 0
i = i \ j
Catch
nada que hacer si se produce un error
End Try
se contina despus del bloque de deteccin de errores

BASE DE DATOS

Conexin a Base de Datos

Para este caso, yo utilizare objetos para hacer las conexiones a base de
datos de Access, primero haremos la conexin a base de datos mediante dos
referencias que son las siguientes:

Microsoft ActiveX Data Object 2.8 Library


Microsoft CDO For Windows 2000 Library

Una vez agregadas las referencias, importaremos la librera a utilizar, casi


todo el cdigo de conexin a la base de datos, lo haremos mediante un modulo as
que primero importaremos la librera ADODB, su sintaxis seria as:

Imports ADODB

Para importar la librera lo haremos antes del comienzo del mdulo,


despus haremos la declaracin de la variable de conexin y la de para abrir la
tabla.

Public VariableBase As ADODB.Connection

Abrir Base de Datos

Para abrir la base de datos, es muy importante que la base de datos se


encuentre en la carpeta Bin del proyecto, para que as no le demos una ruta
especfica, en caso que queramos tener la base de datos en otra direccin,
tendremos que especificar la direccin de la base de datos. Para hacer la conexin
utilizaremos una funcin, que es la siguiente:

Joel Martin Chuco Marrufo


28
Visual Basic .Net 2003

Public Sub NombreFuncin()


Conexion = New ADODB.Connection()
Conexion.ConnectionString =
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=NomDB.mdb;"
Conexion.Open()
End Sub

Cerrar Base de Datos

Para cerrar una base de datos solo utilizaremos un solo cdigo, por que
debemos cerrar la base de datos?, como todos saben una base de datos nunca
puede estar abierta, ya que seria vulnerable a otros programas, y los datos estaran
vulnerables a cualquier cambio o alteracin.

Public Sub NombreFuncin()


Conexion.Close()
End Sub

Conexin a tablas

Para este caso, para abrir una tabla utilizare una funcin, para esto
declaramos una variable de tipo RecordSet, que contendr el siguiente cdigo:

Public VariableTabla As ADODB.Recordset

La funcin para abrir la tabla seria ms o menos as

Public Sub NombreFuncion()


VariableTabla = New ADODB.Recordset()
With Amigos
.ActiveConnection = Conexion
.CursorType = CursorTypeEnum.adOpenKeyset
.LockType = LockTypeEnum.adLockOptimistic
.Open("Select*from NombreDeTabla")
End With
End Sub

Ingresar Nuevos Elementos a la tabla

VariableTabla.AddNew()

Joel Martin Chuco Marrufo


29
Visual Basic .Net 2003

Grabar Elementos Nuevos En Tabla

Para grabar nuevos elementos en una tabla, primero tendremos que usar
una variable de tipo ADODB.Fields.

Public VariableCampo As ADODB.Fields

Y luego tendriamos que escribir el siguiente cdigo para almacenar los datos
ingresados en la tabla.

VariableCampo = VariableTabla.Fields
VariableCampo.Item(NumeroIndice).Value = Datos
VariableTabla.Update()

Eliminar Elementos En Tabla

Para eliminar elementos en una tabla, ya no tendremos que usar una


variable de tipo ADODB.Fields, solo bastara eliminarlos desde el mismo RecordSet.

VariableTabla.Delete()

Mover El Cursor En Una Tabla

Para mover el curso en una tabla, solo bastara mover el cursor desde el
mismo RecordSet.

Primer Registro

VariableTabla.MoveFirst()

Anterior Registro

VariableTabla.MovePrevious()

Siguiente Registro

VariableTabla.MoveNext()

Ultimo Registro

VariableTabla.MoveLast()

Para que les sea mas claro, veremos tres aplicaciones de conexin y grabacin de
datos en una base de datos de Access.

Joel Martin Chuco Marrufo


30
Visual Basic .Net 2003

APLICACIN 46

En esta aplicacin nos permitir conectarnos a una base de datos, y grabar


un nuevo elemento, primero crearemos una base de datos hecha en MS-Access
llamada bdagenda, que contendr una tabla llamada tbamigos.

Base de Datos bdagenda

Creacin del Mdulo, llamado Module1

Crear un modulo, y no le pongan ningn nombre en especial por ahora, el


mdulo contendr el siguiente cdigo, lo nico que aadiremos por ahora es el
import ADODB.

Imports ADODB

Module Module1

End Module

Declaracin de Variables a utilizar de Tipo ADODB

Public Conexion As ADODB.Connection


Public Amigos As ADODB.Recordset
Public Campos As ADODB.Fields
Dim Respuesta As Integer

La variable Conexion de tipo ADODB.Connection, nos servir para la


conexin a la base de datos, la variable Amigos de tipo ADODB.Recordset, nos
servir para abrir y capturar todos los campos de la tabla tbamigos, la variable
Campo de tipo ADODB.Fields, nos servir para alterar el dato del campo de la tabla,
y la variable Respuesta de tipo entero, almacenara el valor de la conexin,
recordemos que cuando una conexin se establece satisfactoriamente nos devuelve
un nmero distinto que 0.

Joel Martin Chuco Marrufo


31
Visual Basic .Net 2003

Creacin de la funcin AbrirBase

Public Sub AbrirBase()


Conexion = New ADODB.Connection()
Conexion.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=bdagenda.mdb;"
Try
Conexion.Open()
Catch ex As Exception
End Try
Respuesta = Conexion.Errors.Count()
If Respuesta <> 0 Then
MsgBox("ERROR: No se logro la Conexin", MsgBoxStyle.Critical, "Error de
Conexin")
Else
MsgBox("La Conexin Fue Satisfactoria", MsgBoxStyle.Information,
"Conexin Establecida")
End If
End Sub

Explicacin:

Primero la variable declarada, le asignamos o le decimos que es una


conexin nueva, en otras palabras la instanciamos, como en Visual CSharp,
despus en la cadena de conexin, pondremos el proveedor y el nombre de la base
de datos, en caso de que la base de datos no se encuentra en la carpeta Bin del
proyecto, tendremos que especificarle la direccin completa.

Despus tenemos un bloque de Try para capturar el error en la conexin de


base de datos, en este caso si hay un error, dejaremos que contine, para as
capturar el error en la variable llamada Respuesta, y de ah verificaremos si la
respuesta es diferente a cero, mejor dicho hay un error en la conexin nos mostrar
el siguiente mensaje.

Joel Martin Chuco Marrufo


32
Visual Basic .Net 2003

En cambio si la respuesta del conteo de errores es igual a cero, mejor dicho


no hubo errores en la conexin nos mostrara el siguiente mensaje.

Creacin de la funcin AbrirAmigos

Como en la variable Conexin, la instanciamos, y luego le indicamos que


active la conexin, mediante la variable conexion, de ah todo les he familiar como
en VB 6.0

Public Sub AbrirAmigos()


Amigos = New ADODB.Recordset()
With Amigos
.ActiveConnection = Conexion
.CursorType = CursorTypeEnum.adOpenKeyset
.LockType = LockTypeEnum.adLockOptimistic
.Open("Select*from tbamigos")
End With
End Sub

Creacin de la funcin CerrarBase

Public Sub CerrarBase()


Try
Conexion.Close()
Catch ex As Exception
MsgBox("ERROR: No se logro el Cierre de Conexin a la Base de Datos, ya
que la Base de Datos NO Esta Abierta o NO se Hall", MsgBoxStyle.Critical,
"Error de Cierre de Conexin")
Exit Sub
End Try
Try
Respuesta = Conexion.Errors.Count()
Catch ex As Exception
End Try
If Respuesta = 0 Then
MsgBox("Conexin Fue Cerrada Satisfactoriamente",
MsgBoxStyle.Information, "Conexin Cerrada")
End If
End Sub

Joel Martin Chuco Marrufo


33
Visual Basic .Net 2003

En esta funcin utilizaremos un bloque Try para capturar el Error que se


genere cerrando una base de datos, en el primer bloque Try si existe un error en
cerrar la base de datos nos mostrara el siguiente mensaje.

En cambio en el segundo Try vemos si hay un conteo de errores en el cierre


de la base de datos, si no lo hay o si la respuesta es de 0 errores nos mostrara este
mensaje.

Formulario frmdatos

Joel Martin Chuco Marrufo


34
Visual Basic .Net 2003

btnconectar (Evento clic)

Me.Enabled = False
Call AbrirBase()
Me.Enabled = True
btngrabar.Enabled = True

btncerrar(Evento clic)

Me.Enabled = False
Call CerrarBase()
Me.Enabled = True

btngrabar (Evento clic)

If Conexion.State = 1 Then
Call AbrirAmigos()
If Amigos.State = 1 Then
Amigos.AddNew()
Campos = Amigos.Fields
Campos.Item(0).Value = txtnombre.Text
Campos.Item(1).Value = txtdireccion.Text
Campos.Item(2).Value = txtdistrito.Text
Campos.Item(3).Value = txttelefono.Text
Campos.Item(4).Value = dtpfecnac.Value
Campos.Item(5).Value = txtsexo.Text
Campos.Item(6).Value = txtpeso.Text
Amigos.Update()
Else
MsgBox("ERROR: No Se Logr Abrir La Tabla Amigos",
MsgBoxStyle.Critical, "Error al Guardar")
Exit Sub
End If
Else
MsgBox("ERROR: No Hay Conexin Con La Base de Datos",
MsgBoxStyle.Critical, "Error al Guardar")
End If

btnsalir (Evento clic)

Call CerrarBase()
Me.Close()

Joel Martin Chuco Marrufo


35
Visual Basic .Net 2003

APLICACIN 47

En esta aplicacin nos permitir conectarnos a una base de datos, y grabar


un nuevo elemento, aprenderemos a desactivar el botn cerrar del formulario,
utilizaremos la misma base de datos de la aplicacin anterior, si no se acuerdan
aqu les dejo el grfico.

Base de Datos bdagenda

Creacin del Mdulo, llamado Botn_Cerrar (Cdigo sacado de la pgina web


de Maluco)

Imports System
Imports System.Drawing
Imports System.Collections
Imports System.ComponentModel
Imports System.Windows.Forms
Imports System.Data

Module Boton_Cerrar

Private Const Posicion As Integer = &H400


Private Const RemoverCerrar As Integer = &H1000
Private Const Desactivar As Integer = &H2

Private Declare Function GetSystemMenu Lib "User32" (ByVal hWnd As Integer,


ByVal bRevert As Boolean) As IntPtr

Private Declare Function GetMenuItemCount Lib "User32" (ByVal hMenu As


Integer) As IntPtr

Private Declare Function RemoveMenu Lib "User32" (ByVal hMenu As Integer,


ByVal nPosition As Integer, ByVal wFlags As Long) As IntPtr

Private Declare Function DrawMenuBar Lib "User32" (ByVal hWnd As Integer) As


IntPtr

Joel Martin Chuco Marrufo


36
Visual Basic .Net 2003

Public Sub BotonCerrar(ByVal hWnd As IntPtr, ByVal Activar As Boolean)


Try
Dim menuItemCount As IntPtr
Dim hMenu As IntPtr
hMenu = GetSystemMenu(hWnd.ToInt32(), Activar)
menuItemCount = GetMenuItemCount(hMenu.ToInt32())
RemoveMenu(hMenu.ToInt32(), menuItemCount.ToInt32() - 1, Desactivar
Or Posicion)
RemoveMenu(hMenu.ToInt32(), menuItemCount.ToInt32() - 2, Desactivar
Or Posicion)
DrawMenuBar(hWnd.ToInt32())
Catch ex As Exception
MessageBox.Show("Se ha producido la excepcin: " + vbCrLf +
ex.Message, "Error del programa", MessageBoxButtons.OK)
End Try
End Sub

End Module

Creacin del Mdulo, llamado BaseDatos

Imports ADODB

Module BaseDatos

Public Conexion As ADODB.Connection = New ADODB.Connection()


Public Amigos As ADODB.Recordset = New ADODB.Recordset()
Public Campos As ADODB.Fields
Dim Respuesta As Integer

Public Sub AbrirBase()


Conexion.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=bdagenda.mdb;"
Try
Conexion.Open()
Catch ex As Exception
End Try
Respuesta = Conexion.Errors.Count()
If Respuesta <> 0 Then
MsgBox("ERROR: No se logro la Conexin", MsgBoxStyle.Critical, "Error de
Conexin")
Else
MsgBox("La Conexin Fue Satisfactoria", MsgBoxStyle.Information,
"Conexin Establecida")
End If
End Sub

Public Sub AbrirAmigos()


Amigos = New ADODB.Recordset()
With Amigos
.ActiveConnection = Conexion
.CursorType = CursorTypeEnum.adOpenKeyset
.LockType = LockTypeEnum.adLockOptimistic
.Open("Select*from tbamigos")
End With
End Sub

Joel Martin Chuco Marrufo


37
Visual Basic .Net 2003

Public Sub CerrarBase()


Try
Conexion.Close()
Catch ex As Exception
MsgBox("ERROR: No se logro el Cierre de Conexin a la Base de Datos, ya
que la Base de Datos NO Esta Abierta o NO se Hall", MsgBoxStyle.Critical,
"Error de Cierre de Conexin")
Exit Sub
End Try
Try
Respuesta = Conexion.Errors.Count()
Catch ex As Exception
End Try
If Respuesta = 0 Then
MsgBox("Conexin Fue Cerrada Satisfactoriamente",
MsgBoxStyle.Information, "Conexin Cerrada")
End If
End Sub

End Module

Formulario frmpresentacion

El control primordial que va a tener este formulario es un Timer, y de ah le


pueden poner cualquier imagen.

frmpresentacion (Evento Load)

Me.Opacity = 100
Me.Timer1.Enabled = True

Joel Martin Chuco Marrufo


38
Visual Basic .Net 2003

Timer1 (Evento Tick)

Me.Opacity -= 0.02
If Me.Opacity = 0.0 Then
Me.Timer1.Enabled = False
Dim Formulario As New frmaplicacion47()
Formulario.Show()
Me.Hide()
End If

Formulario frmaplicacion47

Paso 1.- Disear el formulario tal como se muestra en la figura.

Paso 2.- Asignarles los nombres a los controles.

Control Name

TextBox1 txtnombre
TextBox2 txtdireccion
TextBox3 txttelefono
TextBox4 txtpeso

Joel Martin Chuco Marrufo


39
Visual Basic .Net 2003

ComboBox1 cbodistrito
DateTimePicker1 dtpfecnac
RadioButton1 rdbmasculino
RadioButton2 rdbfemenino
Button1 btnnuevo
Button2 btngrabar
Button3 btnconectar
Button4 btndesconectar
Button5 btnsalir

Codificar.

Funcin Desconectar_Load.

Function Desconectar_Load()
btndesconectar.Enabled = False
btnnuevo.Enabled = False
btngrabar.Enabled = False
btnconectar.Enabled = True
btnsalir.Enabled = True
End Function

Funcin Conectar_Grabar

Function Conectar_Grabar()
btndesconectar.Enabled = True
btnnuevo.Enabled = True
btngrabar.Enabled = False
btnconectar.Enabled = False
btnsalir.Enabled = False
End Function

Funcin Verificar

Function Verificar()
If txtnombre.Text = "" AndAlso txtdireccion.Text = "" AndAlso cbodistrito.Text
= "" Then
Exit Function
End If
If txttelefono.Text = "" Or IsNumeric(txttelefono.Text) = False Then
Exit Function
End If
If Not IsDate(dtpfecnac.Value) Then
Exit Function
End If
If rdbmasculino.Checked = False AndAlso rdbfemenino.Checked = False Then
Exit Function
End If
If txtpeso.Text = "" Or IsNumeric(txtpeso.Text) = False Then
Exit Function
End If
btngrabar.Enabled = True
End Function

Joel Martin Chuco Marrufo


40
Visual Basic .Net 2003

frmaplicacion47 (Evento Load)

Desconectar_Load()
datos.Enabled = False

frmaplicacion47 (Evento Closed)

Application.Exit()

btnconectar (Evento Clic)

Call AbrirBase()
If Conexion.State = 0 Then
Exit Sub
End If
BotonCerrar(Me.Handle, False)
Conectar_Grabar()

btnnuevo (Evento Clic)

datos.Enabled = True
btndesconectar.Enabled = False
btnnuevo.Enabled = False
btngrabar.Enabled = False
btnconectar.Enabled = False
btnsalir.Enabled = False
Call AbrirAmigos()
Amigos.AddNew()

btndesconectar (Evento Clic)

Call CerrarBase()
BotonCerrar(Me.Handle, True)
Desconectar_Load()

btngrabar (Evento Clic)

Dim Sexo As String


datos.Enabled = False
Conectar_Grabar()
If rdbmasculino.Checked = True Then
Sexo = "M"
Else
Sexo = "F"
End If
If Amigos.State = 1 Then
Campos = Amigos.Fields
Campos.Item(0).Value = txtnombre.Text
Campos.Item(1).Value = txtdireccion.Text
Campos.Item(2).Value = cbodistrito.Text
Campos.Item(3).Value = txttelefono.Text

Joel Martin Chuco Marrufo


41
Visual Basic .Net 2003

Campos.Item(4).Value = dtpfecnac.Value
Campos.Item(5).Value = Sexo
Campos.Item(6).Value = txtpeso.Text
Amigos.Update()
Else
MsgBox("ERROR: No Se Logr Abrir La Tabla Amigos",
MsgBoxStyle.Critical, "Error al Guardar")
Exit Sub
End If

btnsalir (Evento Clic)

Application.Exit()

txtnombre, txtdireccion, txttelefono, txtpeso (Evento TextChanged)

Verificar()

cbodistrito (Evento Clic)

Verificar()

dtpfecnac (Evento ValueChanged)

Verificar()

rdbmasculino, rdbfemenino (Evento CheckedChanged)

Verificar()

Nota: Para toda aplicacin que usemos el ADODB tendremos que agregar las
referencias.

Microsoft ActiveX Data Object 2.8 Library


Microsoft CDO For Windows 2000 Library

Joel Martin Chuco Marrufo


42
Visual Basic .Net 2003

APLICACIN 48

En esta aplicacin nos permitir conectarnos a una base de datos, grabar,


eliminar y desplazarnos por todos los registros de la base de datos.

Base de Datos bdcompaia

Creacin del Mdulo, llamado BaseDeDatos

Imports ADODB

Module BaseDeDatos
Public CN As ADODB.Connection = New ADODB.Connection()
Public RSTrabajador As ADODB.Recordset = New ADODB.Recordset()
Public Campo As ADODB.Fields = RSTrabajador.Fields

Public Function AbrirBase()


CN.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=bdcompaia.mdb;"
Try
CN.Open()
Catch ex As Exception
End Try
If CN.Errors.Count() <> 0 Then
MsgBox("ERROR: No se logro la Conexin", MsgBoxStyle.Critical, "Error de
Conexin")
End
End If
End Function

Public Sub CerrarBase()


Try
CN.Close()
Catch ex As Exception
MsgBox("ERROR: No se logro el Cierre de Conexin a la Base de Datos, ya
que la Base de Datos NO Esta Abierta o NO se Hall", MsgBoxStyle.Critical,
"Error de Cierre de Conexin")
Exit Sub

Joel Martin Chuco Marrufo


43
Visual Basic .Net 2003

End Try
Try
If CN.Errors.Count() <> 0 Then
MsgBox("ERROR: al Cerrar la Conexin, Se cerrar automticamente el
programa, perdiendose los datos que acaba de ingresar",
MsgBoxStyle.Information, "Error Crtico")
Application.ExitThread()
End If
Catch ex As Exception
End Try
End Sub

Public Function AbrirTrabajador()


With RSTrabajador
.ActiveConnection = CN
.CursorType = CursorTypeEnum.adOpenKeyset
.LockType = LockTypeEnum.adLockOptimistic
.Open("Select*from tbtrabajador")
End With
End Function

End Module

Formulario frmconexion

Disear el formulario, ingresar un Timer al cual no le cambiaremos el


nombre, e ingresar un ProgressBar que se llamar pgbconexion y dos Label,
uno se llamar lblporcentaje y el otro no le cambiaremos el nombre, ya que
no lo utilizaremos.

frmconexion (Evento Load)

Me.lblporcentaje.Text = ""
Me.pgbconexion.Value = 0

Joel Martin Chuco Marrufo


44
Visual Basic .Net 2003

Timer1 (Evento Tick)

Static Avance As Integer


Avance = Avance + 1
Me.pgbconexion.Value = Avance
Me.lblporcentaje.Text = CStr(Avance) + " %"
If Avance = 65 Then
Call AbrirBase()
ElseIf Avance = 100 Then
Me.tmravance.Enabled = False
Call AbrirTrabajador()
Dim Formulario As New frmmantenimiento()
Formulario.Show()
Me.Hide()
End If

Formulario frmmantenimiento

Paso 1.- Disear el formulario tal como se muestra en la figura.

Joel Martin Chuco Marrufo


45
Visual Basic .Net 2003

Paso 2.- Asignarles los nombres a los controles.

Control Name

TextBox1 txtcodigo
TextBox2 txtnombres
TextBox3 txtapellidos
TextBox4 txtcargo
TextBox5 txtsueldo
Button1 btnprimero
Button2 btnanterior
Button3 btnsiguien
Button4 btnultimo
Button5 btnnuevo
Button6 btngrabar
Button7 btneliminar
Button8 btnmodificar
Button9 btncancelar

Codificar.

Funcin LlenarControles

Function LlenarControles()
txtcodigo.Text = CStr(Campo.Item(0).Value)
txtnombres.Text = CStr(Campo.Item(1).Value)
txtapellidos.Text = CStr(Campo.Item(2).Value)
txtcargo.Text = CStr(Campo.Item(3).Value)
txtsueldo.Text = CStr(Campo.Item(4).Value)
SoloLectura(True)
End Function

Funcin SoloLectura

Function SoloLectura(ByVal Valor As Boolean)


txtcodigo.ReadOnly = Valor
txtnombres.ReadOnly = Valor
txtapellidos.ReadOnly = Valor
txtcargo.ReadOnly = Valor
txtsueldo.ReadOnly = Valor
End Function

Joel Martin Chuco Marrufo


46
Visual Basic .Net 2003

Funcin ModoEditar

Function ModoEditar(ByVal Valor As Boolean)


btnnuevo.Enabled = Valor
btngrabar.Enabled = Not Valor
btneliminar.Enabled = Valor
btnmodificar.Enabled = Valor
btncancelar.Enabled = Valor
SoloLectura(Valor)
End Function

Funcin LimpiarControles

Function LimpiarControles()
txtcodigo.Text = ""
txtnombres.Text = ""
txtapellidos.Text = ""
txtcargo.Text = ""
txtsueldo.Text = ""
End Function

frmmantenimiento (Evento Closed)

Call CerrarBase()
End

btnprimero (Evento Clic)

RSTrabajador.MoveFirst()
LlenarControles()

btnanterior (Evento Clic)

RSTrabajador.MovePrevious()
If RSTrabajador.BOF Then
MsgBox("Estamos en el Primer Registro")
RSTrabajador.MoveFirst()
End If
LlenarControles()

btnsiguiente (Evento Clic)

RSTrabajador.MoveNext()
If RSTrabajador.EOF Then
MsgBox("Estamos en el ltimo Registro")
RSTrabajador.MoveLast()
End If
LlenarControles()

Joel Martin Chuco Marrufo


47
Visual Basic .Net 2003

btnultimo (Evento Clic)

RSTrabajador.MoveLast()
LlenarControles()

frmmantenimiento (Evento Load)

RSTrabajador.MoveFirst()
LlenarControles()
ModoEditar(True)

btnnuevo (Evento Clic)

RSTrabajador.AddNew()
ModoEditar(False)
LimpiarControles()

btncancelar (Evento Clic)

RSTrabajador.CancelUpdate()
ModoEditar(True)
RSTrabajador.MoveFirst()
LlenarControles()

btneliminar (Evento Clic)

RSTrabajador.Delete()
ModoEditar(True)
RSTrabajador.MoveFirst()
LlenarControles()

btngrabar (Evento Clic)

With Campo
.Item(0).Value = CStr(txtcodigo.Text)
.Item(1).Value = CStr(txtnombres.Text)
.Item(2).Value = CStr(txtapellidos.Text)
.Item(3).Value = CStr(txtcargo.Text)
.Item(4).Value = CInt(txtsueldo.Text)
End With
RSTrabajador.Update()
ModoEditar(True)

btnmodificar (Evento Clic)

ModoEditar(False)

Joel Martin Chuco Marrufo


48
Visual Basic .Net 2003

Bueno seores, con esto acabo con la tercera entrega, he tocado un poco lo que
es conexiones a base de datos, seguro otros pedirn la las conexiones a base de
datos de SQL, pero eso ser a la prxima entrega o a la quinta entrega, ya que
me falta hacer conexin a base de datos mediante el Data Enviorement,
consultas, y si me da tiempo, har reportes en Cristal Report.

Espero que les sea de bastante utilidad esta entrega, ya saben que para
cualquier cosa esta mi correo jmchm19@hotmail.com que les responder lo mas
rpido posible, bueno ya me despido, aqu en Per estamos en carnavales y ya
paso el da del Pisco, que por supuesto que es peruano!, bye y cudense.

Donaciones a la Cuenta de Ahorros del Banco Interbank del Per

Cuenta en Soles:

067-3008573552

Cuenta en Dlares:

067-3008573560

www.interbank.com.pe

Lima, 08 de Febrero de 2006

Joel Martin Chuco Marrufo


49

Vous aimerez peut-être aussi