Sei sulla pagina 1di 22

c  



÷   (los más recientes abajo)

 ÷opiar la estructura de una tabla con Access


 ›rdenes SQL para cambiar los datos de una tabla.
 ÷aracteres no "standards" en los nombres de los campos
 xrocesar una consulta SQL (Execute)
 xrocesar una consulta SQL creando un Recordset
 Evitar el error al asignar un Null
 ÷omprobar si un registro se está editando
 Asignar a un Recordset los registros deseados
 ÷ompactar una base de datos, usando código VB (27/Feb)

 ÷rear una base de datos, usando código VB (18/Abr)
 ÷omo crear un Formulario de Datos con un Grupo de Registros Subyacente
(18/Abr)
 ÷ambiar los caracteres extraños por ? (para usar en las consultas a bases de
datos con LIKE) (20/Abr)
 xrocesar el resultado de una consulta con varias tablas para evitar registros
duplicados (13/Jul)
 xrogramación sobre la seguridad de Access (31/Ago)
 ·n método rápido para efectuar búsquedas (8/Sep)
 Enumerar las tablas de una base de datos (17/Sep)
 ÷apturar errores de ›DB÷ (9/Abr/98)
 Acceso a bases de datos SQL Server...
 ÷argar Imágenes de una base de datos sin usar el Data÷ontrol

 Acceder a bases de datos de Access 2000 con el VB5 (05/›ct/99)
  ·n consejo si instalas VB6 Sx para acceder a bases de datos de Access 2000
(10/Nov/00)
 Ejemplo "simple" de acceso a datos DA› con el data control (÷urso Básico
entrega 3 ) (09/Jul/03)
 Buscar en una base de datos DA› con el data control (÷urso Básico entrega 35)
(09/Jul/03)
 Acceder a una base de datos DA› sin el data control (÷urso Básico entrega 0)
(09/Jul/03)
 Realizar consultas en una base de datos DA› (÷urso Básico entrega 0)
(09/Jul/03)
 ÷ómo manejar fechas en consultas, además de otros ejemplos, tanto para AD›
como para DA› (09/Jul/03)
 Instrucciones SQL para seleccionar, actualizar, eliminar datos, etc. (02/May/0 )
 ÷onectar a una base de datos de SQL Server con VB6 (Abrir una tabla y
mostrar los campos/columnas) (10/Sep/0 )
  Indicar el path de una base de datos usando el control data (18/Sep/0 )
Ejemplo paso a paso de cómo usar un control data y DataGrid

