desarrollo de la aplicación car...

14
148 Generar un programa con Microsoft Visual Basic 2005 Express Desarrollo de la aplicación Car Tracker Ahora continuará con el desarrollo de la aplicación Car Tracker. En primer lugar, debe crear un conjunto de datos que le proporcionará todas las características de enlace de datos necesarias para la aplicación Car Tracker. Ahora que las tablas están establecidas, puede configurar el conjunto de datos con todos los elementos que acaba de agregar a la base de datos. Antes de crear un conjunto de datos, debe saber qué es un conjunto de datos. Se puede definir un conjunto de datos como una representación en memoria de una o más tablas y se usa para almacenar las filas almacenadas devueltas por la consulta enviada a la base de datos. Entonces puede agregar, eliminar o actualizar filas en memoria. Cuando haya terminado el usuario, puede enviar, guardar o confirmar los cambios en la base de datos. El archivo CarTrackerDataSet.xsd se denomina archivo de Definición de esquema XML. El archivo .xsd garantiza que los datos estarán estructurados y respetarán el esquema. Utilizaremos este archivo más adelante en el proyecto, cuando expliquemos el enlace de datos. Para crear un conjunto de datos aprenderá a utilizar la ventana Orígenes de datos. Esta ventana proporciona acceso a todos los orígenes de datos configurados en la aplicación. Consulte la figura 8-16 para ver dónde se encuentra la ventana Orígenes de datos. Si no ve la ventana Orígenes de datos, puede obtener acceso a ella haciendo clic en el menú Datos y seleccionando Mostrar orígenes de datos. Si Mostrar orígenes de datos no aparece en el menú Datos, asegúrese de que ha cerrado todas las cuadrículas de datos de la tabla CarTracker y de que Form1 es visible. PARA CREAR UN CONJUNTO DE DATOS 1 En la ventana Orígenes de datos, haga clic en el vínculo Agregar nuevo origen de datos o haga clic en el botón Agregar nuevo origen de datos de la barra de herramientas. Aparecerá el Asistente para la configuración de orígenes de datos. 2 La primera pantalla del Asistente para la configuración de orígenes de datos le permite elegir el tipo de origen de datos que desea crear. Puede elegir una base de datos, un servicio Web o uno de sus objetos. Acaba de crear una base de datos para la aplicación Car Tracker, por lo que la elegirá en Tipo de origen de datos. Seleccione Base de datos y, a continuación, haga clic en Siguiente. En la próxima pantalla elegirá la conexión de datos. CarTracker.mdf debe estar ya seleccionada. Cuando creó la base de datos de SQL Server Express CarTracker en el proyecto, se creó automáticamente una conexión de datos. Puede hacer clic en el signo más (+) de la parte inferior del cuadro de diálogo para ver la apariencia que tiene la cadena de conexión. Esta cadena de conexión define cómo se conecta la aplicación a la base de datos. La ventana Orígenes de datos podría aparecer en cualquier otro lugar del IDE. Puesto que el entorno IDE es totalmente adaptable a sus preferencias, puede personalizar las ventanas y fichas para que aparezcan donde crea que le resultarán más productivas. NOTA Figura 8-16 La ventana Orígenes de datos X1165138BDY.indb 148 X1165138BDY.indb 148 21/12/05 11:38:35 21/12/05 11:38:35

Upload: others

Post on 25-Oct-2020

19 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Desarrollo de la aplicación Car Trackermapaches.itz.edu.mx/~mbarajas/prog2inf/ejercicioADO1b.pdf · DataGridView coloca todos los campos del conjunto de datos en un for-mato de tabla

148 Generar un programa con Microsoft Visual Basic 2005 Express

Desarrollo de la aplicación Car Tracker

Ahora continuará con el desarrollo de la aplicación Car Tracker. En primer lugar, debe crear un conjunto de datos que le proporcionará todas las características de enlace de datos necesarias para la aplicación Car Tracker. Ahora que las tablas están establecidas, puede configurar el conjunto de datos con todos los elementos que acaba de agregar a la base de datos.

Antes de crear un conjunto de datos, debe saber qué es un conjunto de datos. Se puede definir un conjunto de datos como una representación en memoria de una o más tablas y se usa para almacenar las filas almacenadas devueltas por la consulta enviada a la base de datos. Entonces puede agregar, eliminar o actualizar filas en memoria. Cuando haya terminado el usuario, puede enviar, guardar o confirmar los cambios en la base de datos. El archivo CarTrackerDataSet.xsd se denomina archivo de Definición de esquema XML. El archivo .xsd garantiza que los datos estarán estructurados y respetarán el esquema. Utilizaremos este archivo más adelante en el proyecto, cuando expliquemos el enlace de datos.

Para crear un conjunto de datos aprenderá a utilizar la ventana Orígenes de datos. Esta ventana proporciona acceso a todos los orígenes de datos configurados en la aplicación. Consulte la figura 8-16 para ver dónde se encuentra la ventana Orígenes de datos. Si no ve la ventana Orígenes de datos, puede obtener acceso a ella haciendo clic en el menú Datos y seleccionando Mostrar orígenes de datos. Si Mostrar orígenes de datos no aparece en el menú Datos, asegúrese de que ha cerrado todas las cuadrículas de datos de la tabla CarTracker y de que Form1 es visible.

PARA CREAR UN CONJUNTO DE DATOS

1 En la ventana Orígenes de datos, haga clic en el vínculo Agregar nuevo origen de datos o haga clic en el botón Agregar nuevo origen de datos de la barra de herramientas. Aparecerá el Asistente

