11
BASE DE DATOS Una Base De Datos (BDD) consiste en un conjunto de informaciones organizadas y estructuradas, que se encuentran almacenadas en uno o varios ficheros (Tablas), y que pueden ser procesadas para generar más información. Una BDD es, por ejemplo, el conjunto de todas las fichas de un club. Estas fichas (conjunto de Registros) están organizadas en un fichero (Tablas), en donde se almacenan según un número de socio. Además, estos datos pueden ser tratados para generar información nueva que no figura de forma explícita en la BDD, informaciones como saber quiénes son los socios más antiguos, los que no han pagado la cuota, etc. Campos o atributos: es la unidad mínima de información que es posible crear o modificar en una BDD. Ejemplo: un campo es DNI, otro Nombre, otro Dirección, etc. Registros: un registro es un conjunto de campos relacionados entre sí. Es decir, un registro es una ficha. Tabla: una tabla es un conjunto de registros que tienen la misma estructura. Ejemplo: una tabla es el conjunto de todas las fichas de los socios. Dentro de ella, se denomina fila a cada uno de los registros, y columnas a cada uno de los campos. BDD: es una agrupación de una o varias tablas. Clave: todos los registros tienen un campo que contiene un valor único, característico de él, y que lo identifica. Este valor es la clave del registro. Ejemplo: una clave válida puede ser el número de socio, ya que éste valor es único para cada uno de ellos y sirve para localizarlos. También valdría como clave el DNI (que también posee un valor único e irrepetible para cada socio). BDE: (Borland Database Engine, Motor de bases de datos de Borland) es un traductor entre nuestras aplicaciones y las bases de datos a las que se desea acceder. Alias: las BDD se encuentran almacenadas en archivos, y éstos, a su vez, se encuentran dentro de una carpeta (directorio) del disco duro. Para ahorrarnos el trabajo de tener que escribir la trayectoria completa de la carpeta en la que se encuentra una BDD, se utilizan los alias, que son nombres simples que identifican a los directorios en los que se encuentran nuestros datos, de tal forma que sea posible referirse a ellos mediante estos sobrenombres. Indice: podríamos decir que es una lista ordenada, en orden ascendente o descendente, de algunas columnas de una tabla que nos permite acceder a ésta de forma más rápida. El indice puede ser con duplicados, o sin duplicados. Tabla: campo1 campo2 campo3 campoN B.O.F. (Begin Of File) puntero r e g i s t r o s

Practica Bases de Datos Buenisima

Embed Size (px)

DESCRIPTION

Bases de datos en delphi con bases de datos

Citation preview

Page 1: Practica Bases de Datos Buenisima

BASE DE DATOS

Una Base De Datos (BDD) consiste en un conjunto de informaciones organizadas y estructuradas, que se encuentran almacenadas en uno o varios ficheros (Tablas), y que pueden ser procesadas para generar más información.Una BDD es, por ejemplo, el conjunto de todas las fichas de un club.Estas fichas (conjunto de Registros) están organizadas en un fichero (Tablas), en donde se almacenan según un número de socio. Además, estos datos pueden ser tratados para generar información nueva que no figura de forma explícita en la BDD, informaciones como saber quiénes son los socios más antiguos, los que no han pagado la cuota, etc.

Campos o atributos: es la unidad mínima de información que es posible crear o modificar en una BDD. Ejemplo: un campo es DNI, otro Nombre, otro Dirección, etc. Registros: un registro es un conjunto de campos relacionados entre sí. Es decir, un registro es una ficha. Tabla: una tabla es un conjunto de registros que tienen la misma estructura. Ejemplo: una tabla es el conjunto de todas las fichas de los socios. Dentro de ella, se denomina fila a cada uno de los registros, y columnas a cada uno de los campos. BDD: es una agrupación de una o varias tablas. Clave: todos los registros tienen un campo que contiene un valor único, característico de él, y que lo identifica. Este valor es la clave del registro. Ejemplo: una clave válida puede ser el número de socio, ya que éste valor es único para cada uno de ellos y sirve para localizarlos. También valdría como clave el DNI (que también posee un valor único e irrepetible para cada socio). BDE: (Borland Database Engine, Motor de bases de datos de Borland) es un traductor entre nuestras aplicaciones y las bases de datos a las que se desea acceder. Alias: las BDD se encuentran almacenadas en archivos, y éstos, a su vez, se encuentran dentro de una carpeta (directorio) del disco duro. Para ahorrarnos el trabajo de tener que escribir la trayectoria completa de la carpeta en la que se encuentra una BDD, se utilizan los alias, que son nombres simples que identifican a los directorios en los que se encuentran nuestros datos, de tal forma que sea posible referirse a ellos mediante estos sobrenombres. Indice: podríamos decir que es una lista ordenada, en orden ascendente o descendente, de algunas columnas de una tabla que nos permite acceder a ésta de forma más rápida. El indice puede ser con duplicados, o sin duplicados.

