Ismael Esquivel Gámez
Se propone, en primer lugar, que la introducción y actualización de los elementos que conforman cada uno de los criterios la efectúe el usuario administrador del sistema. Para ello, se necesita registrar:
• Los verbos que se han de verificar por cada pregunta
• Los referentes que se necesitan discriminar en cada cuestionamiento
en tablas como BASADAS_EN y BASADAS_EN1 cuyas estructuras y vinculaciones con otras, se observa en la figura 5.14.
Figura 5.14 Estructura y vinculaciones de BASADAS_EN y BASADAS_EN1
En segundo término, se propone la construcción dinámica de los comandos SQL anteriormente citados. A continuación, se muestra en la figura 5.15 los pasos a seguir y se complementa con un ejemplo.
Figura 5.15 Pasos para la consulta
Ejemplo.
Pregunta a. ¿En que actividades está involucrada, como participante u organizadora?
Criterios.
Objeto Referente = Aquellos que implican un evento de tipo cultural, social, cultural, científico, tecnológico, deportivo.
Verbo = Aquellas acciones que impliquen la organización o participación
Consulta.
Select *
From Noticias
Where ObjetoRef in (‘conferencia’, ‘congreso’, ‘encuentro’, ‘partido’,...)
And verbo in (‘organizar’, ‘celebrar’, ‘participar’, …)
Para adecuar el anterior comando, primero se requiere cargar en la tabla PREGUNTAS, el contenido de la pregunta.
insert into PREGUNTAS values (1, ‘¿En que actividades está involucrada, como participante u organizadora?’)
Luego y a partir del contenido de las tablas ACCIONES y REFERENTES, guardar y/o actualizar el contenido de las tablas BASADAS_EN y BASADAS_EN1, con los comandos:
/* Para guardar */
insert into BASADAS_EN values (1,:Claveobjref)
insert into BASADAS_EN1 values (1, :ClaveVerbo)
/* Para actualizar */
update BASADAS_EN set ClaveobjRef= :Claveobjref where Pregunta = :pregunta
update BASADAS_EN1 set ClaveVerbo= :ClaveVerbo where Pregunta = :pregunta
De modo que el contenido de ambos archivos, podría ser como el mostrado en la tabla 5.13.
Tabla 5.13 Contenido de BASADAS_EN y BASADAS_EN1
Para finalmente, leyendo cíclicamente el contenido de ambas tablas,
Select ClaveObj
From BASADAS_EN
Where Pregunta = 1
into :ClaveObjRef
Select ClaveVerbo
From BASADAS_EN
Where Pregunta = 1
into :ClaveVerbo
construir las condiciones de forma dinámica, así:
Var
Objetos:string;
Verbos:string;
Begin
Objetos:= Objetos + ClaveObjRef + ‘ ‘;
Verbos:= Verbos + ClaveVerbo + ‘ ‘;
Resultando el comando a ejecutar en:
Var
Vsql:string;
Begin
Vsql :=
‘Select N.Fecha, E.NombreEmp, N.Noticia, N.Agente, A.NomVerbo,
R.NomObjRef, N.ObjDet, N.ObjCal, N.Paciente
From EMPRESAS E, A.ACCIONES, REFERENTES R, NOTICIAS N
Where E.ClaveEmp = N.ClaveEmp
And A.ClaveVerbo= N.ClaveVerbo
And R.ClaveObjRef = N.ClaveObjRef
And ObjetoRef in (’+ objetos +‘)’;
Vsql := vsql + ‘ And verbo in (’+ verbos +’)’;
Query.close;
Query.sql.text := vsql;
Query.open;
End;
Para el caso de mostrar solamente ciertas empresas, se puede implementar la condición correspondiente de manera análoga.
Empresas = ‘(:Empresa1, :Empresa2, :Empresa3, :Empresa4…)’
Y agregarla luego de los verbos, en el comando previo, de la siguiente manera:
‘and Empresa in (’+ Empresas +’)’;