para la configuración de orígenes de datos.

2 La primera pantalla del Asistente para la configuración de orígenes de datos le permite elegir el tipo de origen de datos que desea crear. Puede elegir una base de datos, un servicio Web o uno de sus

objetos. Acaba de crear una base de datos para la aplicación Car Tracker, por lo que la elegirá en Tipo de origen de datos. Seleccione Base de datos y, a continuación, haga clic en Siguiente.

En la próxima pantalla elegirá la conexión de datos. CarTracker.mdf debe estar ya seleccionada. Cuando creó la base de datos de SQL Server Express CarTracker en el proyecto, se creó automáticamente una conexión de datos. Puede hacer clic en el signo más (+) de la parte inferior del cuadro de diálogo para ver la apariencia que tiene la cadena de conexión. Esta cadena de conexión define cómo se conecta la aplicación a la base de datos.

La ventana Orígenes de datos podría aparecer en cualquier otro lugar del IDE. Puesto que el entorno IDE es totalmente adaptable a sus preferencias, puede personalizar las ventanas y fichas para que aparezcan donde crea que le resultarán más productivas.

N O TA

Figura 8-16 La ventana Orígenes de datos

X1165138BDY.indb 148X1165138BDY.indb 148 21/12/05 11:38:3521/12/05 11:38:35

Page 2: Desarrollo de la aplicación Car Trackermapaches.itz.edu.mx/~mbarajas/prog2inf/ejercicioADO1b.pdf · DataGridView coloca todos los campos del conjunto de datos en un for-mato de tabla

Capítulo 8: Administrar los datos 149

3 Haga clic en Siguiente en la pantalla Elegir la conexión de datos.

La pantalla siguiente del asistente le pregunta si desea guardar esta cadena de conexión en el archivo de configuración de la aplicación. Como vio en la pantalla anterior, sabe dónde está almacenada la base de datos. Pero puede cambiar de opinión e implementar el archivo en otra ubicación. Si lo hace, no deseará modificar el código fuente y volver a compilarlo. Incluir la cadena de conexión en el archivo de configuración de la aplicación es, en realidad, una práctica recomendada. Este procedimiento le ofrece la ventaja de sólo modificar la imagen y reiniciar la aplicación sin necesidad de recompilar, con el fin de captar automáticamente los cambios efectuados en la cadena de conexión y conectar con esa nueva ubicación.

La configuración de la aplicación se guarda en un archivo XML cuyo nombre se forma con el nombre del archivo ejecutable de la aplicación al que se le agrega .config a continuación del mismo. En la aplicación, el archivo se llama CarTracker.exe.config, aunque sólo verá app.config mientras trabaja en Visual Studio. Si desea guardar la cadena de conexión, también se le pide que proporcione un nombre de variable que se guardará en el archivo.

4 Asegúrese de que la casilla de verificación Sí, guardar la conexión como está activada y haga clic en Siguiente.

5 En la pantalla siguiente seleccionará todas las tablas de la base de datos que se incluirán en el conjunto de datos y asignará un nombre al conjunto de datos. En su caso necesitará todas las tablas,

por lo que debe expandir el nodo Tablas y seleccionar todas las tablas. Deje el Nombre del conjunto de datos establecido en CarTrackerDataSet y haga clic en Finalizar.

El resultado de la configuración del conjunto de datos es un archivo .xsd o un documento de esquema XML que definirá la estructura interna del conjunto de datos. Recuerde que un conjunto de datos es una representación en memoria de una o varias tablas de la base de datos. ADO.NET usará este archivo de esquema cuando trabaje con la aplicación. Mientras ejecuta la aplicación, el usuario podrá agregar, eliminar o modificar filas del conjunto de datos (en la memoria del equipo). Los cambios permanecerán en memoria hasta que el usuario confirme los cambios en la base de datos, que en este ejemplo es el archivo CarTracker.mdf.

X1165138BDY.indb 149X1165138BDY.indb 149 21/12/05 11:38:3721/12/05 11:38:37

Page 3: Desarrollo de la aplicación Car Trackermapaches.itz.edu.mx/~mbarajas/prog2inf/ejercicioADO1b.pdf · DataGridView coloca todos los campos del conjunto de datos en un for-mato de tabla

150 Generar un programa con Microsoft Visual Basic 2005 Express

6 En el Explorador de soluciones, haga doble clic en el archivo .xsd denominado CarTrackerDataSet.xsd. Como se puede ver en la Figura 8-17, el resultado de crear el conjunto de datos es parecido al diagrama

de la base de datos creado anteriormente. Su diagrama podría ser distinto dependiendo de la resolución de la pantalla y de cómo personalizara el IDE.

Sin embargo, hay algunas diferencias notables. Verá las mismas columnas que ha creado en la base de datos física, pero en la parte inferior de cada una de ellas, verá métodos: Fill, GetData(). Estos métodos son específicos del conjunto de datos y el código de ADO.NET generado por Visual Studio los usará para enlazar los datos a controles de Windows Forms, ¡controles que no existen todavía!

7 Vuelva a la ventana Orígenes de datos y expanda las tablas del conjunto de datos. Verá la representación de las tablas en memoria y, además, que cada columna tiene un pequeño icono que

le indica de qué tipo es. Estos iconos le pueden resultar familiares porque son parecidos a los controles del cuadro de herramientas. Consulte la Figura 8-18 para obtener una visión rápida de las tablas del conjunto de datos Color y Listing y los tipos de sus columnas.

8 Cierre la representación gráfica del conjunto de datos haciendo clic en la X situada en la esquina de la superficie del diseñador.