{ ÷  


      

xara copiar/duplicar la estructura de una tabla en una base de datos Access, sigue
estos pasos:

 ÷arga la base de datos en Access


 Selecciona la tabla a copiar
 En el menú de Edición, selecciona ÷opiar
 En el menú de Edición, selecciona xegar
 Escribe el nuevo nombre de la tabla
 Selecciona "Estructura solamente"

Ya está la tabla "duplicada" en la misma base de datos, por si haces cambios de los
que después te arrepientas.
Si la intención es copiarla en otra base de datos, antes de seguir con el paso , cargar
o crear la nueva base de datos y ya está. En el paso 6 puedes seleccionar "Estructura y
Datos" si quieres copiar también los datos.

×  
    

  

· 
tabla

nombre_campo = 'nuevo_valor'


opciones_a_tener_en_cuenta

  Actualizar la tabla ÷lientes poniendo el campo Agente a LIBRE si la fecha de


ÚltimaVisita es anterior al 1 de Enero de 1996 (este es un caso sobre una base de
datos que uso en mi trabajo, pero como ejemplo puede valer):

· 
÷lientes 
Agente = 'LIBRE'

[ÚltimaVisita] <
DateValue('01/01/96')

Normalmente el campo de fechas será según tengáis configurado el sistema.

3 ÷   
 
 
  

 

Si al crear las tablas de la base de datos usas caracteres acentuados, eñes, espacios,
etc. ÷uando hagas una consulta o lo uses en un Recordset, etc, ponlos entre corchetes,
fijates en cómo se usa ÚltimaVisita en el ejemplo anterior.

a  
   

 

xara ejecutar una orden SQL en una base de datos, usar la orden Execute en la
variable de una base de datos (Database)

l 
 
l    


l     l    
 
l       

   !   "
# " $  %
&  
'( ) 
 *+" ) 
$
    , $ 
-./ (-


'(

½  
   
     


Se creará un Recordset con el resultado de una consulta SQL realizada a uan base de
datos, posteriormente se procesarán los datos que ha producido dicha consulta.
xor ejemplo si tenemos una base de datos con nuestra colección discográfica,
podríamos hacer una consulta con todos los ÷D's de xhil ÷ollins
Suponiendo que el formato de los discos (÷D, Lx, etc.) es Formato y el Nombre del
Autor está en ÷antante, la orden a ejecutar sería:
SQLTmp = "SELE÷T * FR›M mis_discos WHERE Formato Like '*÷D*' AND ÷antante
Like '*xhil ÷ollins*'"
xor supuesto se puede usar = en lugar de Like, si estamos seguros de que no
necesitamos los comodines, ya que la consulta es "bastante" más rápida. Es decir
quedaría así:
SQLTmp = "SELE÷T * FR›M mis_discos WHERE Formato = '÷D' AND ÷antante = 'xhil
÷ollins'"

l , $ 
 $ 
$


l    


l     l    
 
l       

    +
*0 ! $
 

  $1( - -2/ 3-
0
-/($ 
*0  # ! $
  %
 )
4
*0 #*. & 
'( ) 
 4
 l )0
%. 
 *+")0
5 $ $
 $ 65
  $($
%
-./ (-    7
%89%

 " 

'(

l:
   
 
;#/  

*0 #*. & 
< *0 # &
 l= $  
###
 l
 ;#

' *0 /   --*0 >/ $? @l###0




*0 #*.  "

*0 #/ 

ë 
  
       


Además de evitar el error, es más rápido que usar If...Then... para comprobar si el
campo es nulo o está vacío.

xara cadenas:

/
- A/

xara números:

l 4- A/


 /' 4- A/

G ÷   
  
 



Esto puede ser útil si el programa tiene que acceder a una base de datos en red o bien
si accedes en el mismo equipo a una base de datos.
Lo que hay que hacer es usar EditMode y comprobar si se está editando.
Veamos un ejemplo:

ƒ) ;#! $
 
l $   $?
+ $   + 
 % $#
l###
 ƒ) #
*


' = + 
  . 

l/
 + 5B% 5 0  ###
#

l###)$ $ + ###
#<
 

ƒ)

Los valores que devuelve EditMode, pueden ser:


     

#


' = +   

$  #




 ):

  + $ 

 C
0  + $
.B   (( #

^    
 

   
   


xara asignar a un Data (Recordset) los datos que quieras de una tabla, usa la
propiedad Recordsource.

Data1.RecordSource = "SELE÷T * FR›M Tabla WHERE (condiciones de selección)


›RDER BY campo, [campo2]"
Data1.Refresh

El Refresh que no se te olvide, si no quieres que produzca error.


÷ondiciones de selección, serán las comparaciones (consulta) que quieres incluir para
la selección.
xor ejemplo, si quieres incluir todos los clientes de Málaga que tengan coche,
clasificados por la población:
Data1.RecordSource = "SELE÷T * FR›M ÷lientes WHERE xrovincia = 'Málaga' AND
÷oche = 'Si' ›RDER BY [xoblación]"

Fijate que xoblación está entre corchetes, esto es necesario, porque la ó (o acentuada)
es un caracter "extraño" y se debe poner entre corchetes para que el Jet lo entienda.
Lo mismo hay que hacer si el nombre del campo incluye espacios.
›tra cosa a tener en cuenta es que si usas =, el contenido del campo "debe coincidir
exactamente", si en xrovincia tienes algo como: Málaga (Andalucía), no lo
"encontrará". xara que lo incluya también, cambia el signo igual por LIKE:

Data1.RecordSource = "SELE÷T * FR›M ÷lientes WHERE xrovincia LIKE '*Málaga*'


AND ÷oche = 'Si' ›RDER BY [xoblación]"

Más cosas, en la parte ›RDER BY, se pueden incluir más de un campo, separados por
comas.
El asterisco (*) que hay después de SELE÷T, es para que incluya todos los campos de
la tabla.
Si sólo quieres incluir algunos campos, especificalos en lugar del asterisco y separalos
con comas:

Data1.RecordSource = "SELE÷T Nombre,Apellidos, [xoblación], xrovincia, ÷oche FR›M


÷lientes WHERE xrovincia LIKE 'Málaga' AND ÷oche = 'Si' ›RDER BY [xoblación]"

u ÷     




    (27/Feb)

Este es el código que uso para compactar las bases de datos. ÷osa que suelo hacer
bastante a menudo, sobre todo en las que uso en la empresa, que cambian a diario.
xor aquello de la seguridad, mantengo dos copias: la anterior y la última. Más vale
prevenir. Nunca se sabe cuando se cortará la luz o se quedará colgado el equipo... así
que, me curo en salud.

l/    ?  ###


#/ 
l    0
+ 
 ) +
l
l      " ? 

'    %#
'() 
D;
 
   

'(
 (E  %
l$ F%   
 $ )
& ;  D;
'(*
E  %%;F) 
 (E  %
 "& 

'(
 "
'(!+)E%;23F) 
-F

'(

l
   $      + 
5  5
 $
l $
5 ( $$$? ###

 -G
 H#

'(   E
 ) I
 
'(   E-G
 ;#
) I-G
 ;#


