IV UNIDAD C++BUILDER INT A LAS BASES DE DATOS

18.- APLICACIONES CON TABLA DE RELACION C++BUILDER


Es tiempo ahora de construir la aplicación final con las tablas construidas con el modelo relacional de bases de datos.

Recordar primero que en general, el usuario solo tendrá acceso y podrá manipular tres de ellas, la tabla de uno, la tabla de muchos y la tabla de relación, las dos primeras de ellas son construidas usando aplicaciones normales por renglón y por tabla, como se realizo en los primeros temas del capitulo, es recomendación y sugerencia que la tabla de uno se construya usando el formato de renglón y la tabla de muchos se construya usando el formato de tabla(DBGrid).

En cuanto a la aplicación a construir con la tabla de relación, también dentro de C++Builder se debe construir los enlaces con las tablas ya descritas, con los siguientes considerandos ;

T1-->TR ; TM-->TDET ; TDET-->TREL
Ej. 1) CTE-->FACTURA ; PROD-->DETFAC ; DETFACT-->FACT
ej. 2) PAC-->RECETA ; MED-->DETREC ; DETREC-->RECETA

OBSERVAR Y TOMAR EN CUENTA COMO Y DE DONDE HACIA DONDE SE GENERAN LOS TRES ENLACES DENTRO de C++BUILDER.

Tomar nota de las diferencias entre los enlaces en DD y en C++Builder.

Estos enlaces se hacen usando dos propiedades extras en los componentes Table dentro del C++Builder, propiedades que se explican y demuestran mas adelante.

Recordar ademas, que es en la primera tabla de cada uno de estos tres tipos de enlaces. donde se establece la relación de enlace o donde se manipula la propiedad correspondiente.

Para construir una aplicación para la tabla de relación:

1.- Aunque es solo la tabla de relacion, la que está aparentemente a la vista del usuario, la forma debera contener los cuatro componentes Table, puesto que esta relación, descansa y ocupa las cuatro tablas.

2.- Estos cuatro componentes Table se colocaran y usaran en el siquiente orden para el ejercicio de aplicación:

Table1 →Tabla de uno (ej. clientes)

Table2 →Tabla de muchos (ej. productos)

Table3 → Tabla de relación (ej. facturas)

Table4 → Tabla de detalle (ej. detallefactura)

3) Igualmente se ocupan cuatro componentes DataSource en el mismo orden, es decir DataSource1 apunta a Table1, DS2 a T2, y así sucesivamente.

4.- La Forma que contiene la tabla de relación se organiza usando tres componentes Panel para su mejor distribución, estos componentes Panel, se construyen y contienen:


DBNav1(DS3) Nva Fact

DBEdit(DS3)


Panel de uno

Cve Cte Nom Cte Dir Cte etc.Cte NVO Cte

DBEdit DBEdit DBEdit DBEdit Buttonl

(DS3) (DS1) (DS1) (DS1)


Panel de detalle

NUM Prod. Nom Prod. etc. Prod.

DBEdit DBEdit DBEdit

(DS4) (DS2) (DS2)

DDBNav2(DS4)


Notas:

1.- Es muy importante que se respete el tipo de componente que va dentro de cada panel y mas importante aún que dichos componentes apunten a el DataSource indicado entre paréntesis.

2.- Igualmente es muy importante, el siguiente código que se deberá poner en el evento OnExit del ultimo DBEdit que se tenga en pantalla y que se cargue o capture por parte del usuario de la tabla de relación y su DataSource3 correspondiente, generalmente es la clave relación o fecha, en particular seria el ultimo componente que se tenga apuntado a DS3, es en este componente, donde se debe usar:

OnExitDBEdit#() { Table3→Refresh();}

Esta instrucción actualiza los datos o renglón de la tabla de relación, antes que la tabla de detalle, haga una búsqueda, dentro de la tabla de relación.

3.- El código de los tres botones de ordenes, es el siguiente:

OnClickButton1(){
//ocultar la pantalla de factura y desplegar o llamar la pantalla de clientes
 }
OnClickButton2(){
Table4->Insert();
// para insertar un nuevo renglón en tabla de detalle
}
OnClickButton3(){
// primero operaciones pertinentes si es que existen y
// al final cerrar con la instrucción
Table4->Refresh();
// para cargar en disco el ultimo renglón de la tabla
// de detalle
}
\

4.- Como se observa los métodos Insert() y Refresh(), usados se derivan y se pueden sustituir con DDBnavegadores y sus botones visibles correspondientes, pero se debe buscar que el usuario los presione en el momento indicado.

5.- Este esquema se puede aplicar a cualquier tabla relacional(recetas, ordenes de compra, solicitudes de servicios, etc.) solo realizar los ajustes correspondientes.