9 En el Explorador de soluciones, haga doble clic en el archivo Form1.vb para abrir la superficie del diseñador para el formulario Form1.

Figura 8-17 Representación gráfica del conjunto de datos CarTracker

Figura 8-18 Vista de las tablas de los conjuntos de datos Color y Listing desde dentro de la ventana Orígenes de datos

X1165138BDY.indb 150X1165138BDY.indb 150 21/12/05 11:38:3821/12/05 11:38:38

Page 4: Desarrollo de la aplicación Car Trackermapaches.itz.edu.mx/~mbarajas/prog2inf/ejercicioADO1b.pdf · DataGridView coloca todos los campos del conjunto de datos en un for-mato de tabla

Capítulo 8: Administrar los datos 151

10 En la ventana Orígenes de datos, seleccione el nodo Listing del conjunto de datos y haga clic en la punta de la flecha de la lista desplegable que aparece junto a la palabra Listing. Se le ofrecerán dos

opciones: DataGridView o Details. DataGridView coloca todos los campos del conjunto de datos en un for-mato de tabla o de cuadrícula con múltiples filas, mientras que Details presenta todos los campos del con-junto de datos de fila en fila, con todos los campos como controles individuales. Para este ejemplo, selecci-one Details.

También verá que cada uno de los miembros del conjunto de datos tiene la misma flecha de lista desple-gable, que le permite cambiar qué controles se colocarán en el formulario cuando se arrastre la tabla. Al permitirle elegir los controles antes de arrastrar la tabla del conjunto de datos hasta el formulario se evita tener que diseñar la interfaz de usuario manualmente pieza a pieza.

11 Cambie los campos ColorID, MakeID y CarTypeID al tipo ComboBox haciendo clic en la flecha desple-gable que aparece junto a cada columna y seleccionando ComboBox.

12 Seleccione el nodo Listing haciendo clic en él, y arrástrelo y colóquelo en la superficie del diseñador del formulario Form1.

13 Modifique ahora el tamaño del formulario como lo hizo en capítulos anteriores, cambiando la propiedad Size del formulario. Cambie el tamaño del formulario

un tamaño de manera que su propiedad Width sea 450 píxeles y Height sea 550 píxeles.

14 Mueva todos los controles para que la primera etiqueta quede en la esquina superior izquierda, justo debajo de la franja de herramientas. Consulte la Figura

8-19 para ver una aproximación de cómo deberían quedar colocados los controles.

Figura 8-19 Formulario Car Tracker cambiado de tamaño después de mover todos los controles

Dependiendo de la resolución de la pantalla, puede que sea necesario desplazarse para ver todos los controles.

A D V E R T E N C I A

X1165138BDY.indb 151X1165138BDY.indb 151 21/12/05 11:38:3921/12/05 11:38:39

Page 5: Desarrollo de la aplicación Car Trackermapaches.itz.edu.mx/~mbarajas/prog2inf/ejercicioADO1b.pdf · DataGridView coloca todos los campos del conjunto de datos en un for-mato de tabla

152 Generar un programa con Microsoft Visual Basic 2005 Express

Como puede ver, acaban de pasar muchas cosas. Empecemos por examinar la superficie del diseñador. Todos los campos del conjunto de datos se han agregado como controles, y también se agregaron etiquetas basadas en el nombre del campo del conjunto de datos. Esta característica se denomina título inteligente. Visual Studio utiliza Pascal o Camel como mecanismo para insertar un espacio en las etiquetas cuando se utilizan títulos inteligentes. Cuando coloque los campos del conjunto de datos en el formulario, el título inteligente examina el uso de las mayúsculas de cada campo. Cuando encuentra una letra en mayúsculas o un carácter de subrayado (es decir, _) después de una letra en minúscula, inserta un espacio o reemplaza el guión de subrayado con un espacio. En los campos EPGCity y EPGHighway se puede encontrar una excepción a esta regla. Cuando utilice letras en mayúsculas para, por ejemplo, los acrónimos, Visual Studio no puede distinguir que se trata de dos palabras y, por tanto, no las separa. Deberá separar estos dos campos manualmente.

También observará que se ha agregado una franja de herramientas que contiene casi los mismos botones que usó mientras trabajaba con el diseñador de tablas de bases de datos.

15 Lea la barra lateral azul Importante de la izquierda. Teniendo en cuenta este comportamiento de copia, le sugiero que utilice el

Enfoque nº 1 a pesar de que deberá realizar algunos pasos manualmente. Si desea depurar la aplicación desde Visual Studio, es preferible usar esta solución o, de lo contrario, no podrá ver los cambios aplicados al archivo de base de datos. El archivo de base de datos siempre volverá al inicial del proyecto, que es una operación parecida a restablecer toda la base de datos a lo que hay dentro de Visual Studio.

16 Seleccione el archivo de base de datos CarTracker.mdf en el Explorador de soluciones y cambie la propiedad Copiar en el

directorio de resultados a No copiar en la ventana Propiedades.

17 Presione F5 para compilar y ejecutar la aplicación. Recibirá un mensaje de excepción porque el archivo no se copiará en el

directorio bin\debug. Además, en el evento de carga del formulario que se desencadena cuando el código intenta rellenar el conjunto de datos, no encontrará la base de datos en el lugar especificado por la cadena de conexión. Por tanto, recibirá una SQLException que informa de que no se puede establecer conexión con la base de datos. Haga clic en el botón Detener depuración o presione Mayús+F5 para detener la depuración.