l  

$
% 
  .  % 
$ ? 

$  #
/$    %
 %
 +  )%
  H4

lJ
  $
$   
   -G
 ;#

l   0$$
%B5 +     
 
   
l  ($)  
'(   E-1#
) I-1#



{ ÷    


    (18/Abr)

Aprovechando que he puesto la colaboración de Harvey Triana en esta página, pues te


voy a poner cómo crear una base desde dentro del propio Visual Basic.
Te recomiendo que veas el xroyecto xaso a xaso, en el que puedes tener el código
completo y otras cosillas que aquí no se van a explicar.
Este es el listado del procedimiento que se encargará de crear la base de datos. xor
supuesto, deberás cambiar los nombres de los campos y tipos de datos a tu
conveniencia, pero de esta forma, tienes algo por dónde empezar.

= .  /       +


l/   


$

l
    
 &
& 

  C (l (   
 '
" C'
"l= $   B
$ 
 '  + 

l/   

%
 :0 . ? H#4
K 

$$ 

l

l .
    +  L%
  ;; + 


  H4

l

  /    %
 +  )%
  H4
l
l$   
  H4  $  0
% + )$ 

  HM
l N  $ 
AAA
l
l=  
 
  #/   ( 
l$  $
 
$
 &
#/  & 
' %
 +
l) .+   


$ 
 % $#
&
#  
' $ & 
 
<
 & 
 
&"
& 

#& 
#
&

l  
$
 &
#/  & 
& $)%
  
#& 
#
&

 &
#/  & 
 %
 "%HMM
#& 
#
&

 &
#/  & 
 $ $ %
* 
#& 
#
&

 &
#/  & 
& $)' $%
  
#& 
#
&

 &
#/  & 
& $)  %
  
#& 
#
&

 &
#/  & 
  
%
'  + 
#& 
#
&

l/  B
$ $  ' 
'
"# =  0I 0
'
"#< 5   
'
"#=  0  
'
"#& 
' 
#'
" #
'
"
l:
 
 # (#

l
l/   $ 
  #/   ( $ 
l $' %  $ 
 % $#
 &
#/  & 
' %
 +
&
#  
' $ & 
 
<
 & 
 
&"
& 

#& 
#
&

l  
$
 &
#/  & 
& $)%
  
#& 
#
&

 &
#/  & 
 %
 "%M4
#& 
#
&

 &
#/  & 
 %
 "%HMM
#& 
#
&

 &
#/  & 
*
%
 "%HMM
#& 
#
&

 &
#/  & 
$7$ %
 "%HMM
#& 
#
&

 &
#/  & 
 $ $ %
* 
#& 
#
&

 &
#/  & 
  %
 +  0
#& 
#
&

l/  B
$ $  ' 
 '