Tabla:

campo1 campo2 campo3 campoN

B.O.F. (Begin Of File)

E.O.F. (End Of File)

punteroregist ros

Page 2: Practica Bases de Datos Buenisima

Database DesktopEsta herramienta nos permite crear tablas de diferentes tipos (dBase, Paradox, Access...), así como crear consultas, transferir datos de una tabla a otra, etc.Tools Database DesktopGestión de alias:File Working Directory seleccionar la rutaTools Alias Manager... pulsar el botón NewCreación de tablas:File New Table... Paradox7Definición de la tabla:

- Field Name: nombre del campo.- Type: tipo de los datos que almacenará ese campo: numérico, alfanumérico, etc. Usar la barra espaciadora para ver

los diferentes tipos de datos- Size: tamaño del campo en bytes. Si el valor es alfanumérico, se debe indicar aquí cuantos caracteres (letras) se

almacenará.- Key: indica si este campo es clave o no. Con la barra espaciadora se activa y desactiva.

Modificar una tabla:Table Reestructure... / se puede usar el botón Reestructure.

El componente TableSe encuentra en la solapa DataAccess. Permite acceder a los datos almacenados en una tabla de una BDD.Propiedades DatabaseName: nombre de la BDD(alias)Propiedades TableName: nombre de la tabla que queremos utilizarPropiedades Active: TrueHaciendo doble clic en el objeto Table, aparecerá una ventana que tiene en la parte superior unos botones de navegación. Haciendo clic derecho sobre esa pequeña lista puedo agregar los campos de la tabla. Si selecciono uno o varios elementos de la lista y los muevo con el mouse hasta el formulario, se creará automáticamente un Label y un Edit con los datos de ese campo.

El componente DataSourceSe encuentra en la solapa DataAccess. Actúa como un enlace entre un objeto Table y la aplicación, proporcionando a ésta última una interfaz común para manejar los datos de la tabla, a través de uno o varios controles, que serán los encargados de mostrar y modificar los datos de los registros.Propiedades DataSet: nombre del componente Table, del cual se tomarán los datos. Ej: Table1.

BDD relacional, con sus Tablas relacionadas entre sí, a través de sus campos clave.

ArticulosVentas

Proveedores

Facturas

Secciones

Vendedores

Page 3: Practica Bases de Datos Buenisima

El componente DBGridSe encuentra en la solapa DataControls. Presenta en el formulario una lista con todos los registros de la tabla.Otros componentes son: DBEdit, DBText, DBMemo, DBCheckBox.Propiedades DataSource: es el nombre del componente DataSource del que se tomarán los datos de la tablaPropiedades DataField: indica con qué atributo (columna) trabajará éste componente

El componente DBNavigatorSe encuentra en la solapa DataControls. Permite movernos de un registro a otro, insertar nuevos registros, borrarlos, modificarlos, etc. Los botones son, de izquierda a derecha:

- Primero (First): muestra los valores del primer registro almacenado en la tabla.- Anterior (Prior): muestra los valores del registro anterior al actual.- Siguiente (Next): muestra los valores del registro posterior al actual.- Ultimo (Last): muestra los valores del último registro almacenado en la tabla.- Insertar (Insert): añade un nuevo registro a la tabla. Los componentes del formulario se ponen en blanco para que

podamos introducir los nuevos valores del registro.- Borrar (Delete): elimina de la tabla el registro seleccionado.- Editar (Edit): permite la edición de los valores que se están mostrando.- Escribir (Post): escribe los cambios en el actual registro de la tabla.- Cancelar (Cancelar): cancela la edición del registro actual y restaura los valores anteriores a la edición.- Refrescar (Refresh): actualiza los datos de toda la tabla y de las estructuras internas.

Propiedades DataSource: es el nombre del componente DataSource del que se tomarán los datos de la tabla.

Accesos físicos a la tabla utilizando FieldByNameFieldByName permite el acceso al objeto Tfield asociado a un determinado campo a partir del nombre del campo en la tabla. Su sintaxis es la siguiente:Function FieldByName(Const NombreCampo: String) := Tfield;Ejemplo:Table1.FieldByName(‘Producto’).AsString := ‘Coca Cola’;

