Curso Delphi. Lección 08A  

Send By: Ariel Bustamante
Web : N.A.
Email: N.A.
Date: 16/02/03

Tip accessed 775 times

 


CURSO PARA NO INICIADOS EN DELPHI

Bases de datos


Componentes para acceso y control de Tablas y Bases de Datos


Paleta DataAccess


DataSource (Fuente de datos) para explicarlo en castizo es el conector
entre un Table y cualquier otro componente como: DBEdit, DBGrid, DBMemo etc.,
toda aplicación tablas o base de datos necesita al menos un DataSource.


Table (Tabla) es el componente que nos permite acceder a través
del BDE (Data Base Enginne) a la tabla en cuestión.


Session (Sesion) Si nuestra base de datos estuviera trabajando en red,
el componente Session sería quien administraría dichas conexiones.




Abre DataBase Desktop File/New/Table y crea un campo llamado Nombre del tipo
A y Size 120, otro llamado Domicilio con los mismos valores, antes de salvar
la tabla selecciona el campo Nombre y en la ventana Default Value escribe Nombre,
luego selecciona el campo Domicilio y en esa ventana escribe Domicilio salva
la tabla con cualquier nombre en un directorio de pruebas, abre la tabla para
introducirle registros (una manera rápida de ponerla en edición
es después de abierta clicar F9) y verás que te aparece por defecto
en cada campo lo que has escrito en la ventana, valor que puedes cambiar con
solo rescribirlo. Esto puede tener alguna utilidad en campos de obligada escritura
que deben manejar siempre un valor fijo con muy pocas variaciones y para ahorrar
tecleo al usuario se podrían diseñar de esta manera. Esto vale
tanto para campos A como para campos N . Clicamos Restructure y observamos que
esta opción va acompañada de otras dos llamadas minimun value
y maximun value. Aquí podríamos poner por ejemplo 000 en minimun
, 100 en maximun y 001 en default, entonces en ese campo no se podría
entrar un valor de menos de 000 ni de más de 100 y siempre aparecería
001 como valor por defecto.


Alias

Hasta ahora hemos asignado una tabla al componente Table con la rutina de
escribir en la Propiedad/Database Name la ruta de directorio donde se encontraba
la tabla, pero existe una forma mucho más práctica de hacerlo
sobre todo cuando trabajamos con muchas tablas asociadas a un mismo proyecto.
Este sistema es el uso de los Alias. Bajo un mismo nombre de Alias guardamos
todas las tablas del proyecto. En la Práctica:


Crea la carpeta Leccion8. Abre Delphi y guarda el Project y la Unit con sus
nombres por defecto en la carpeta Leccion8. Ve a la Carpeta Leccion7 y clicas
sobre la TablaCoches.db para abrirla, una vez abierta clica sobre Restructure,
y así te aparecerá la opción de Save As, en Save As dejas
todo como está y solo cambias el directorio que era Leccion7 por el nuevo
directorio Leccion8 . Cierra la tabla y la Carpeta leccion7 , vamos a la carpeta
Leccion8 y abrimos nuevamente la TablaCoches, desplegamos el menú Tools
del Database Desktop y seleccionamos Alias Manager, en esta nueva ventana clicamos
NEW y en Database Alias ponemos el nombre del nuevo Alias que vamos a crear,
allí escribimos Automotora (una vez más estamos usando un nombre
que nos hace una referencia muy clara a las tablas que va a contener), la ventana
Driver Type debe estar en STANDARD (si el proyecto fuera para una aplicación
cliente-servidor debería ser INTRBASE) y el Path ha de ser el directorio
que contenga todas las tablas que vamos a integrar al proyecto, puedes escribirlo
en la ventana Path o buscarlo clicando en BROWSE Si clicas Browse, por defecto
te aparecerá el directorio WORK, desplega la ventana de abajo y busca
C:, luego busca en la ventana superior tu carpeta Leccion8 . Una vez acabado
de escribir (o elegir) el Path, clica Keep New y ya tendrás el nuevo
Alias guardado y asignado a esta tabla. Si hubieras clicado Ok en lugar de Keep
New , el Alias quedaría guardado para uso futuro pero no sería
asignado -de momento- a esta tabla.

Una ventana que nos avisa de la inclusión del nuevo Alias.....etc....etc....debemos
aceptarla.

Ahora que ya tenemos nuestro Alias, cerramos Database Desktop y volvemos a nuestro
Project vacío de Delphi, allí colocamos los tres componentes