") +l  ( $   
'
"# =  0I 0
'
"#< 5   
'
"#=  0  
'
"#& 
' 
#'
" #
'
"
l:
 +
 
 # (#

l/  
 #/ 

*+" . 

- -$ 
#%.' (  

 

{½ ·          


  (8/Sep)

En este ejemplo, uso un recordset para hacer la búsqueda, el único requisito es que
tenga un campo llamado ID, que será el que se devuelva con el dato encontrado.
La rutina acepta búsquedas hacia delante y hacia atrás, para buscar hacia atrás la
variable buscAtras será True.
Se supone que además tienes una variable (Db) con la base de datos que estás
usando.
Aquí tienes el código...

= . & $ $   05


   +
 +
l . .   6 
' MOKOPQ
     +
 '  +

 $  !   "

'( 5
) 
   /1&!*--ƒ ! -5

 !$  # ! $
  %
 )
'(!$ # &) 
l=  65

'($ ) 
!$ #*. 

'(
' / +!$ ' 
  
' 4-

'(
  
'($ ) 
!$ #*. = .
  
!$ #*.  "

'(
' / +!$ ' 

'(
'(' 4-  234) 
' 4-
l 5  + $
   $     
'($ ) 
!$ #*. 
!$ #*.  "
  
!$ #*. & 
!$ #*. = .

'(

'(
 4
$  ' 

& $ 

Esto es un ejemplo de cómo se llamaría a esta función, usando el diálogo de buscar y


reemplazar:

&&   

'(+$ $ %$&&$$ R$&&$ %$ 
3
$&&$'  ) 
$  E$ 
'( $ ) 
$ && 
l$/ &&/ 
S 05  
 ;$
-$ -###
  . 
l<    
$  
5' $   ";/  $# & 
-'I l-
$ -1l
'(5' ) 
 ;#! $
 #&
& ' -/  5' 
'( ;#! $
 #*$)) 
5' 4-

'(

'(
'(5' 4-) 
 
*+" ))
 
$
  $
  - ";/  $# & 
%.IR.' (  %
$ 


{ë 
   
 
  

(17/Sep)

Aquí te muestro como saber las tablas que existen en una base de datos. De esta
forma puedes buscar si la que necesitas está en la base especificada o bien puedes
usarla para abrir "cualquier" tabla de una BD.
Las rutinas sirven igual para VB3 (ejemplo aparte) y VB o superior.

xara probar esta rutina, en un form, añade un ListBox (List1) y un botón que al
pulsarlo llame a EnumerarTablas, deberás cambiar la localización de la base de datos
por la que sea en tu equipo...

l ,  9  
= .     
    
 
 (

;#/  
     FF#* 
&  $)
'  # (
l ?$  +/ !%
l    
'(
#  4) 
;#

' 
# 

'(
 "
 #/ 
  ) +

 


l= L 9N  
 
 ( 
= .     
 ' )
    

;#/  
     FF#* 
 ' # 
'#*. & 
 < '# &
'('  4) 
;#

' ' 



'(

 #/ 
  ) +

 

Si lo que quieres es sólo comprobar si existe, en lugar de añadirla a un list, haces una
comparación:

'(
# ) 
 "   

'(