PROCEDIMIENTO PARA CONSTRUCCION DE TABLA RELACIONAL

1.- CARGAR C++Builder.

2.- PONER LOS CUATRO COMPONENTES TABLE EN LA FORMA, Y CARGARLES SUS TRES PROPIEDADES BASICAS(DATABASENAME, TableName, Active),RESPETANDO EL ORDEN SUGERIDO (Table1→Tabla de uno, Table2→Tabla de muchos, Table3→Tabla de relación, Table4→Tabla de detalle).

3.- PONER LOS CUATRO COMPONENTES DataSource QUE SE OCUPAN Y APUNTARLOS A SU TABLA CORRESPONDIENTE EN ORDEN, ES DECIR DS1→TABLE1, DS2→Table2, DS3→Table3, DS4→Table4, USANDO LA PROPIEDAD DATASET DEL COMPONENTE DataSource.

4.- ARMAR Y CARGAR LOS TRES ENLACES ENTRE TABLAS YA SUGERIDOS, ESTO ES T1→TR, 2) TM→ TDET, 3) TDET→TREL, USANDO LAS PROPIEDADES MASTERSOURCE Y MASTERFIELD EN LA PRIMERA DE LAS DOS TABLAS EN CADA RELACION, COMO SE DEMUESTRA CON EL SIGUIENTE EJEMPLO DE LA PRIMERA RELACION ES DECIR, T1→TR.

1. SELECCIONAR LA TABLA DE CLIENTES ( LA DE UNO)

2. CLICK A UN LADO DE LA PROPIEDAD MASTERSOURCE Y SELECCIONAR DATASOURCE3( QUE ES LA DE RELACION O FACTURA) CLICK A UN LADO EN LA PROPIEDAD MASTERFIELD (DONDE ESTAN LOS TRES PUNTILLOS) Y SALE EL SIGUIENTE EDITOR DE CAMPOS DE ENLACE:

3. image138.jpg

4. OBSERVAR QUE EN LA PRIMERA VENTANA ESTA EL CAMPO DE ENLACE DE LA TABLA DE UNO, Y EN LA SEGUNDA ESTAN TODOS LOS CAMPOS POSIBLES A ENLAZAR DE LA TABLA DE RELACION( FACTURA)

5. COMO SE VAN A ENLAZAR AMBAS USANDO EL MISMO CAMPO (CLAVE CLIENTE), SELECCIONAR (CLICK) ESTE MISMO CAMPO (CLAVE CLIENTE) EN LAS DOS VENTANAS Y LUEGO CLICK EN BOTON ADD, EL ENLACE DEBE APARECER EN LA VENTANA DE ABAJO, COMO SE MUESTRA EN LA SIGUIENTE GRAFICA:

6. image110.jpg

7. LUEGO CLICK EN BOTON OK PARA FINALIZAR EL PROCESO

5.- EL PROCEDIMIENTO ANTERIOR 4.1) A 4.6) SE DEBERA REPETIR PARA LOS DOS CASOS RESTANTES(TM→TDET, TDET→TREL).

6.- PONER LOS TRES COMPONENTES PANEL EN LA FORMA Y DENTRO DE CADA PANEL, PONER Y APUNTAR LOS COMPONENTES YA DESCRITOS EN EL MODELO ANTERIOR.

7.- RECORDAR PONER LOS TRES COMPONENTES BUTTON Y CARGARLOS CON EL CODIGO QUE TAMBIEN YA SE INDICO.

EJEMPLO:

1. PANTALLA DE DISEÑO image111.jpg

1. CODIGO

//---------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{ // En esta parte se oculta la ventana de factura
// y se llama la ventana de cliente
}
//--------------------------------------------------
void __fastcall TForm1::DBEdit3Exit(TObject *Sender)
{ Table3->Refresh();
}
//---------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
Table4->Insert();
}
//---------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
// operaciones y terminar con:
Table4->Refresh();
}
//---------------------------------------------------

PANTALLA DE EJECUCION

image112.jpg

TAREAS PROGRAMACION C++BUILDER

1.- CONSTRUIR UN MENU QUE CONTENGA Y LLAME LAS TABLAS CLIENTES, PELICULAS Y RECIBO DE RENTA DE UNA VIDEOTIENDA

2.- CONSTRUIR UN MENU QUE CONTENGA Y LLAME LAS TABLAS PACIENTES, MEDICINAS Y RECETAS DE UNA FARMACIA

3.- CONSTRUIR UN MENU QUE CONTENGA Y LLAME LAS TABLAS PROVEEDOR, PRODUCTOS Y ORDEN DE COMPRA DE UNA REFACCIONARIA

Politica de Privacidad