Al trabajar con archivos de base de datos locales, es necesario tener en cuenta que se tratan igual que cualquier otro archivo de contenido. Para los proyectos de escritorio, esto significa que, de manera predeterminada, el archivo de base de datos se copiará en la carpeta de resultados (es decir, en la carpeta bin) cada vez que se genere el proyecto. Después de presionar F5, éste es la apariencia que presentaría en el disco:

CarTracker\CarTracker.mdf CarTracker\Form1.vb CarTracker\Bin\Debug\CarTracker.mdf CarTracker\Bin\Debug\CarTracker.exe

En tiempo de diseño, las herramientas de datos y los asistentes utilizan el archivo CarTracker\CarTracker.mdf. En tiempo de ejecución, la aplicación utilizará la base de datos situada en la carpeta bin\debug. Como resultado de la copia, muchas personas tienen la impresión de que la aplicación no guardó los datos en el archivo de base de datos. Esta suposición tiene lugar porque hay implicadas dos copias del archivo de datos. Esto también ocurre al examinar esquemas o datos mediante el Explorador de base de datos. Las herramientas usan la copia de la carpeta de proyecto y no el archivo situado en la carpeta bin\debug. A continuación se ofrecen algunas maneras de solventar este comporta-miento de copia: 1. Si selecciona el archivo de base de datos en la ventana Explorador de solu-ciones, verá en la ventana Propiedades una propiedad denominada Copiar en el directorio de resultados. De forma predeterminada está establecida en el valor Copiar siempre, lo que significa que los archivos de datos del proyecto se copiarán en la carpeta bin\debug cada vez que se genere el proyecto, sobrescribiendo así los archivos de datos existentes, si los hay. Puede establecer esta propiedad en No copiar y colocar después manualmente una copia del archivo de datos en la carpeta bin\debug. De esta manera, al generar después, el sistema de proyectos dejará el archivo de base de datos en la carpeta bin\debug y no intentará sobrescribirlo con el del proyecto. El inconveniente de este método es que seguirá teniendo dos copias. Por lo tanto, después de modificar el archivo de base de datos utilizando la aplicación, si desea realizar esos mismos cambios dentro del proyecto, deberá copiar manualmente los cambios realizados en el proyecto y viceversa. 2. Puede dejar el archivo de datos fuera del proyecto y crear una conexión al mismo en el Explorador de bases de datos. Cuando el IDE le pregunte si desea traer el archivo al proyecto, simplemente conteste que no. De esta manera, tanto en tiempo de diseño como en tiempo de ejecución se utilizará el mismo archivo de datos. El inconveniente de este método es que la ruta de acceso de la cadena de conexión estará especificada en el código y, por tanto, será más difícil compartir el proyecto e implementar la aplicación. Antes de implementarla, asegúrese de reemplazar en la configuración la ruta de acceso completa con una ruta de acceso relativa. Si desea obtener más información sobre las diferencias entre las rutas de acceso relativas y com-pletas (junto con alguna información adicional sobre este comportamiento de copia), lea el artículo siguiente: http://blogs.msdn.com/smartclientdata/archive/2005/08/26/456886.aspx. Verá que he tomado fragmentos de ese artículo y las he modificado para adaptarlos a nuestra aplicación.

I M P O R TA N T E

X1165138BDY.indb 152X1165138BDY.indb 152 21/12/05 11:38:4121/12/05 11:38:41

Page 6: Desarrollo de la aplicación Car Trackermapaches.itz.edu.mx/~mbarajas/prog2inf/ejercicioADO1b.pdf · DataGridView coloca todos los campos del conjunto de datos en un for-mato de tabla

Capítulo 8: Administrar los datos 153

18 Con el Explorador de Windows, vaya al directorio del proyecto (debe estar en Mis documentos\Visual Studio 2005\Projects\CarTracker\CarTracker\), y copie los archivos .mdf y .ldf al directorio bin\debug

bajo CarTracker.

19 En Visual Basic Express, presione F5 para generar y ejecutar la aplicación de nuevo.

Debe ver los dos registros que ha insertado manualmente en la tabla Listing. También debe ser posible explorarlos usando la franja de herramientas, así como modificar, insertar y eliminar registros. Vea la figura 8-20 para obtener una instantánea de la aplicación Car Tracker en tiempo de ejecución.

20 Cambie la dirección URL de la fila en la posición 1 para que termine por .net en lugar de por .com.

21 Después de cambiar la dirección URL del registro, presione el icono de disco para confirmar los cambios en la base de datos.

22 Cierre la aplicación Car Tracker y reiníciela presionando F5. Ahora debe ver la primera fila con la dirección URL modificada terminada en .net. Cierre de nuevo

la aplicación.

23 Para comprobar que está trabajando con una versión en tiempo de diseño y en tiempo de ejecución de la base de datos CarTracker, abra la tabla Listing y

seleccione Mostrar datos de tabla en el Explorador de bases de datos. La primera fila debe contener una columna URL terminada en .com y no en .net.

Comprobado. El archivo de base de datos de Visual Studio se desacopla ahora con el que su aplicación está utilizando en tiempo de ejecución. Lea la nota Más información de la página siguiente para saber cómo hacer que los datos sean iguales tanto en tiempo de diseño como en tiempo de ejecución.

Bandeja de componentes Cuando arrastró la tabla Listing del conjunto de datos hasta la superficie del diseñador, puede que viera que se agregaron cuatro elementos al área gris situada debajo de la superficie del diseñador. Esta sección de la superficie del diseñador se denomina bandeja de componentes. Ésta es la sección que utiliza Visual Studio para los controles no visuales. En su caso, agregó una instancia del conjunto de datos CarTracker, un adaptador de la tabla Listing, un origen de enlace de Listing y, por último, un explorador de enlace de Listing.

