Вы находитесь на странице: 1из 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 TextBox1 TextBox2 Button1 Button2

Name txtusuario txtcontrasea btnok 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 OpenFileDialog, SaveFileDialog, un CheckedBox, 2 PictureBox.

un

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

Control Button1 Button2 Button3

Name btnabrir btnguardar 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 = PictureBox1.SizeMode Else PictureBox1.SizeMode PictureBox1.SizeMode End If True Then = PictureBoxSizeMode.StretchImage = PictureBoxSizeMode.Normal = PictureBoxSizeMode.CenterImage

Joel Martin Chuco Marrufo 18

Visual Basic .Net 2003

Formulario frmtexto

Paso 1.- Disear el formulario, como lo ven, va a contener OpenFileDialog, SaveFileDialog, FontDialog, ColorDialog, RichTextBox.

un

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

Control Button1 Button2 Button3 Button4 Button5

Name btnabrir btnguardar btnfuentes btncolor 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 Imports Imports Imports Imports Imports

System System.Drawing System.Collections System.ComponentModel System.Windows.Forms 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 TextBox1 TextBox2 TextBox3 TextBox4

Name txtnombre txtdireccion txttelefono txtpeso

Joel Martin Chuco Marrufo 39

Visual Basic .Net 2003


ComboBox1 DateTimePicker1 RadioButton1 RadioButton2 Button1 Button2 Button3 Button4 Button5 cbodistrito dtpfecnac rdbmasculino rdbfemenino btnnuevo btngrabar btnconectar btndesconectar 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 TextBox1 TextBox2 TextBox3 TextBox4 TextBox5 Button1 Button2 Button3 Button4 Button5 Button6 Button7 Button8 Button9

Name txtcodigo txtnombres txtapellidos txtcargo txtsueldo btnprimero btnanterior btnsiguien btnultimo btnnuevo btngrabar btneliminar btnmodificar 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

Вам также может понравиться