{G · 
 


ë a    



 

× (10/Nov/00)

Si has leido el artículo sobre el acceso a bases de datos de Access 2000 usando el DA›
Datacontrol (Acceder a bases de datos de Access 2000 con el VB5), verías que había
un comentario sobre que no se puede usar ese control para acceder al nuevo formato
de las bases de datos de Access 2000...
Eso es cierto para el VB5 y para el ë  a, ya que el DA› Datacontrol que se
incluye con la nueva "revisión" del VB6  reconoce dicho formato, además de que
carga de forma automática la 
3 ë    
  

   
 

 

×.
xero puedes llevarte una sorpresa si, (a pesar de indicar en las referencias que se use
el nuevo motor de bases de datos 3.6), el VB te avisa de que no hay datos que
mostrar...
Esto es cierto si lo que estás probando es un proyecto que ya tuvieras hecho
anteriormente, ya que con los nuevos proyectos no hay problemas... la razón es que,
(si miras con un editor de textos el contenido de un formulario de VB), lo que se
asigna a la propiedad ÷  , para un control existente, es diferente del que se
asigna para uno nuevo... con lo cual, si quieres que tus proyectos pre-Sx funcionen
sin problemas y sin tener que quitar el control existente y añadirlo de nuevo, (que
sería la forma lógica de hacerlo), simplemente tendrás que cambiar la asignación que
se le hace a dicha propiedad:



 ..8% =9
DDDDDD
 + #  ;
/  ;
/ $$$ H444T


 +.8 =L###   
DDDDDDDD
 + #  ;
/  ;
/ $$$ 


Es decir, cambia el "Access" por "Access 2000;"

Espero que este "truquillo" te alivie algún que otro quebradero de cabeza...

Nos vemos
Guillermo


÷ 
    

  

 ÷  a  ×{


À  
  

Si quieres linkar con las otras entregas, desde el índice lo puedes hacer

÷onfío en que no acabes tarumba con tantas vueltas que estoy dando... la entrega
anterior fue sobre las clases en Visual Basic y esta que te ofrezco ahora sigue los pasos
de la entrega 36 sobre el acceso a bases de datos, aunque en esta ocasión sin usar el
data control y con DA›. En otra entrega, veremos lo mismo, pero usando AD›... hasta
que finalmente nos quedemos con ese tipo de acceso a datos, ya que Microsoft no
"quiere" que sigamos usando DA› y lo trata como obsoleto, aunque no lo es tanto...
pero como hay que está a la última en esto de programación, habrá que hacerles
caso... así que también ve preparando el cuerpo, ya que a partir del 2002 la "nueva
ola" será .NET y habrá que ir "concienciándose" de la nueva tecnología... pero no te
preocupes que también podrás aprenderla... para que no te quedes atrás, aunque eso
será en un futuro... talvez no muy lejano...

÷    





  

Empecemos desde el principio... para que te vayas acostumbrando... aunque ya


deberías saber crear tus propios formularios y añadir los controles que te indique...
aunque prácticamente no te lo haya explicado en el curso, es algo que te enseñan en
prácticamente cualquier libro e incluso en los "tutoriales" que incluye el Visual Basic.
Sólo decirte que usando la versión 5÷÷E de Visual Basic no se pueden acceder a datos,
así que tendrás que usar la versión xrofesional o la Empresarial... pero si de verdad te
quieres dedicar a esto de la programación... esa serán las versiones de las que
deberías disponer... y no me preguntes dónde conseguirlas... ya que las venden en
cualquier "tienda" de informática o en los distribuidores que puedes encontrar en
Internet.

Vayamos al tema que nos interesa, ya que no es plan de hacer "marketing" gratuito a
los distribuidores que "no sponsorizan" este curso básico... ¡hum!

÷rea un nuevo proyecto, se creará un proyecto con un formulario.


Añade los siguientes controles para que el formulario quede con el aspecto que te
muestro a continuación, (que es parecido al usado en las entregas anteriores de
acceso a datos):


       


Los controles usados son:


En la parte superior:
cmdMover, un array de 0 a 3
Label1, un array de 0 a 2, Text1, un array de 0 a 2
cmdAdd, cmdActualizar, cmdBorrar
El segundo grupo:
Label2, Text2, ›ption1, ›ption2, cmdBuscar, cmdBuscarSig
Elbotón de salir es: cmdSalir

En el menú xroyecto/Referencias... selecciona 


3 ½{     -
aunque también puedes seleccionar cualquier otra que empiece por Microsoft DA›...
cualquiera de ellas vale... puede que también tengas la 3.6 e incluso la 2.5/3.51
÷ompatibility Library, todo dependerá de la versión de DA› que tengas instalada-
A diferencia de cuando seleccionas un componente, después de cerrar el cuadro de
diálogo no verás nada nuevo en la ventana de herramientas, ya que las referencias no
añaden nuevos controles, pero si que añaden nuevas librerías que exponen objetos
que podemos usar en nuestra aplicación...

·no de esos objetos es el objeto Database, el cual se usará para "mantener" una
referencia a la base de datos, con la cual podremos abrir recordsets que nos
permitirán, entre otras cosas, introducir y modificar los datos de cualquier tabla
incluida en la base de datos a la que queramos acceder...

R 
   

Según la ayuda de Visual Basic,    À  
  
  
     . ·na consulta es... eso...
una consulta... una especie de búsqueda avanzada, en la que podemos indicar varios
criterios de búsqueda... aunque también, como verás pronto, es algo más sencillo que
todo eso. No te preocupes que veremos algunos ejemplos de "consultas".
xara poder manejar los objetos Database y Recordset, hay que crear unas variables
para dichos objetos, por tanto en la sección de declaraciones del formulario
(General/Declaraciones), añade estas líneas:

›ption Explicit

xrivate db As Database
xrivate rs As Recordset

De esta forma tendremos una variable llamada  que apuntará al objeto Database y
otra, llamada
, que apuntará a un objeto del tipo Recordset.
En el evento Form_Load asignaremos los "objetos reales" a esas dos variables.
xara poder abrir la base de datos, necesitamos saber el path en el que se encuentra
dicha base de datos, para ello vamos a crea una constante, en la cual tendrás que
indicar el path correcto, es decir, el sitio exacto en el que se encuentra la base de
datos, en nuestro caso será BIBLI›.MDB, la base de ejemplo que se incluye con Visual
Basic.

÷onst sxathBase As String = "÷:\xrogram Files\Microsoft Visual


Studio\VB98\BIBLI›.MDB"

A continuación abrimos la base de datos usando la función ›penDatabase, la cual


devuelve un objeto de la base de datos recién abierta, uno de los parámetros que
espera recibir dicha función es el path de la base de datos que queremos abrir, en
nuestro ejemplo usaremos el contenido de la constante anterior: sxathBase.

' ÷rear el objeto de base de datos


Set db = ›penDatabase(sxathBase)

A continuación creamos el objeto recordset a partir de una "consulta" realizada a la


base de datos, en este caso lo que queremos "consultar" son T›D›S los campos de la
tabla Authors:

' ÷rear el recordset con la tabla que queremos manipular


Set rs = db.›penRecordset("SELE÷T * FR›M Authors", db›penDynaset)

La constante  
 le indica al método   
 que lo que
queremos asignar a la variable
, (de tipo Recordset), es del tipo Dynaset, este tipo
de recordset permite mostrar y modificar los datos asignados a dicho recordset;
además de este tipo de recordset, existen otros los cuales sólo se pueden usar para
"recorrer" los datos o mostrarlos, si así lo prefieres, pero no permiten modificarlos, ese
tipo de recordset también lo veremos en esta misma entrega.

·na vez que tenemos la variable


, podemos acceder al contenido de la tabla Authors
tal y como lo haciamos antes con el control Data. xara que te hagas una idea,

tendrá el mismo funcionamiento que el que tenía {  


 en los ejemplos
de las entregas anteriores sobre acceso a datos, en particular las entregas 3 y 35.

÷omo no tenemos un control data, el cual nos permitía movernos por los diferentes
registros de la tabla, en el formulario hay cuatro botones, que se usarán para esa
tarea: movernos tanto al primero, anterior, siguiente o último registro, el código para
hacerlo es el que te muestro a continuación:


= .  $
*. /$U'
"'  + 
   !   "
l
l/
 

&0 &
 $ 
!< %
l 5  )0
%  % 
 $
 
'( #&  
 # &  ) 
 " 

'(
l
l*.  + 
$
 +6  ? 

'('
"4) l  
 #*. & 
  '('
";) l   
 #*. = .
  '('
"H) l+  
 #*.  "
  '('
"L) l6
 #*. 

'(
l
l    
  #.   
'( #&) 
 #*. & 
l  
N
6%. 6
  '( # &) 
 #*. 

'(
l   ) 
$
  %  

'( 4) 
*  ! + 

'(
l
 4

 

Lo primero que hacemos es comprobar si hay datos en el recordset, para ello


comprobamos que ni B›F ni E›F den como resultado un valor verdadero. ÷uando B›F
es True, significa que el recordset está "antes" del primer registro, por otro lado E›F
será True cuando estemos después del final de los registros. ÷  



 
     
  

 
.

A continuación movemos el "puntero" del recordset al registro indicado, según el valor


de Index sabremos que botón se ha pulsado y por tanto que "acción" tenemos que
elegir. En los comentarios puedes ver qué valor corresponde con cada movimiento.

÷omo es posible que el usuario pulse en el botón anterior o siguiente después de estar
al principio o al final respectivamente, tenemos que "controlar" si ya estamos al
principio o al final del recordset para posicionarnos en el registro adecuado.
xor último, si todo ha ido bien, (no se ha producido un error), llamamos al
procedimiento que muestra el contenido del registro activo en las cajas de texto.
Esto último lo hace el procedimiento MostrarRegistro, cuyo código es el siguiente:


= .  *  ! + 
l*  

 + $
l   $
 )05  $
. 75 
l5   

 + $#
ƒ) 
 ";4#& 