Inicio y Fin de la TablaCuando en un desplazamiento sobre la tabla se llega a su inicio o a su final se modifican las propiedades Bof y Eof. La propiedad Bof toma el valor True cuando se está en el primer registro de la tabla y la propiedad Eof toma el valor True cuando se está en el último registro de la tabla o cuando la tabla está vacía. Por ejemplo, para saber si se ha llegado al final de la tabla sería:If Table1.Eof = True then

ShowMessage(‘Está en el final de la tabla’);

Búsquedas de RegistrosEl componente Table proporciona una serie de herramientas para realizar búsquedas de registros con la limitación de que sólo se realizarán con campos indexados.Mediante el método FindKey se busca en la tabla para encontrar un registro en el que sus campos índices coincidan con los que se han pasado como argumentos en un array de valores separados por comas. Regresa un valor Falso o Verdadero dependiendo de si tuvo éxito o no en la búsqueda. Ejemplo:If Table1.FindKey([Edit1.Text]) = True ThenShowMessage('Producto Localizado')ElseShowMessage('Producto no encontrado');

Si deseamos que el sistema, en caso de que no encuentre el registro, se posicione en el registro más cercano al buscado, se puede usar la siguiente instrucción:If Table1.FindKey([Edit1.Text]) = True ThenShowMessage('Producto Localizado')ElseTable1.FindNearest([Edit1.Text]);

El otro método de búsquedas es Locate, el cual nos permite buscar por una condición en un columna o por varias columnas. No necesariamente por campos indexados. Locate es una función que devuelve True o False según ha tenido éxito o no, y si su búsqueda fue exitosa, la tabla muestra la fila que cumplió la condición. Para usar este método se han de pasar una serie de parámetros:Locate(const KeyFields : string; const KeyValues : Variant; Options : TLocateOptions)

Page 4: Practica Bases de Datos Buenisima

Ejemplo:Table1.Locate ('Producto','CocaCola',[ loCaseInsensitive]);Table1.Locate ('Producto','CocaCola',[ loPartialKey]);Table1.Locate ('Producto',form1.TxtBuscar.Text,[loCaseInsensitive,loPartialKey]);

Búsquedas SQLPara poder ejecutar una consulta SQL es necesario añadir un componente TQuery. Con el componente TQuery podemos acceder a varias tablas a la vez o filtrar dinámicamente cualquier tipo de registros.La ejecución de una consulta SQL entrega como resultado una nueva tabla, las características de esta tabla son en principio independientes de la base de datos.

Propiedades de TQuery:Propiedad Descripción

DataBaseName Nombre de la base de datos a la que se accede.

SQLArray de string que contiene la consulta que darálugar a la nueva tabla.

ActiveProvoca la presentación inmediata de los datosejecutando la consulta.

Params Array que incluye los parámetros de una consulta.

RequestLivePermite modificar los registros que fueron resultadode una consulta.

Métodos de TQuery:Métodos Descripción

ExecSQLEjecuta la sentencia SQL sea o no de selección deregistros.

OpenEjecuta una consulta SQL de selección deregistros.

Close Cierra el componente.First

Navegación por los registros de la tabla.LastNextPriorAppend

Métodos para Insertar Registros.InsertAppendRecordInsertRecordDelete Borrar el registro actual.Edit Permite modificar el registro actual.

El lenguaje de consulta estructurado (SQL) es un lenguaje de base de datos normalizado, utilizado por el motor de base de datos de Microsoft Jet. SQL se utiliza para crear objetos QueryDef, como el argumento de origen del método OpenRecordSet y como la propiedad RecordSource del control de datos. También se puede utilizar con el método Execute para crear y manipular directamente las bases de datos Jet y crear consultas SQL para manipular bases de datos remotas cliente - servidor.El lenguaje SQL está compuesto por comandos, cláusulas, operadores y funciones de agregado. Estos elementos se combinan en las instrucciones para crear, actualizar y manipular las bases de datos.Estos son los comandos del lenguaje SQL:

Comando Descripción

SELECTUtilizado para consultar registros de la base de datos que satisfagan uncriterio determinado

INSERTUtilizado para cargar lotes de datos en la base de datos en una únicaoperación.

UPDATEUtilizado para modificar los valores de los campos y registrosespecificados

DELETEUtilizado para eliminar registros de una tabla de una base de datos

Las cláusulas son condiciones de modificación utilizadas para definir los datos que desea seleccionar o manipular.

Page 5: Practica Bases de Datos Buenisima

Cláusula Descripción

FROMUtilizada para especificar la tabla de la cual se van a seleccionar los registros

WHEREUtilizada para especificar las condiciones que deben reunir los registros que se van a seleccionar

GROUP BYUtilizada para separar los registros seleccionados en grupos específicos