Expliquémoslos por separado. ■ Origen de enlace Puede considerar un origen de enlace como un “intermediario” o

como una capa de direccionamiento indirecto. También puede calificarse de elemento intermedio entre un control enlazado a datos del formulario y un origen de datos, como

Figura 8-20 Ejecución de la aplicación Car Tracker

X1165138BDY.indb 153X1165138BDY.indb 153 21/12/05 11:38:4221/12/05 11:38:42

Page 7: Desarrollo de la aplicación Car Trackermapaches.itz.edu.mx/~mbarajas/prog2inf/ejercicioADO1b.pdf · DataGridView coloca todos los campos del conjunto de datos en un for-mato de tabla

154 Generar un programa con Microsoft Visual Basic 2005 Express

un conjunto de datos. Un origen de enlace proporciona servicios de administración y notificaciones (eventos) de moneda. El origen de enlace facilita al origen de datos muchos métodos como por ejemplo para la ordenación, el filtrado, la exploración y la edición de los datos de sus controles de enlace a datos. También está estrechamente vin-culado con el componente siguiente: el explorador de enlace. Cuando aparezca un explorador de enlace, puede estar seguro de que está obteniendo un origen de enlace.

■ Explorador de enlace El explorador de enlace es un medio de habilitar la exploración y la manipulación de los datos. Tiene un componente de interfaz de usuario o, más especí-ficamente, una franja de herramientas con botones que facilitan las funcionalidades pro-porcionadas por el origen de enlace.

■ Conjunto de datos con tipo Aunque sabe qué es un conjunto de datos, puede que no esté al tanto de qué es un objeto con establecimiento inflexible de tipos. Contiene tablas de datos del tipo DataTable que constituyen la representación en memoria de las tablas de bases de datos. Estas tablas de datos también tienen un adaptador de datos especial que se denomina adaptador de tabla. Para cada tabla de datos hay un adaptador de tabla.

■ Adaptador de tabla Un adaptador de tabla es un objeto de acceso a datos. Conecta con la base de datos (por ejemplo, de SQL Server 2005 Express), ejecuta las consultas y rellena de datos una tabla de datos cuando vuelve de SQL Server. Por lo tanto, es el punto central para todo el acceso a datos de una tabla concreta. Hay un adaptador de tabla por cada una de las tablas contenidas en el origen de datos. Un adaptador de tabla puede incluir más de una consulta SELECT.

¿Cómo incluir información más descriptiva en el formulario?

Volvamos a nuestro proyecto CarTracker. Como puede ver, los cuadros combinados ColorID, MakeID y CarTypeID están ahí, pero muestran su ID y no el nombre asociado con ese ID. Esta información no resulta de utilidad para el usuario porque un ID no entraña ningún sentido y no podrá agregar o modificar filas fácilmente si no dispone de un formato legible para esas columnas. Por consiguiente, debe asegurarse de que los datos mostrados son descriptivos y de que el ID se almacena en la fila siempre que el usuario modifica la información.

Hay una forma fácil de conseguirlo, que seguirá ahora para los tres cuadros combinados.

Si desea tener en Visual Studio los mismos datos que posee al ejecutar la aplicación en modo de depuración, debe cerrar completamente el proyecto. Utilizando el Explorador de Windows, copie los archivos .mdf y .ldf desde la carpeta bin\debug a la carpeta del proyecto. Cuando abra de nuevo el proyecto, la base de datos tendrá el mismo contenido. Imagine que después desea modificar la estructura de la base de datos, como por ejemplo, agregando una columna a una tabla. Si no desea perder los datos contenidos en los archivos de base de datos almacenados en la carpeta bin\debug, debe volver a copiarlos en la carpeta del proyecto antes de modificar la estructura de tablas. Cuando termine de realizar las modificaciones, simplemente ha de volver a copiar los archivos .mdf y .ldf a la carpeta bin\debug. Por supuesto, si la aplicación necesita esos nuevos cambios de base de datos, también debería modificar el conjunto de datos, pero ese proceso está fuera del ámbito tratado en este libro.

M Á S I N F O R M A C I Ó N

X1165138BDY.indb 154X1165138BDY.indb 154 21/12/05 11:38:4421/12/05 11:38:44

Page 8: Desarrollo de la aplicación Car Trackermapaches.itz.edu.mx/~mbarajas/prog2inf/ejercicioADO1b.pdf · DataGridView coloca todos los campos del conjunto de datos en un for-mato de tabla

Capítulo 8: Administrar los datos 155

PARA ESTABLECER ENLACES DE DATOS CON TABLAS DEL DOMINIO

1 En la ventana Orígenes de datos, seleccione la tabla Color del conjunto de datos, arrástrela hasta la superficie del diseñador del formulario, encima del cuadro combinado ColorID, y colóquela ahí.

Verá que se agregan a la bandeja de componentes otro adaptador de tabla (ColorTableAdapter) y otro origen de enlace (ColorBindingSource). Si va al cuadro combinado ColorID y hace clic en el pequeño triángulo de la etiqueta, verá aparecer el cuadro de diálogo Modo de enlace de datos, como se muestra en la Figura 8-21. Observará que con la acción de arrastrar y colocar enlazó el control de cuadro combinado con ColorBindingSource. A causa de esta acción, siempre que se muestre el cuadro combinado, mostrará los nombres de los colores en lugar de ColorID. Cuando el usuario elige un color en el cuadro combinado, el miembro de valor asociado que se usará en la fila seguirá siendo el ColorID, concretamente, el ColorID asociado con el ColorName. Fantástico, ¿no le parece? Y no hemos escrito ni una línea de código.