' 
 ";;#& 
) 
 ";H#& 
S   

ƒ)

 

Si le echas un vistazo al código de las pruebas con el control Data, notarás que no era
necesario llamar expresamente a un procedimiento para que los datos se mostraran,
esto era así porque el propio datacontrol se encargaba de actualizar la información en
los controles que tenía "enlazados", pero ahora no tenemos un control que
"automatice" esta tarea, así que, tenemos que hacerlo por nuestros medios... por
suerte no es tan difícil.

Ahora vamos a ver los procedimientos de Añadir un nuevo registro, actualizar uno ya
existente y eliminar el registro actual. En el propio código encontrarás la explicación de
que es lo que hace cada línea usada.

El código de Añadir un nuevo registro:

= .  $


/$U
l:
    . + 
ƒ) 
#

 C
l:
+6  "%  5     .

#& 
)  . 
l$7
% 5  +     $
 
#<
 

ƒ)

 

El código de Actualizar el contenido de las cajas de texto en el recordset:

= .  $
$7 /$U
lJ
  $  

$,
 "
ƒ) 
l  
$7 

 $
 %
l)05   

$? 
#

l  $  N $%B5  +  
l#& 
'  ";4R4
l:
 $
.$B( 
l05  ";; .$B% +   . <0
 
 
#& 
)  ";;-
l'
$  :
 $ % $  N $%  