imprescindibles para trabajar con una tabla, Table, DataSource y DBGrid. Vamos
a la Propiedad/DatabaseName de Table1, allí donde en los ejemplos anteriores
escribíamos toda la ruta del directorio, desplegamos la ventana y encontraremos
Automotora junto a todos los Alias que ya nos vinieron creados en la aplicación
Delphi. Seleccionamos Automotora y nos vamos a la Propiedad/TableName de Table1,
desplegamos esta ventana y nos encontraremos con la única tabla a la
que le hemos asignado este Alias que no es otra que TablaCoches.DB, una vez
seleccionada esta tabla pasamos a True la Propiedad/Active y ya tenemos nuestra
tabla en la grilla (el DBGrid).

Aquí puedes experimentar cambiando los Alias en la Propiedad/DatabaseName
y buscando nuevas tablas en la Propiedad/TableName y así visualizarás
todas las tablas con Alias asociados existentes en tu HD.


Notas:

Si estamos trabajando con un Project con tablas y queremos restructurar alguna
de estas con el DatabaseDesktop, es posible que al intentarlo nos aparezca una
ventana que diga "Unable open table busy" (imposible abrir tabla ocupada).
Eso es porque a dicha tabla la tenemos abierta en nuestro project de Delphi
para solucionar este problema sin cerrar Delphi debemos ir a nuestro project
y a la Propiedad/Active del componente Table (que está en True) pasarlo
a False.


Nunca copies una tabla de un directorio a otro por el sistema Copiar/Pegar,
puesto que ni Delphi ni Database Desktop te la reconecerían en el nuevo
sitio. Para pasar una tabla a otra carpeta se debe abrir esta tabla en el directorio
donde está, clicar Restructure y guardarla (Save As) en el nuevo directorio.


Terminología habitual en el uso de proyectos con tablas.


Campo: Unidad de información de una tabla. Cada campo debe tener
asignado el tipo de datos que recogerá (números, texto, imágenes,
fechas etc.) y el nombre

asignado al mismo será irrepetible para otros campos de la misma tabla.

Registro: es la suma de campos que contienen una información en
común. Por ej: el campo Nombre más el campo Apellido más
el Dirección más el

Provincia son cuatro campos que forman un registro completo.

Tabla: es un conjunto de campos y registros, cada columna vertical corresponde
a un campo y cada línea horizontal a un registro.


Base de datos: es un conjunto de tablas relacionado entre sí.
Por ej: si quisiéramos crear un proyecto de facturación de un
almacén necesitaríamos crear cuantas tablas fuesen necesarias
para trabajar independientemente cada una de ellas y relacionarlas para cuando
la ocasión lo requiera. La de entrada de artículos, la de salida
de artículos, la de alta de proveedores, la de alta de clientes, etc;
serían algunas de las tablas de este proyecto a cada una la relacionaríamos
según nuestras necesidades y ya estaría creada nuestra base de
datos. Ahora podríamos saber -entre otros datos- si tenemos stock del
artículo al facturarle a un cliente.


Indice: método de clasificación de registros, nos permite
clasificarlos según un criterio determinado por nosotros y facilitarnos
los métodos de búsqueda de los mismos.


Indice Primario: este es el índice clave (key) o principal, maneja
un valor único no duplicado entre un registro y otro del mismo campo,
este índice debe aplicarse a campos que sabemos de antemano irrepetibles
como: No de teléfono, No de DNI, No de cliente etc. Una vez introducido
un registro en este campo, la tabla se ordenará por el valor del mismo.


Si introducimos el cliente No 80 y luego el No 21, al acabar la introducción
de datos el 21 pasará a ubicarse por encima del 80. Si intentáramos
introducir dos clientes con el No 21 Database Desktop no nos dejaría
avanzar hasta el próximo campo y si la edición la estuviéramos
realizando desde una aplicación Delphi un aviso de "Key Violation"
nos aparecería en la pantalla.


Indice Secundario: este a diferencia del primario permite duplicar registros
y ordenar los mismos según nuestra necesidad en tiempo de ejecución
como lo hemos hecho con la TablaCoches.


Query (Consulta): este es lenguaje SQL (Structured Query Language) que
nos permite seleccionar un conjunto de campos y sus registros dentro de una
tabla o una base de datos para trabajar solo con un conjunto que cumpla determinadas
condiciones. Por ej: si introducimos un número de cliente SQL nos podría
mostrar de la tabla de altas de clientes, todos sus datos, a su vez de la tablas
de ventas, su última compra y de la tabla de pagos, su último
pago.