Académique Documents
Professionnel Documents
Culture Documents
Una vez creado el objeto, se puede acceder a sus propiedades pulsando en el botn derecho del `mouse y seleccionando la opcin `Propiedades o bien, pulsando la tecla F4.
Cuando el programa se est ejecutando, el resultado de hacer click sobre el botn programado ser el sacar un mensaje por pantalla de la manera siguiente:
La creacin de objetos, el establecimiento de sus propiedades y la programacin de sus eventos se realiza cuando se est diseando el proyecto, esto es en tiempo de diseo y el resultado de la labor de diseo y programacin se pone de manifiesto cuando se ejecuta el programa, esto es en tiempo de ejecucin. Para ejecutar un programa que se est diseando se selecciona la opcin de men `Ejecutar > `Iniciar, o pulsando la tecla F5. Cada aplicacin que se empieza a desarrollar es un proyecto que comprende otras componentes ms sencillas como los formularios y los mdulos (conjuntos de
En esta pantalla hay un men, una barra de herramientas para acceso a algunas de las opciones ms usuales del men y un cuadro de controles disponibles para ser usados en el proyecto. Los controles inicialmente cargados en este cuadro NO son todos los disponibles en Visual Basic, existe la posibilidad de acceder a nuevos controles para su uso en el proyecto, para ello hay que usar la opcin de men `Proyecto> `Componentes desplegndose un cuadro que permite insertar los nuevos controles que se quieran utilizar.
Cuando se ha terminado la programacin de la aplicacin hay que crear el programa ejecutable para ser distribuido e instalado en los PCs que vayan a usar dicho programa. Para crear el fichero ejecutable con extensin .exe se usa la opcin de men `Archivo > `Crear *.exe.
Declaracin y mbito de las variables. Declarar una variable consiste en avisar al programa de la existencia de la misma, dndola un nombre y un tipo. La declaracin de variables es aconsejable pero no obligatoria salvo que se fuerce a Visual Basic a declarar todas las variables mediante la sentencia Option Explicit al principio de cada mdulo. Las variables tienen un mbito que delimita las partes del programa desde donde se pueden usar, as hay variables de tipo local y variables de tipo global. Las variables locales son aquellas que estn definidas dentro de un procedimiento o funcin y slo son accesibles en ese procedimiento o funcin donde se definieron, as una variable local es reinicializada cada vez que se entra en el procedimiento. Las variables de tipo global son aquellas que son accesibles desde cualquier parte del programa. Para hacer que una variable sea global, hay que declararla en la parte general de un mdulo *.bas o de un formulario de la aplicacin usando la palabra Public. Para acceder a las variables definidas como pblicas en un formulario hay que especificar el formulario en el que fueron creadas pero si se definen en un mdulo no es necesario, basta con el nombre para hacer uso de ellas. La declaracin de variables se realiza de la siguiente forma: { Dim / Static / Private / Public ] nombreVariable as Tipo. Ej: Dim Letra as String Static Permanente as Integer
10
11
Si una variable se usa sin haberla declarado previamente, toma por defecto el tipo Variante que se adapta a la informacin o dato que se toma en cada momento, es pues un tipo muy flexible pero su uso debe restringirse pues ocupa ms memoria y requieren ms tiempo de CPU que el resto de variables. Recordemos no obstante que se puede forzar a Visual Basic a declarar todas las variables usando la sentencia Option Exp Option Explicit. Las restricciones para poner el nombre a una variable son las siguientes: 1.-Debe empezar por una letra 2.-No puede tener ms de 255 caracteres 3.-El nombre debe ser nico en su campo de visibilidad (procedimiento, mdulo, etc.) 4.- No puede ser una palabra reservada. e) Operadores. En la siguiente tabla se representan operadores soportados por Visual Basic, usados para la realizacin de operaciones aritmticas, lgicas, relacionales, etc.
12
13
En la representacin anterior, si se cumple la primera condicin, es decir condicion1 = True, entonces el programa continua su ejecucin por el Grupo1 de Sentencias, si no se cumple, pasa a evaluar condicion2, y si es cierta se ejecuta el Grupo 2 de Sentencias y si es falsa evala condicion3 y as se contina hasta el encontrar un Else If (puede haber tantos como se precisen) que contenga una condicin verdadera para ejecutar su grupo de sentencias. Si ninguna condicin de las evaluadas es cierta, se ejecuta el Grupo de Sentencias de la clusula Else. En esta sentencia de control las nicas clusulas obligatorias son If Then pudindose prescindir si es necesario de Else, Else If Then y End If
14
15
En la representacin anterior expresion es una expresin numrica o alfanumrica y etiqueta1, etiqueta2, etc., puede adoptar las formas siguientes: 1.2.3.4.expresion, expresion,...., expresion (de 1 a n veces) expresion To expresion Is operador de relacin expresion combinacin de las anteriores separadas por comas.
En el siguiente ejemplo se muestra una sentencia Select Case en la que se usan las cuatro formas anteriores.
f.3) Sentencia FOR.....NEXT: La sentencia For da lugar a un bucle, y permite ejecutar un nmero de sentencias un cierto nmero de veces. Su forma general es:
16
Este tipo de bucles se usan principalmente para recorrer un rango discreto de valores. Estos bucles son especialmente tiles para recorrer matrices. El funcionamiento es el siguiente: primero se asigna el valor de la expresion1 a la variable y se comprueba si su valor es mayor o menor que expresion2. En caso de ser menor se ejecutan las Sentencias y una vez ejecutadas la variable se incrementa en el valor de expresion3 o en 1 si no hay Step, volvindose a efectuar la comparacin entre la variable y la expresion2 y as sucesivamente hasta que el valor de la variable es mayor que expresion2 y en ese caso se sale del bucle. Todo lo anterior se produce en el caso de ser expresion3 un valor positivo, si fuera negativo las sentencias se ejecutan cuando el valor de la variable es mayor que el de expresion2 y despus de cada ejecucin se decrementa su valor segn lo especificado en expresion3.
17
En esta primera forma si condicin es True se ejecuta el grupo de sentencias y se sigue ejecutando hasta que condicin sea False. La evaluacin de la condicin se realiza antes de ejecutar las sentencias, por tanto el rango posible de veces que se ejecutan estas ser de 0 a n, es decir, puede que el bucle no llegue a ejecutarse nunca.
En esta segunda forma, primero se ejecuta una vez el grupo de sentencias y luego se va evaluando condicin, repitindose la ejecucin de las sentencias mientras sea True, por tanto con esta forma el bucle al menos se ejecuta una vez, es decir su rango ser de 1 a n.
18
19
En esta primera forma si condicin es False se ejecuta el grupo de sentencias y se sigue ejecutando hasta que condicion sea True. La evaluacin de la condicin se realiza antes de ejecutar las sentencias, por tanto el rango posible de veces que se ejecutan estas ser de 0 a n, es decir, puede que el bucle no llegue a ejecutarse nunca.
En esta segunda forma, primero se ejecuta una vez el grupo de sentencias y luego se va evaluando condicion, repitindose la ejecucin de las sentencias mientras sea False, por tanto con esta forma el bucle al menos se ejecuta una vez, es decir su rango ser de 1 a n.
20
Nota. En los bucles For, Until, While es posible establecer una salida del bucle al margen de las dadas en las condiciones para recorrer el mismo, esto se hace con la sentencias Exit For, Exit Do.
21
NombreFuncion es el nombre de la funcin que se usa para invocarla, parametros son los argumentos de la funcin que se han de pasar cuando se invoca, se indica encerrado entre corchetes [ ] puesto que es opcional, puede haber funciones con argumentos y otras sin argumentos. As Tipo, es el valor que retorna la funcin, tambin es opcional puesto que hay funciones que no devuelven ningn valor. Dentro del grupo de sentencias que contiene la funcin puede existir una salida de la misma mediante Exit Funcition. Tambin suele existir una asignacin al nombre de la funcin de una expresin, y esta expresin ser el valor devuelto por la funcin.
La funcin anterior suma los parmetros a y b, as esta funcin puede ser llamada desde otra parte del programa de la siguiente forma: Dim Resultado as Integer Resultado = Suma (7,8) Msgbox Resultado
22
23
NombreProcedimiento es el nombre que se usa para invocarlo, parametros son los argumentos que se pasan al procedimiento y son opcionales, pudiendo no existir. Al igual que en el caso de las funciones, puede haber una sentencia dentro del cuerpo del procedimiento que provoque la salida del mismo, que sera Exit Sub. A diferencia de una funcin, los procedimientos no pueden ser usados en una expresin puesto que no devuelven ningn valor, simplemente realizan una tarea, as la forma de llamar un procedimiento sera:
Para sacar por pantalla la raz cuadrada de un nmero usando este procedimiento se puede hacer as: Dim Valor as Double Valor = 48 Raizcuadrada Valor `El resultado obtenido es presentar un mensaje en pantalla con la raiz `cuadrada de 48. Si realizamos la llamada al procedimiento en una expresin, entonces da error. Lo siguiente sera errneo: Dim Valor as Double Dim Resultado as Double Valor = 48 Resultado = RaizCuadrada Valor `No se puede usar un procedimiento en una asignacin. Visual Basic tiene definidas una serie de funciones que pueden resultar de utilidad, algunas de ellas se presentan en las tablas siguientes: Tabla de Funciones para el manejo de caracteres.
24
25
Para ir aadiendo opciones al men se va rellenando la caja de texto Caption en la que se indica el identificador con el que se ver la opcin en la pantalla, tambin se rellena la caja de texto Name en la que se indica el nombre que tiene la opcin (que ser el que se usa para programar las acciones que ocurran al pulsar sobre ella, al ser una opcin de men conviene que empiece por mnu seguido de mas letras, la primera en mayscula) y una vez hecho esto si se quiere aadir otra opcin se pulsa en el botn `Siguiente y se procede de la misma forma y as sucesivamente. Procediendo de la manera descrita anteriormente, se crearn mens simples, es decir, que no tienen submens asociados. Para crear submens, simplemente se aaden, tal como se describe en el prrafo anterior, nuevas opciones y se sangran pulsando en la flecha derecha, as se indica a Visual Basic que el elemento es parte de un submen del elemento por encima de l. El nmero mximo de niveles permitido es de cuatro. En ocasiones resulta conveniente separar dentro de un submen distintas opciones del mismo, para ello se crea entre las opciones que se desee separar, una nueva opcin del submen y en la propiedad Caption se escribe un guin y se le da cualquier nombre en Name, as se habr generado la separacin entre las opciones. Dentro del cuadro de men tambin se pueden marcar o desmarcar las opciones Enabled Enabled y Visible, lo que har que la opcin est Activa y Visible si las opciones estn marcadas o Inactiva Invisible segn la opcin que est desmarcada. En principio el nombre Name, que se asigna a cada opcin de men debe ser el mismo,
26
27
Cuando se inicie la aplicacin si en la primera caja de texto ponemos el nmero 5 y en la segunda el 6, entonces al pulsar el botn de suma en la tercera se rellenar con el nmero 11 que es la suma de los dos anteriores. Ahora si lo que escribimos es por ejemplo "PEPE" en la primera caja de texto y 7 en la segunda, entonces se
28
29
La primera sentencia del procedimiento anterior On Error Goto Indice, le est indicando al programa que en el caso de encontrarse algn error de ejecucin, el que sea, se vaya a la etiqueta marcada con el nombre Indice: y ejecute las sentencias que contiene. En este caso la etiqueta marcada con el nombre Indice la hemos situado al final del procedimiento y despus del nombre se ponen dos puntos (:) para indicar que se trata de una etiqueta. La programacin que se ha escrito es en este caso muy simple, y lo que hace es detectar que si el nmero del error (los errores en Visual Basic tienen asociado un nmero) es distinto de cero (si el nmero de error es cero eso indica que no hay error), es decir, si se ha producido un error lance un mensaje por pantalla con la indicacin del nmero de error cometido y la descripcin que Visual Basic hace del mismo, y una vez visto el mensaje se continua con la aplicacin, es decir no nos saca del programa. El mensaje que se visualiza es el que se muestra en la imagen siguiente:
30
31
Este control nos permite acceder a distintos tipos de bases de datos (Access, dBase, Paradox, etc.). Las propiedades ms importantes del control data a las que se accede seleccionando el control y pulsando la tecla de funcin F4 son: 1.- Connect: Se indica el tipo de base de datos con la que se va a trabajar, en nuestro caso usaremos Access. 2.- DataBaseName: Se especifica el lugar y el nombre de la base de datos a la que se quiere acceder. Ej.: C:\VB6\Biblio.mdb 3.- DataSource: Indica el conjunto de registros (tabla, consulta o instruccin SQL) con la que se va a trabajar. Una vez establecidas estas tres propiedades del control data (el tipo de base de datos, la base de datos, y el conjunto de registros -tabla, consulta o instruccin SQL-) ya podemos acceder a los datos contenidos en los campos de esos registros para trabajar con ellos. Para hacer referencia al conjunto de registros con los que vamos a trabajar se escribe el nombre del control data seguido de un punto (.) y de la palabra reservada Recordset. A continuacin toda la teora de acceso a datos se ir presentando a la vez que se indican los pasos para crear un Ejemplo con control Data que permita entre otras cosas las siguientes: Presentacin en pantalla del contenido de una tabla de una base de datos Access y creacin de controles que nos permitan manipular la misma, movindonos a travs de los registros, eliminando unos, aadiendo otros nuevos, buscando los que cumplan determinadas condiciones, etc., etc....
32
33
34
Una vez hecho esto creamos cuatro botones con las siguientes propiedades: Primer botn: Name: cmdPrimero Caption: Primer Registro Segundo botn: Name: cmdSiguiente Caption: Siguiente Registro Tercer botn: Name: cmdAnterior Caption: Registro Anterior Cuarto botn: Name: cmdUltimo Caption: ltimo Registro
35
Delante de cada caja de texto se creara una etiqueta en la que se escribe el nombre del campo cuyo contenido se muestra.
36
Cuando se est recorriendo un conjunto de registros, un Recordset es interesante detectar los momentos en los que se llega al principio o al final del conjunto, concretamente, en el caso anterior si estamos en el ltimo registro no tendra sentido el pulsar en el botn de `Siguiente Registro o si estamos en el primero hacerlo en el botn de `Registro Anterior. La marca que indica si estamos en el primer registro del Recordset es BOF y la que indica que hemos llegado al ltimo es EOF. En el ejemplo actual sera conveniente tener en cuenta la situacin del registro que estamos visualizando en los casos de ser el primero o el ltimo, lo cual afecta a los botones cmdSiguiente y cmdAnterior, que cambiaran su programacin quedando de la siguiente forma:
La explicacin a este cambio de programacin del botn es: La tabla de datos en Access reserva un registro para indicar que se est al final del fichero, este registro es posterior al ltimo que a nuestros efectos sera vlido, por tanto si estamos en el
37
La explicacin a este cambio de programacin del botn es: La tabla de datos en Access reserva un registro para indicar que se est al inicio del fichero, este registro es anterior al primero que a nuestros efectos sera vlido, por tanto si estamos en el primer registro vlido y nos movemos hacia atrs accedemos al registro que contiene la marca BOF de principio de fichero lo cual no tendra sentido, por tanto en ese caso nos situamos en el primer registro vlido que es donde estbamos antes de mover hacia atrs, para hacerlo se usa el mtodo MoveFirst y luego se indica por pantalla.
38
Al pulsar en el botn cmdAade, se vacan todas las cajas de texto y habr que escribir en ellas los valores correspondientes al nuevo registro que vamos a aadir a la tabla de datos, slo cuando se escriba en alguna de las cajas de texto se realiza efectivamente la adicin del nuevo registro.
Al pulsar el botn cmdElimina, el registro actual, el que se est viendo en ese momento en pantalla es borrado de la tabla de datos mediante el mtodo Delete, pero adems se pone la sentencia datVisitas.Refresh para que refresque el conjunto de datos, y por ello, como estbamos situados en un registro y este ya no existe nos situamos en el primero. Si se van eliminando registros y llega un momento que no hay ninguno, entonces al pulsar en este botn no puede proceder a la eliminacin del registro producindose un error que finalizara la ejecucin de la aplicacin, para evitar lo anterior se usa la sentencia Error que permite manejar el On error que se produce, que en este caso es el que tiene como nmero el 3021. Una forma posible como quedara la programacin de este botn sera ahora:
39
Al producirse un error, el control del programa pasa a las sentencias de la etiqueta Indice, en ese momento si detecta que el error es el 3021, es decir se est intentando borrar un registro y no hay nada que borrar, entonces saca un mensaje por pantalla indicando que la tabla `Personal est vaca, adems hace referencia a la tabla por su nombre porque se lo hemos indicado con datVisitas.Recordset.Name datVisitas.Recordset.Name El mensaje sera como el de la imagen siguiente: .
40
Cuando se crea un control Data, Visual Basic ofrece por defecto el tipo Dynaset. En funcin del tipo de Recordset elegido la forma de tratar los datos (buscar, moverse, etc.) se hace de distinta forma. Las caractersticas ms importantes de los tres tipos son las siguientes: 0- Table: Con este tipo de Recordset slo podemos acceder a una tabla existente en la base de datos, pero NO a una consulta. Los Table son los nicos tipos que soportan ndices, es decir, se puede indicar el ndice de la tabla que vamos a usar y lograr con ello rpidas bsquedas de registros. Cuando se cambian datos, estos estn disponibles para otros usuarios de forma automtica. 1- Dynaset: Conjunto dinmico de registros de una o varias tablas o de una o varias consultas existentes en la base de datos. Una ventaja de Dynaset frente a Table es que podemos crear un conjunto de datos de varias tablas o consultas y no de una nica tabla tal como ocurre con el tipo Table. Una desventaja es que no se pueden usar ndices para las bsquedas.
41
42
Con esto se indica que en el caso de no encontrar el registro, saque un mensaje por pantalla indicndolo y se site en el primer registro, as no saltar el error. Tal como quedara la programacin del botn cmdBuscar, slo se podra realizar la bsqueda de un determinado NIF, lo cual no resultara muy til, para evitar esta situacin hay que crear un mecanismo de entrada de datos que permita al usuario indicar en cada momento el NIF a buscar, para esto se puede crear una nueva caja de texto que podemos llamar txtBusqueda en la que especificar el NIF que se quiere encontrar, entonces la programacin del botn de bsqueda quedara as:
En la programacin del botn, ahora no se indica que busque un NIF concreto y siempre el mismo, sino que lo que busca es lo que se escriba en la nueva caja de texto txtBusqueda. En este momento se puede buscar cualquier NIF usando el
43
En este momento las bsquedas son mucho ms dinmicas puesto que podemos seleccionar distintos ndices y distintos valores para realizarlas. Con esta forma de buscar se accede al primer registro que cumpla la condicin especificada, y los registros quedan ordenados segn el ndice usado. Convendra en el botn anterior usar tambin una sentencia On Error para controlar los distintos errores que se pudieran producir, como el que ocurrira si en txtIndice se indica un nombre de ndice distinto a los que tiene la tabla de datos.
44
Este procedimiento descarga el valor de cada campo en una caja de texto. Lo mismo se podra escribir de una forma ms sencilla, ya que el valor Index que identifica las distintas cajas de texto se corresponde con el lugar que ocupan los campos en la tabla de datos, as aprovechando esta circunstancia, el procedimiento quedara as:
45
En esta nueva forma de escribir el procedimiento hemos usado el bucle For para recorrer los campos de la base de datos y las cajas de texto e ir haciendo la descarga. En ocasiones los campos de las tablas de datos contienen valores Nulos, en ese caso cuando se va a descargar un valor Null en una caja de texto se produce un error, por ello, afinando ms la forma anterior del procedimiento, este quedara as:
En esta nueva forma, antes de realizar la descarga se comprueba si el valor es distinto de Null y en solo en ese caso se realiza no haciendo nada en caso contrario. Para detectar si un campo contiene un valor Null se usa el mtodo IsNull.
46
47
En la programacin de estos botones, en algunos se ha usado On Error para detectar y controlar errores y en otros no, convendra no obstante incluir el controlador de errores en todos ellos.
48
49
Al pulsar este botn se actualizan los valores de la tabla de datos, para ello hemos usado el mtodo Edit y Update entre los cuales hay que indicar las modificaciones de campos para que estas tengan efecto.
50
En el cdigo anterior se usa el bucle For para ir recorriendo todas las cajas de texto y vaciarlas y una vez hecho esto se hace visible el nuevo botn creado para confirmar que se aade el registro. En este momento se rellenan los campos del nuevo registro que se quiere crear y al terminar se pulsa en el botn de confirmacin para hacer efectiva la adiccin del nuevo registro. El cdigo de programa del botn de confirmar quedara as:
En este control se vuelve a usar el bucle For para ir aadiendo a cada campo lo indicado en las cajas de texto y este bucle est contenido entre los mtodos AddNew AddNew y Update necesarios para que el proceso funcione de manera correcta. Una vez aadido el registro el propio botn de confirmacin se autoesconde.
51
En el cuadro anterior se pulsa en el botn Examinar y se busca el archivo dbgrid32.ocx dbgrid32.ocx con lo que se dispondr de una nueva opcin dentro del cuadro, que hay que seleccionar y que es la siguiente:
Una vez seleccionada esta, se dispone en el cuadro de controles del proyecto de un nuevo elemento para crear controles Dbgrid en los formularios. El control Dbgrid Dbgrid presenta el contenido del control Data al que est asociado lo que se determina en la propiedad DataSource del Dbgrid. En el proyecto que se est desarrollando podemos crear un control Dbgrid al que llamamos dbDatVisitas y se asocia al control Data datVisitas, con ello se visualiza en el control recin creado la tabla de datos Personal con todos sus campos. Si se quiere ver slo alguno de los campos de la tabla de datos o se quiere cambiar la posicin en que se visualizan, entonces, entiempo de diseo se pulsa en el botn derecho del ratn sobre el control y seleccionando `Propiedades accedemos a un cuadro para personalizar el aspecto del control dbgrid, como el de la siguiente imagen:
52
El aspecto de un control dbgrid presentando los datos del control Data al que est asociado ser como el que sigue:
Si se desea que No se puedan cambiar los datos de los campos directamente, es necesario poner la propiedad AllowUpdate a False.
53
Con esto, al hacer doble click en tiempo de ejecucin sobre dbDatVisitas, en primer lugar se hace una llamada al procedimiento `Edicion que edita en las cajas de texto los valores de los campos del registro en el que estemos situados, que ser aqul sobre el que se hizo el doble click, y luego se hace Visible el control fraData y se esconde dbDatVisitas para situarnos en la pantalla de edicin del registro. Toda la ejecucin del ejercicio se ha realizado hasta ahora a partir de un control Data Data con la propiedad RecordsetType a Table, y accediendo a una tabla ya creada dentro de una base de datos. Ahora vamos a usar un nuevo control Data con la propiedad RecordsetType en Dynaset para acceder ya no a una tabla sino a una `consulta de una tabla. En la base de datos Visitas.mdb, adems de la tabla de Personal, hay otra tabla llamada Visitas. Supongamos que esta base de datos se est usando para llevar el control de las personas que visitan un museo, dando de alta en la tabla Personal a los nuevos visitantes y en la tabla Visitas las veces que cada visitante accede al museo, as las tablas estarn relacionadas por un campo comn, el Nif, de esta forma cuando un visitante llega al museo se teclea su Nif, accediendo a sus datos personales en caso de haber realizado alguna visita anterior y dando de alta los datos de la nueva visitas. Si por el contrario es la primera visita realizada entonces hay que dar de alta tanto los datos personales como los de la visita. No podr aadirse ningn registro a la tabla Visitas con un determinado Nif, mientras este Nif no est dado de alta en la tabla Personal. Los campos de la tabla Visitas, sern: Nif, PrecioVisita, DuracinVisita, FechaVisita,
54
55
Con el nuevo botn cmdConsultaVisitas se accede a las visitas realizadas a lo largo del tiempo por una determinada persona, estas visitas se presentarn en pantalla a travs de un control dbgrid asociado a un nuevo control Data que llamaremos datConsulta, en el que en su propiedad RecordsetType se pondr Dynaset y se dejar en blanco la propiedad RecordSource ya que ahora no se conectar con una tabla o consulta ya definida, sino que esta conexin se establecer en el cdigo del botn cmdConsultaVisitas. En el botn cmdConsultasVisitas se establecer una cadena de caracteres, que se pasar a la propiedad RecordSource del control Data para acceder a la consulta de datos que en cada momento se pida. La cadena creada, en realidad es una instruccin en el lenguaje de bases de datos SQL, por ello es necesario conocer algo de este lenguaje, concretamente la sentencia Select: La sentencia Select permite consultar informacin de una tabla pudindose seleccionar una, varias o todas las columnas (campos) de la tabla. Puede incluir varias clusulas opcionales y como mnimo debe incluir la clusula obligatoria From a travs de la cual se especifica la tabla o tablas a las que se va a acceder para obtener sus columnas (campos). Puede incluir tambin la clusula Order By que indica la columna o columnas que se van a usar para ordenar los datos. Puede adems incluir la clusula Where para especificar la condicin que han de cumplir los registros que forman parte de la consulta.
56
57
Todas las sentencias del botn aparecen comentadas en el propio cdigo, obsrvese no obstante, que en la creacin de la cadena consulta, primero se escribe una parte entre comillas dobles, luego se concatena con el valor que tenga la caja de texto txtPersonal(0) y luego se vuelve a concatenar con otra parte escrita directamente entre comillas dobles. Lo anterior ha de ser as para especificar la condicin que ha de cumplir la consulta, que no es otra que el campo Nif de la tabla Visitas sea igual al campo Nif del registro de la tabla Personal actual, que es el que en ese momento contiene la caja de texto txtPersonal(0). La cadena Consulta se crea pues, concatenando las tres partes siguientes: 1.- "SELECT * FROM VISITAS WHERE NIF = `" Se escribe la primera parte de la sentencia entre comillas dobles, obsrvese que el ltimo carcter encerrado entre comillas dobles es una comilla simple (`) para que al concatenar todas las partes el valor del Nif aparezca encerrado entre comillas simples. 2.- txtPersonal(0) Esta segunda parte vara en funcin del valor que contenga la caja de texto txtPersonal(0), cuyo contenido es lo que se concatenar para crear la cadena. 3.- "' ORDER BY FechaVisita" Tercera parte escrita al igual que la primera entre comillas dobles en la que el primer carcter es una comilla simple (), para encerrar el valor del Nif. Con todo lo anterior, al pulsar en el botn cmdConsultaVisitas, se accede a un
58
59
As, para referirnos por ejemplo al campo Nombre de la tabla de personal, en el ejemplo lo hemos hecho de la siguiente forma:
Tambin Visual Basic incorpora otra tecnologa de acceso a datos llamada ADO que se podra haber usado para realizar este ejercicio. El motivo fundamental por el que se ha elegido usar el control Data de DAO como elemento fundamental para desarrollar este ejercicio es que este es un curso de iniciacin a la gestin de bases de datos desde Visual Basic, y todo lo aprendido aqu ser de utilidad si se desea desarrollar aplicaciones con DAO sin usar apenas el control Data o utilizando ADO. NOTA: Con este captulo hemos llegado al final del curso.
60