2 Repita el mismo proceso para las tablas Make y CarType del conjunto de datos, y los cuadros combinados MakeID y CarTypeID correspondientes.

3 Genere y ejecute la aplicación y observe después cada uno de los cuadros combinados. Ahora aparecen nombres de colores reales y no sólo identificadores de colores (ColorID), y lo mismo puede

decirse para CarType y Make. Los cuadros combinados también se rellenan con todos los valores contenidos en esas tablas y no sólo con el valor de esa fila concreta. Haga clic en la flecha de la lista desplegable y verá todos los demás posibles valores. Cierre la aplicación.

4 En el formulario, quite la parte “ID” de las etiquetas ColorID, MakeID y CarTypeID.

5 Ahora ampliará el campo Notes convirtiéndolo en un cuadro de texto multilínea. Seleccione el campo Notes y cambie la propiedad Multiline a true. Cambie también MaxLength a 250, Size:Height a 50

y Size:Width a 250.

6 Elimine el cuadro de texto ListingID y su etiqueta.

Figura 8-21 Información de etiqueta inteligente del cuadro combinado ColorID mostrando el Modo de enlace de datos

Este enlace de datos inteligente es una nueva característica de Visual Studio llamada Configuración predeterminada inteligente. Esta característica busca en la tabla del conjunto de datos para ver si existe alguna columna del tipo string bien por el ID o bien por la clave principal. Si es así, intenta utilizarla para el enlace de datos.

M Á S I N F O R M A C I Ó N

X1165138BDY.indb 155X1165138BDY.indb 155 21/12/05 11:38:4621/12/05 11:38:46

Page 9: Desarrollo de la aplicación Car Trackermapaches.itz.edu.mx/~mbarajas/prog2inf/ejercicioADO1b.pdf · DataGridView coloca todos los campos del conjunto de datos en un for-mato de tabla

156 Generar un programa con Microsoft Visual Basic 2005 Express

7 Ajuste el tamaño y la posición de los controles del formulario para que quede como el formulario que se muestra en la figura 8-22; no es necesario que sea un duplicado exacto. Es conveniente recordar

los conceptos de diseño de interfaces de usuario del capítulo 5 y, a la vez, una buena preparación para el capítulo 9. Cambie la propiedad Text del formulario a Car Tracker.

Figura 8-22 Nueva apariencia visual de la aplicación

8 En el Explorador de soluciones, cambie el nombre de form1.vb a Main.vb.

9 Seleccione el formulario y cambie el valor de la propiedad BackColor a Highlight.

Esta aplicación está ya casi terminada, pero faltan las capacidades de investigación. Actualmente, la única manera de realizar búsquedas es examinar todas las filas hasta encontrar la correcta. Ahora no le resultará difícil porque sólo tiene dos filas en la base de datos Car Tracker. Imagine que tuviera 500 filas: el método Scan no le serviría de nada. Por tanto, implementará capacidades de búsqueda agregando consultas a la aplicación usando el Diseñador de DataSet.

10 En la ventana Orígenes de datos, seleccione CarTrackerDataSet. Haga clic con el botón secundario del mouse y seleccione Editar DataSet con el Diseñador.

11 Seleccione la tabla de datos Listing y, después, seleccione la sección ListingTableAdapter de la parte inferior de la tabla.

X1165138BDY.indb 156X1165138BDY.indb 156 21/12/05 11:38:4721/12/05 11:38:47

Page 10: Desarrollo de la aplicación Car Trackermapaches.itz.edu.mx/~mbarajas/prog2inf/ejercicioADO1b.pdf · DataGridView coloca todos los campos del conjunto de datos en un for-mato de tabla

Capítulo 8: Administrar los datos 157

Cuando observe la ventana Propiedades, verá que Visual Studio generó automáticamente cuatro tipos de consultas: SELECT, INSERT, DELETE y UPDATE. Esas son las consultas que le ayudaron a conseguir una aplicación plenamente funcional sin escribir una sola línea de código. En la información anterior sobre los adaptadores de tablas, pudo ver que es posible tener varias consultas con un adaptador de tabla porque es el punto central de acceso a datos. Por tanto, agregará capacidades de búsqueda a la aplicación agregando consultas a los adaptadores de tablas y usando parámetros de la interfaz de usuario. En primer lugar, agregará la capacidad de buscar los vehículos que tienen un color determinado.

12 Haga clic con el botón secundario del mouse en la sección ListingTableAdapter y seleccione Agregar consulta. . . como se puede ver en la Figura 8-23.

Esta acción abrirá el Asistente para la configuración de consultas de TableAdapter. El asistente le ayudará a agregar otra consulta SELECT que utilizará parámetros para perfeccionar la búsqueda. También puede crear una consulta SELECT y convertirla en un procedimiento almacenado o usar un procedimiento almacenado existente. Como su propio nombre indica, se trata de un procedimiento que está almacenado en SQL Server y contiene instrucciones SQL, junto con otras construcciones de programación que usan un lenguaje llamado T-SQL o Transact-SQL. Una característica nueva de SQL Server 2005 Express es que los procedimientos almacenados también se pueden codificar en lenguajes administrados, como C# y Visual Basic. Los procedimientos almacenados se ejecutan en el servidor. Puesto que está utilizando SQL Server 2005 Express, esta característica no le debe preocupar porque SQL Server y la aplicación se ejecutan en el mismo equipo.

