jueves, 15 de enero de 2009

Práctica 2

Ahora, en lugar de hacerlo en tiempo de diseño, se hará en tiempo de ejecución, es decir al ejecutar el proyecto: al ejecutar el proyecto, aunque la asignación de la propiedad DataSource de las cajas de texto se hará en tiempo de diseño, ya que no se puede hacer en tiempo de ejecución.

Para ello, se usará otro formulario, con los mismos controles de la Práctica 1, pero sin “conectarlos” a ninguna tabla de una base de datos.

1.- Crear un Proyecto Nuevo.
2.- En el Formulario, añadir un Data Control, tres etiquetas y tres cajas de texto.
3.- Seleccionar las tres Cajas de Texto y en la ventana de propiedades, seleccionar DataSource y asignar Data1, además de asignar el tamaño, tanto en las cajas de texto como en las etiquetas.
4.- Hacer doble click en el formulario, por defecto se mostrará el evento Form_Load.
5.- Escribe el siguiente Código:


Option Explicit

Private Sub Form_Load()
'Indicar el path de la base de datos
Data1.DatabaseName = "C:\Archivos de programa\
Microsoft Visual Studio\VB98\BIBLIO.MDB"
'
'Indicar la tabla que se quiere utilizar
Data.RecordSource = "Authors"
'
'Asignar a cada uno de los texboxes el campo de la tabla
Text1.DataField = "Au_ID"
Text2.DataField = "Author"
Text3.DataField = "Year Born"
End Sub

6.- Ejecutar el Proyecto.

7.- Añadir una Caja de Texto en la cual se podrá escribir un número y al pulsar ENTER se mostrará el autor que tenga ese número como AU_ID. Para ello se añade una nueva caja de texto (no asignar DataSource), ya que este TextBox no estará ligado a la Base de Datos.
La posición y el tamaño de esta caja de texto es: Left = 1500, Top = 120, Width = 615 y 315 de altura. El nombre es Text4.
Cuando se pulse ENTER en ese control, se convertirá el valor introducido a un número y se hará una búsqueda en el contenido del Data1. El código es el siguiente:



Private Sub Text4_KeyPress(KeyAscii As Integer)
'Se buscará sólo cuando se pulse ENTER
Dim nReg As Long
'
'Comprobar si la tecla pulsada es ENTER: vbKeyReturn o
'13 que es lo mismo
If KeyAscii = vbKeyReturn Then
' Esta asignación evita que suene un BEEP
KeyAscii = 0
' Convertir el contenido de TexBox en un Número
nReg = Val(Text4)
'Buscar la primera coincidencia en el recordset del Data1
'en el campo Au_ID
Data1.Recordset.FindFirst "Au_ID = " & nReg
End If
End Sub


8.- Ejecutar el Proyecto.

Para realizar la búsqueda se usa FindFirst, esto hará que se muestre (o asigne como registro activo) el primer registro que coincida con lo indicado, en este caso el Au_ID que tenga como valor el número indicado en la variable nReg, ósea el valor introducido en el Text4.
En caso de que no se encuentre el valor buscado, no alterará el registro actual.

Buscar el campo Autor
Añadir dos controles Options para buscar tanto por el número del ID como por el nombre del Autor, el aspecto del formulario sería este:



Option1 será el que indique que se busque por el ID y Option2 será para buscar por el campo Autor, el código es el siguiente:


Private Sub Text4_KeyPress(KeyAscii As Integer)
'Se buscará sólo cuando se pulse ENTER
Dim nReg As Long
'
'Comprobar si la tecla pulsada es ENTER: vbKeyReturn o
'13 que es lo mismo
If KeyAscii = vbKeyReturn Then
' Esta asignación evita que suene un BEEP
KeyAscii = 0
' Convertir el contenido de TexBox en un Número
nReg = Val(Text4)
'Buscar la primera coincidencia en el recordset del Data1
If Option1.Value Then
' en el campo Au_ID
Data1.Recordset.FindFirst "Au_ID = " & nReg
End If
If Option2.Value Then
'en el campo Author
Data1.Recordset.FindFirst "Author Like '" & Text4.Text & "'"
End If
End If
End Sub




No hay comentarios:

Publicar un comentario