4
#& 
S    ";HR4
l$7 
   $
 
#<
 

ƒ)

 

Y por último el código para eliminar un registro... como siempre, borrar es muy fácil...

= .  $
  /$U
l    + $
l $  5 )0+6  + $.%
l   $  5  )0

  $ 
( 
! $
 
l
l/  5 )0 + % 5  )0%
   
'( # &  #&) 
l     + $
 #   
l
l*.    + 
$
*. /$U4

'(

 

Bien, básicamente estas tareas son prácticamente iguales a las usadas con el
datacontrol, con la salvedad de que hay que mostrar los datos cuando se cambia el
registro activo.
Ahora veremos el código usado para buscar los datos, el cual es también
prácticamente lo mismo que cuando se tenía el datacontrol. Fíjate que la única
diferencia es que en lugar de usar la propiedad Recordset del datacontrol, se usa el
recordset "cargado" con los datos y que está contenido en la variable
.

Este es el código de buscar y buscar siguiente, para lo cual usamos los métodos
FindFirst y FindNext respectivamente.


= .  $
$ /$U
l$     + 5 $ $
$  
$

$ 

 

= .  $
$ +/$U
l$  +  
l$  +    
$   

 

= .  $  0 +    & 
l= $
  $  

$

;VO O4;
l  +    % $  
 + $.
  ! + +
 U U   +
 $    +
l
l' $
 $$? 
  
   !   "
l
l$   $ $
$   $
 
 ;
'( ;# ) 
l/ .   $  

 ""   6 
 ! + "H
l  $' 
$ ' - ! +

'(
'( H# ) 
l  $) 
$ ) U l- "H# "-l

'(
l
ƒ) 
lJ
 $?    %   )$
###
U U#U U
l
'( +  & ) 
l$ 

   $
#*. & 
#&
& $ 
  
l$  
 + $
#&
 "$ 