13 Seleccione Usar instrucciones SQL y, a continuación, haga clic en Siguiente. Cuando se le pregunte qué tipo de consulta

SQL desea usar, elija SELECT que devuelve filas y después haga clic en Siguiente. Fíjese en que podría haber agregado cualquier tipo de consulta SQL deseada.

14 Ahora se le presenta una ventana de edición para que agregue la instrucción SQL que realizará una búsqueda de

todas las filas que contienen un color específico de vehículo. Consulte la Figura 8-24 para ver la ventana de edición de comandos SQL. Haga clic en el botón Generador de consultas. . . para obtener una vista visual de la consulta.

15 Ahora agregará la tabla Color al diagrama para poder basar la búsqueda en un color concreto. Para agregar la tabla Color,

basta con hacer clic con el botón secundario del mouse en el área del diagrama y seleccionarAgregar tabla. . . Aparecerá el cuadro de diálogo Agregar tabla, como se muestra en la figura 8-25. Seleccione la tabla Color y haga clic en el botón Agregar. Cuando se haya agregado la tabla Color al diagrama, haga clic en el botón Cerrar.

Figura 8-23 Agregar nuevas consultas a un adaptador de tabla

Figura 8-24 Ventana de edición de comandos SQL preparada para personalizarla búsqueda del usuario

X1165138BDY.indb 157X1165138BDY.indb 157 21/12/05 11:38:4821/12/05 11:38:48

Page 11: Desarrollo de la aplicación Car Trackermapaches.itz.edu.mx/~mbarajas/prog2inf/ejercicioADO1b.pdf · DataGridView coloca todos los campos del conjunto de datos en un for-mato de tabla

158 Generar un programa con Microsoft Visual Basic 2005 Express

16 En el panel de código SQL del Generador de consultas, anexe el siguiente código SQL que ayudará en el proceso de filtrado:

WHERE (Color.ColorName LIKE ‘%’ + @colorname + ‘%’)

17 Antes de continuar con la nueva consulta, asegúrese de que devolverá los resultados esperados. Haga clic en el

botón Ejecutar consulta para abrir el cuadro de diálogo Parámetros de la consulta, como se puede ver en la Figura 8-26.

18 Pruebe a reemplazar la palabra NULL con blue y haga clic en Aceptar. El panel Resultados del Generador de

consultas sólo debe mostrar una fila. Usando la palabra black se devolvería la fila del vehículo cuyo color es black. Escriba simplemente la letra b y debería obtener las filas de los vehículos de color blue y black. Cuando la consulta funcione de manera satisfactoria, haga clic en Aceptar en el Generador de consultas.

Figura 8-25 El cuadro de diálogo Agregar tabla

El símbolo ‘%’ es el carácter comodín en SQL y puede significar cualquier cosa. Por ejemplo, en la cláusula WHERE anterior, significa que se debe devolver algo que tenga un color parecido al del parámetro colorname.

M Á S I N F O R M A C I Ó N

Figura 8-26 Cuadro de diálogo Parámetros de la consulta con una indicación para que se escriba un valor de nombre de color

X1165138BDY.indb 158X1165138BDY.indb 158 21/12/05 11:38:5021/12/05 11:38:50

Page 12: Desarrollo de la aplicación Car Trackermapaches.itz.edu.mx/~mbarajas/prog2inf/ejercicioADO1b.pdf · DataGridView coloca todos los campos del conjunto de datos en un for-mato de tabla

Capítulo 8: Administrar los datos 159

19 En la pantalla Especifique una instrucción SELECT de SQL del asistente, haga clic en Siguiente. Es el momento de agregar la

consulta a la aplicación.

20 Aparece una pantalla que le pide que designe un nombre para los métodos que generará la consulta. Después de esta

operación, estos métodos estarán disponibles en el adaptador de tabla Listing. Consulte la Figura 8-27 para ver esta pantalla que contiene los dos nuevos nombres de métodos. Para ambos nombres tiene que agregar su filtro. En su caso puede agregar ColorName, ya que filtró por ese nombre en la cláusula WHERE. Cuando haya terminado, haga clic en Siguiente.

21 Después de procesar durante unos segundos, el equipo debe mostrar una pantalla de resultados que le informe de que la

instrucción SELECT y los nuevos métodos Fill y Get están listos para usar. Haga clic en el botón Finalizar.

Observe la sección del adaptador de datos de la tabla de datos Listing. Los nuevos métodos se agregarán en ese lugar.

22 Repita los pasos a partir del paso 12 y agregue otra consulta al ListingTableAdapter para la tabla CarType. Utilice la siguiente cláusula WHERE:

WHERE (CarType.CarTypeName LIKE ‘%’ + @cartypename + ‘%’)

Asigne a los métodos fill y get los nombres FillByCarTypeName y GetDataByCarTypeName.

23 Repita los pasos a partir del paso 12 y agregue otra consulta al ListingTableAdapter para la tabla Make. Utilice la siguiente cláusula WHERE:

WHERE (Make.MakeName LIKE ‘%’ + @makename + ‘%’)

Asigne a los métodos fill y get los nombres FillByMakeName y GetDataByMakeName.

Ya casi ha terminado, pero todavía debe enlazar esas nuevas consultas a controles del formulario. En cualquier control con enlace a datos del formulario puede seleccionar Agregar consulta… en el menú de la etiqueta inteligente. En su caso, desea agregar capacidades de búsqueda a todo el formulario y no sólo a un control en particular.

24 Vaya a la bandeja de componentes, haga clic en la etiqueta inteligente ListingTableAdapter y selec-cione Agregar consulta. . . Verá un cuadro de diálogo Generador de criterios de búsqueda que le