HAVINGUtilizada para expresar la condición que debe satisfacer cada grupo

ORDER BYUtilizada para ordenar los registros seleccionados de acuerdo con un orden específico

Operadores lógicos:Operador Uso

ANDEs el "y" lógico. Evalúa dos condiciones y devuelve un valor de verdad sólo si ambas son ciertas.

OREs el "o" lógico. Evalúa dos condiciones y devuelve un valor de verdad si alguna de las dos es cierta.

NOT Negación lógica. Devuelve el valor contrario de la expresión.

Operadores de comparación:Operador Uso

< Menor que> Mayor que<> Distinto de<= Menor ó Igual que>= Mayor ó Igual que= Igual queBETWEEN Utilizado para especificar un intervalo de valores.LIKE Utilizado en la comparación de un modeloIN Utilizado para especificar registros de una base de datos

Las funciones de agregado se usan dentro de una cláusula SELECT en grupos de registros para devolver un único valor que se aplica a un grupo de registros.

Función Descripción

AVGUtilizada para calcular el promedio de los valores de un campo determinado

COUNT Utilizada para devolver el número de registros de la selección

SUMUtilizada para devolver la suma de todos los valores de un campo determinado

MAXUtilizada para devolver el valor más alto de un campo especificado

MINUtilizada para devolver el valor más bajo de un campo especificado

Ejemplos:

SELECT Nombre, Apellido, Edad FROM Empleados WHERE Edad > 25 AND Edad < 50;SELECT * FROM Empleados WHERE (Edad > 25 AND Edad < 50) OR Sueldo = 100;SELECT * FROM Empleados WHERE NOT Estado = 'Soltero';SELECT * FROM Empleados WHERE (Sueldo > 100 AND Sueldo < 500) OR (Provincia = 'Madrid' AND Estado = 'Casado');