'(
l ..      )$

l 5     B###
'(#*$)) 
 #/  
*+" "  
$
0 )0
5 
  #
l=$    $
  $? +


#U UU U

'(
l*  

 + $
*  ! + 

ƒ)

 

R÷    

 

Ya hemos visto cómo introducir y modificar registros, también hemos visto cómo
buscar un dato y seguir mostrando el resto de las coincidencias que se vayan
produciendo. xero hay ocasiones en las que a veces es necesario poder ver T›D› el
resultado de la búsqueda, incluso a veces nos interesa buscar más de un dato a la vez.
Eso mismo se puede hacer con FindFirst y FindNext, es decir, podemos buscar en más
de un campo del mismo registro el dato o datos que nos interesa a un mismo tiempo.
xero además de usar recordsets de sólo lectura, podemos acelerar esa tarea de
"obtener" la información que queramos realizando consultas en lugar de ir buscando
uno por uno los datos. Independientemente de cómo hagamos la consulta, siempre
nos quedará el recurso de poder usar los métodos FindXXX para buscar a su vez datos
dentro del resultado de la consulta, ya que al fin y al cabo el resultado de dicha
consulta se almacena en un objeto recordset... ¡que lio! ahora veremos con ejemplos
cómo funciona todo esto.

xara mostrar el resultado de la "búsqueda" o consulta, vamos a usar un control


ListView.
xara añadir un control ListView a nuestro proyecto, primero hay que "añadir" el control
a la barra de herramientas de Visual Basic, para ello, selecciona la opción
÷omponentes del menú xroyecto y del cuadro de diálogo que te muestra, selecciona

  
÷  ÷  
, (pude que a continuación de este nombre te
muestre la versión de Visual Basic, en mi caso, me muestra 6.0, pero también la 5.0
(Sx2), ya que tengo instalado esas dos versiones de VB.
·na vez que has pulsado en Aceptar, verás que se han añadido nuevos controles a la
barra de herramientas (ToolBox), selecciona el que representa al Listview y añadelo al
formulario, mediante código configuraremos la apariencia.
Si quieres puedes crearte un nuevo proyecto para esta "segunda" prueba, ya que,
además de añadir el ListView, también vamos a quitar los botones de búsqueda,
porque no tiene sentido tenerlos... al menos para el propósito de este ejemplo.
El aspecto del formulario sería el siguiente:




   
 
     

El código para configurar el ListView en tiempo de ejecución para mostrar la


información de la tabla Authors de la base de datos Biblio.mdb lo pondremos en el
evento Form_Load y es el siguiente:

ƒ) C;
l 
. C5 5  
   
# C.C!  
l   B 
  $?   

#J 
   
l   
 
($ 

. C
# 
.C* 
l:
$ $ 
#/ 
#

%%' %P44
#/ 
#

%% %HQ44
#/ 
#

%%: $ %;M44%.C/ !+)



ƒ)

Ahora la búsqueda sólo se hará por el nombre del autor y se mostrarán en la lista
todos los autores que coincidan con los datos que queremos buscar. El código del
botón Buscar sería el siguiente:


= .  $
$ /$U
l*  
  . C
 $    +
 !! $
 
 ' 
l
l&  $

$ 
l $    
 0    $($
  
 
$   /1&!*) ƒ ! ) 'I l- "H-l
! !S) 
l/   $
 
 $% $  
($ 
l 

($ %
B5  

 0 $
 !
# ! $
 $ %
 )
l/  5 )0
   $
 
ƒ)!
l  )0
###
'(#&
# &) 
*+" )  $  

$

  
l*  
)

 C;#' #/  
#*. & 
 ƒ) # &
  C;#' #

%%#& 
' -

# ' ;#& 
) -
# ' H#& 
S   -
#*.  "


'(

ƒ)

 

En otra ocasión veremos cómo "diseñar" un formulario para consultas con distintas
opciones de búsqueda, así como para búsqueda en múltiples campos.

En la próxima entrega veremos el código que habría que usar para hacer esto mismo
pero usando AD›.
Así que, paciencia y a ser buenos.

Nos vemos
Guillermo

Potrebbero piacerti anche