pedirá que cree una consulta nueva o que elija una existente. Como acaba de generar tres conjuntos nue-vos de métodos, sólo tiene que seleccionar uno. Seleccione la opción Nombre de la consulta existente y seleccione después FillByColorName como se muestra en la figura 8-28 de la página siguiente.

Figura 8-27 Cuadro de diálogo con indicación para que se cambien los nombres de los métodos para aumentar las capacidades de búsqueda

X1165138BDY.indb 159X1165138BDY.indb 159 21/12/05 11:38:5221/12/05 11:38:52

Page 13: Desarrollo de la aplicación Car Trackermapaches.itz.edu.mx/~mbarajas/prog2inf/ejercicioADO1b.pdf · DataGridView coloca todos los campos del conjunto de datos en un for-mato de tabla

160 Generar un programa con Microsoft Visual Basic 2005 Express

25 Haga clic en el botón Aceptar. Verá que en la parte superior del formulario se ha colocado una franja de herramientas con un botón de búsqueda que

llamará al método cuando haga clic en él, proporcionándole así una manera de realizar búsquedas en función de determinados criterios. Esto se ha conseguido con sólo escribir en las tres cláusulas WHERE de las consultas concretas.

26 Repita el paso 24 y agregue las consultas FillByCarTypeName y FillByMakeName, que agregarán dos franjas de herramientas más.

27 Agregue ahora al formulario un contenedor de franja de herramientas como hizo en el capítulo 6. Establezca la propiedad Dock para rellenar el formulario.

En el menú de etiquetas inteligentes, seleccione Cambiar primario de los controles para poner todas las franjas de herramientas en el panel superior y todos los demás controles en el panel de contenido. Si es necesario, utilice la ventana Esquema del documento para ver y ajustar la jerarquía de objetos del formulario.

28 Cuando haya terminado de cambiar la ubicación de los controles, extienda el panel superior haciendo clic en su control de cambio de tamaño y tirando de

él para que tenga el ancho de dos franjas de herramientas.

29 Asegúrese de que su aplicación es similar a la que se muestra en la figura 8-29. Presione F5 para ver el resultado de su trabajo. Escriba “blue”

en la franja de herramientas colorname y haga clic en FillByColorName para ver si muestra listas de vehículos de color azul. Pruebe con las demás características de la aplicación.

Figura 8-29 Pantalla de la aplicación Car Tracker

Figura 8-28 Generador de criterios de búsqueda con el método FillByColorName seleccionado

X1165138BDY.indb 160X1165138BDY.indb 160 21/12/05 11:38:5421/12/05 11:38:54

Page 14: Desarrollo de la aplicación Car Trackermapaches.itz.edu.mx/~mbarajas/prog2inf/ejercicioADO1b.pdf · DataGridView coloca todos los campos del conjunto de datos en un for-mato de tabla

Capítulo 8: Administrar los datos 161

Ésta es una aplicación simple que probablemente modificará para que pueda controlar más información, como por ejemplo imágenes de los vehículos. Pero ya no hay nada que no pueda agregar por sí mismo. La siguiente es una lista de cosas que puede hacer si desea con-tinuar trabajando en esta aplicación:

En resumen… ¡Éste ha sido un capítulo grande con mucho material! Repasemos lo aprendido. Primero realizamos una introducción a las bases de datos y a los conceptos de las mismas. Vimos qué constituye una base de datos y qué puede haber en una base de datos. Aprendimos qué es la integridad de datos y cómo se relaciona con las claves principales y las claves externas.

Después utilizó Visual Basic 2005 Express para crear una base de datos y sus tablas, y las rellenó con algunos datos iniciales utilizando diversas herramientas de Visual Basic 2005 Express. Después, implementó todas las relaciones de claves externas sin salir de Visual Studio y las validó.

Después de escribir manualmente los datos, aprendió a permitir que los usuarios incluyan datos más fácilmente desarrollando una aplicación de muestra, Car Tracker, que utiliza ADO.NET y el enlace de datos.

Por último, explicamos los nuevos conceptos de ADO.NET 2.0 y cómo, con muy poco código o sin él, se puede desarrollar una aplicación basada en datos plenamente funcional. Sólo hemos presentado una parte reducida de ADO.NET, ya que es un tema muy amplio. Si desea obtener más información, pruebe a buscar código o ejemplos en MSDN. Un buen lugar donde empezar es en los ejemplos de iniciación, 101 samples, para Visual Studio 2005. Preste especial atención a los ejemplos de acceso a datos y formularios Windows Forms. El vínculo es el siguiente: http://msdn.microsoft.com/vbasic/downloads/2005/code/101samples/.

En el capítulo siguiente desarrollará la aplicación final de este libro: la aplicación Weather Tracker. Aprenderá nuevos conceptos, como el desarrollo, el uso de servicios Web, la configuración de los usuarios y mucho más en una aplicación completa que incluye todas las validaciones necesarias.

■ Agregar validaciones para las entradas del usuario, como asegurarse de que el año del vehículo no es superior al año actual + 2

■ Agregar imágenes a las bases de datos y al formulario

■ Agregar una marca de verificación que indique si se ha vendido el vehículo

■ Agregar tres formularios para agregar datos a las tablas del dominio (CarType, Make, Color)

■ Agregar más información a la lista de vehículos, como información de contacto

■ Permitir que se pueda hacer clic en la dirección URL

■ Guardar un anuncio como un archivo de texto

X1165138BDY.indb 161X1165138BDY.indb 161 21/12/05 11:38:5621/12/05 11:38:56