procedure TConsulta.CmdBuscar2Click(Sender: TObject);var consulta : String;beginconsulta := 'SELECT producto, precio FROM inventario.db WHERE producto LIKE'''+'%'+Edit1.Text+'%'+''''+'ORDER BY producto';QUERY1.SQL.Clear;QUERY1.SQL.ADD(consulta);QUERY1.Open;end;

Page 6: Practica Bases de Datos Buenisima

Quick Reports:Instalar el componente para Borland Delphi 7:The Quick Reports package is not installed in the IDE by default. To runthese demos you must first install dclqrt70.bpl.To install, go to the IDE menu and select the "Component" menu item. From there,select "Install Packages". In the dialog select the "Add" button and then browseto the \bin directory of Delphi (default location is c:\Program Files\Borland\Delphi7\bin). Select the file named dclqrt70.bpl.The QuickReport pacakge is now installed and you can run the example programs.

Todo informe Quick Report debe contar con un componente TQuickReport, que es el que gestiona los elementos generales, actuando como una plantilla del informe. Este componente se encuentra en el menú de solapas que lleva el nombre QReport.Haciendo clic derecho sobre el componente accedemos al menú contextual. Entrando a Report settings, podemos modificar el formato de página del informe (tipo de papel a usar, márgenes, tipografía, etc.). O bien en las propiedades del componente QReport, en la propiedad Page. O también haciendo doble clic en el componente QReport.La propiedad Show Progress activada en True, mostrará una ventana en la que se indicará que se está preparando el informe, con una barra de progreso y un botón que permite cancelar el proceso.Mediante la propiedad Record Count, podremos saber el número de registros que se han utilizado en la confección del informe.El componente TQRBand nos servirá para definir cabeceras, cuerpo del informe, pies de página, etc. Por lo tanto existen diferentes tipos o estilos de TQRBand. Generalmente la primera propiedad que estableceremos tras insertar un componente de éste tipo en la ficha será BandType, que puede tomar uno de los siguientes valores:

rbTitle Título de informerbPageHeader Cabecera de páginarbDetail Cuerpo del informerbPageFooter Pie de páginarbSummary Resumen final del informe

El componente TQRLabel es similar a un Tlabel, que nos permite insertar en las secciones de nuestro informe títulos o cualquier texto estático que deseemos.El componente TQRDBText nos permite insertar los datos en un informe, asignando a las propiedades DataSet y DataField los valores adecuados para enlazar el componente con la columna de la tabla o consulta que corresponda.El componente TQRSysData es idéntico a un TQRLabel, con la diferencia de que cuenta con una propiedad Data en que podemos seleccionar el tipo de información que contendrá el control. Este componente se utiliza en una sección de cabecera o pie de página. Los valores que puede tomar ésta propiedad son:

qrsTime Hora actualqrsDate Fecha actualqrsDateTime Hora y fecha actualesqrsPageNumber Número de páginaqrsReportTitle Título del informeqrsDetailCount Número de registrosqrsDetailNo Número de registro actual

El componente TQRShape permite realzar el informe, mediante líneas, recuadros y otros elementos gráficos. Las tres propiedades fundamentales son Brush, Pen y Shape, con las que podremos establecer la trama y color de relleno, el aspecto del borde y la figura a dibujar. A la propiedad Shape le podemos asignar los siguientes valores:

qrsRectangle Un rectángulo o cuadradoqrsCircle Un circulo u óvaloqrsVertLine Una línea verticalqrsHorLine Una línea horizontalqrsTopAndBottom Líneas horizontales arriba y abajoqrsRightAndLeft Líneas verticales a izquierda y derecha

El componente TQRDBImage permite mostrar en el informe un gráfico almacenado en una tabla. Las propiedades DataSet y DataField deberán ser asignadas para acceder al campo que contiene el gráfico.Si la imagen a incluir no forma parte de la base de datos, sino que es externa a ella, en lugar del control anterior usaremos un TQRImage. Este es igual al anterior, sin las propiedades DataSet y DataField, a cambio de la propiedad Picture.

Page 7: Practica Bases de Datos Buenisima

Como llamamos al reporte (informe) desde un botón de un formulario?Ejemplo:procedure TPrincipal.CmdReporteClick(Sender: TObject);begin Reporte.QuickRep1.Preview; Form1.QuickRep2.Preview; end;

Informes Maestro / DetalleEn éste tipo de informes los datos que se utilizan son obtenidos de dos o más tablas. Para ello se utiliza el componente TQRSubDetail, que establece un enlace entre los datos de la tabla de detalle y la tabla maestra.Los datos que vamos a obtener pueden ser tanto de un componente TTable como de un TQuery.Si, por ejemplo, tenemos las tablas Proveedores y Artículos, y deseamos crear un informe en el cual se visualicen los datos del proveedor, y los artículos que éste vende, podemos hacerlo de la siguiente forma:Crear el botón en el formulario (Proveedores) desde el cual llamaremos al Informe.Insertar dos componentes TTable (uno para la tabla Proveedores y el otro para la tabla Artículos) y sus respectivos componentes DataSource. Ajustar las propiedades de dichos componentes para que queden de la siguiente forma: Table1 (Maestro) Propiedades

DatabaseName: ferreteria (nombre de la BDD)Name: Table1TableName: proveedores.db (nombre de la tabla)Active: True

DataSource1 PropiedadesDataSet: Table1Name: DataSource1

Table2 (Detalle) PropiedadesDatabaseName: ferreteriaName: Table2TableName: articulos.dbActive: TrueMasterSource: DataSource1 (para relacionar la tabla artículos con la de proveedores)MasterFields: codprov (campo índice que se relaciona con la tabla proveedores)

DataSource2 PropiedadesDataSet: Table2Name: DataSource2

Abrir un nuevo formulario, en el cual diseñaremos el informe mediante el componente QuickRep. Colocamos dicho componente en el formulario y le asignamos la siguiente propiedad:QuickRep1 Propiedad

DataSet: Form4.Table1 (hacemos referencia a la tabla proveedores)De ésta forma creo un enlace al Table1 dentro del formulario Proveedores (Form4), con el que trabajamos anteriormente. Recordamos que Table1 es nuestra tabla Maestra.

Ahora utilizaremos el componente TQRBand. Asignando las siguientes propiedades:QRBand1 Propiedades

BandType: rbPageHeader (para ingresar el titulo del informe, usamos un QRLabel).

QRBand2 PropiedadesBandType: rbDetail (para mostrar los datos del Table1)

QRDBText1 DataSet: Form4.Table1 (mostramos los datos de un campo de la tabla proveedores)DataField: Razon (campo del nombre del proveedor)

QRBand3 PropiedadesBandType: rbGroupHeader (hace un encabezado de grupo para los datos del Table2)

QRSubDetail1 PropiedadesDataSet: Form4.Table2 (hacemos referencia a la tabla articulos)

QRDBText2 DataSet: Form4.Table2 (mostramos los datos de un campo de la tabla articulos)DataField: Denominación (campo del nombre del producto que vende el proveedor)

Page 8: Practica Bases de Datos Buenisima

QRBand4 PropiedadesBandType: rbPageFooter (para crear un pie de página)

QRSysData1 Data qrsDateTime (ingresamos fecha y hora del informe)

QRBand1

QRBand2

QRBand3

QRBand4

QRDBText1

QRSubDetail1

QRDBText2

QRSysData1