Tesis ProtoTipo Biblioteca

Descargar como doc, pdf o txt
Descargar como doc, pdf o txt
Está en la página 1de 103

MINISTERIO DE EDUCACION

DIRECCION REGIONAL DE EDUCACION


MOQUEGUA
INSTITUTO SUPERIOR TECNOLOGICO PBLICO
OMATE

CARRERA PROFESIONAL:
COMPUTACION E INFORMATICA

PROTOTIPO DE UN SOFTWARE DE GESTION PARA


MEJORAR LA ATENCION EN LA BIBLIOTECA DEL
ISTP OMATE

PRESENTADO POR:
BALDARRAGO, Jimmy Fabricio
BARREDA GOMEZ, Yordan.

PARA OPTAR EL TITULO PROFESIONAL DE TECNICO EN:


COMPUTACION E INFORMATICA
ASESOR: Ing. BERLY ENRIQUE CALCINA HUALLPA

OMATE MOQUEGUA
2008

MINISTERIO DE EDUCACION
DIRECCION REGIONAL DE EDUCACION MOQUEGUA

INSTITUTO SUPERIOR TECONOLOGICO PUBLICO


OMATE

CARRERA PROFESIONAL:
COMPUTACION E INFORMATICA
PROTOTIPO DE UN SOFTWARE DE GESTION PARA
MEJORAR LA ATENCION EN LA BIBLIOTECA DEL
ISTP OMATE
PARA OPTAR EL TITULO PROFESIONAL DE TECNICO EN:
COMPUTACION E INFORMATICA

APROBADO POR:
PRESIDENTE:

ING. ARCE CORNEJO, Lus Alberto

_________________

1ER MIEMBRO: ING. HURTADO COHAILA, EDGAR

_________________

2DO MIEMBRO: PROF. MARTINEZ MANCHEGO, Noe

_________________

ASESOR:

_________________

ING. CALCINA HUALLPA, Berly Enrique

OMATE PERU
2008

INDICE
PRESENTACION

07

RESUMEN

08

INTRODUCCION

09

CAPITULO I

10

1. MARCO TEORICO

10

1.1. Antecedentes de estudio

10

1.2. Bases tericas

10

1.2.1. Anlisis y diseo de sistemas

11

1.2.2. Lenguaje de programacin

11

1.2.3. Programacin estructurada

13

1.2.4. Programacin orientada a objetos

14

1.2.5. Sistema administrador de base de datos

14

1.2.6. Sistema administrador de aplicacin

14

1.3. Base de datos

14

1.3.1. Algunos conceptos de base de datos

15

1.3.2. Requerimientos de las bases de datos

16

1.3.3. Elementos claves de organizacin en un ambiente


De bases de datos

16

1.3.4. Caractersticas de las bases de datos

17

1.3.5. Ventajas en el uso de bases de datos

17

1.3.6. El sistema manejador de bases de datos

18

1.3.7. Ambiente moderno de base de datos

19

1.4. Diseo de una base de datos

19

1.4.1. Modelo jerrquico de datos

20

1.4.2. Modelo de datos en red

20

1.4.3. Modelo relacional de datos

20

1.5. Creacin de una base de datos

21

1.5.1. Bases de datos documentales

22

1.5.2. Bases de datos distribuidas

22

1.5.3. Bases de datos orientadas a objetos e hipermedia

23

1.6. Concepto de biblioteca

25

1.6.1. La biblioteca en la sociedad de la informacin

28

1.6.2. Un nuevo concepto de biblioteca

32

1.6.3. Los profesionales

34

1.6.4. Los usuarios virtuales

35

1.6.5. Los documentos: la coleccin digital

35

CAPITULO II

37

2. Problema

37

2.1. Descripcin y planteamiento del problema

37

2.2. Justificacin

38

2.3. Objetivos

39

2.4. Diseo metodolgico

39

CAPITULO III

40

3. DESARROLLO DEL PROTOTIPO

40

3.1. Diseo de las tablas libres de la base de datos

40

3.2. Software de Gestin de biblioteca 2008-11-18

43

3.2.1. Bienvenidos al sgb2008-11-18

43

3.2.2. Acceso a sgb2008-11-18

44

3.2.2.1. Barra de mens principal

45

3.2.2.2. Men archivo

45

3.2.2.3. Men edicin

50

3.2.2.4. Men consulta

53

3.2.2.5. Men opciones

54

3.2.2.6. Men reportes

55

3.2.2.7. Men ayuda

55

CONCLUSIONES

56

RECOMENDACIONES

57

BIBLIOGRAFIA

58

ANEXOS

59

PRESENTACIN
Seor Director del Instituto Superior Tecnolgico Publico de Omate,
Seor Jefe de Departamento, seores profesores y miembros del jurado
calificador

de

presentamos

la
a

Carrera

Profesional

consideracin

PROTOTIPO DE UN

de

de

ustedes

Computacin
este

Informtica

documento

Titulado

SOFTWARE DE GESTION PARA MEJORAR LA

ATENCION EN LA BIBLIOTECA DEL ISTP OMATE . Con el firme propsito


de optar el ttulo de PROFESIONAL TCNICO en la especialidad de
COMPUTACIN E INFORMTICA.

En el presente trabajo de investigacin se demuestra las ventajas de la


aplicacin de un software de gestin que permita mejorar la atencin en la
biblioteca del I.S.T.P.O., siguiendo un cronograma de actividades trazados en
el perfil y puestas a prueba en el presente proyecto.

As mismo seores miembros del jurado es probable que encuentren


errores tras, sus prudentes observaciones stas sern tomadas en cuenta para
que las observaciones dadas y las recomendaciones del caso, sean sup eradas
para ejercer la Carrera Profesional de Computacin e Informtica.

RESUMEN
El presente proyecto de tesis denominado PROTOTIPO DE UN
SOFTWARE DE GESTION PARA MEJORAR LA ATENCION EN LA BIBLIOTECA DEL
ISTP OMATE ha sido desarrollado con la finalidad de mejorar la atencin en

la biblioteca del Instituto Superior Tecnolgico Publico Omate, la cual tiene una
poblacin estudiantil de 65 alumnos y as mismo personal docente y
administrativo.
Se debe tener presente que estamos en el siglo XXI y que el avance de
la

tecnologa

en

la

rama

de

la

computacin

esta

evolucionando

vertiginosamente, y as mismo es un reto para los estudiantes desarrollar


software que les permita volcar todos sus conocimientos adquiridos durante su
etapa de formacin.
La aplicacin

del PROTOTIPO DE UN

SOFTWARE DE GESTION

PARA MEJORAR LA ATENCION EN LA BIBLIOTECA DEL ISTP OMATE,


permitir manejar una mejor informacin sobre los materiales bibliogrficos,
estado, situacin, ubicacin, incidencias de los libros ms utilizados y la
bsqueda de algn material en especfico.
Por otro lado el uso y la aplicacin de un software de gestin en la
biblioteca, nos facilitara informacin que sea de gran ayuda a la poblacin
estudiantil y al personal docente de la manera mas dinmica y que despierte en
los alumnos el inters por el uso de material bibliogrfico de la biblioteca.

INTRODUCCIN

Hoy nos encontramos en la era del desarrollo de la computacin, donde


la aplicacin en los diferentes rubros se ha convertido, en una obligatoriedad
con el nico objetivo de brindar una mejor atencin.
El uso de software tiene una gran influencia e impacto en el mbito
industrial, educativo y de investigacin, debido

a que se constituyen en

herramientas de trabajo que dan acceso a una gran cantidad de informacin.


Los avances en la tecnologa y el manejo de la informacin se integran para la
creacin de nuevos programas que permitan optimizar el uso de recursos,
disminuir el tiempo en los procesos, contenidos y actividades, por lo tanto
tambin la utilizacin del software optimiza, el desarrollo de determinadas
capacidades y competencias como: la bsqueda y seleccin de informacin, el
anlisis crtico y la resolucin de problemas.
El uso de un software promover el mejor desenvolvimiento en la
biblioteca, procesando, almacenando, sintetizando, recuperando y presentando
informacin necesaria para alcanzar las metas que produzca satisfaccin e
informacin permanente al docente y alumno.
El presente trabajo est estructurado por tres captulos,

el Primero

referido al marco terico sobre las bases de datos, clasificacin, modelos de


bases de datos, teora y concepto de biblioteca, el Segundo descripcin y
planteamiento del problema,

diseo metodolgico y el tercero muestra el

desarrollo del prototipo del software de gestin de biblioteca 2008, finalmente


conclusiones, recomendaciones y anexos.

CAPITULO I
MARCO TEORICO
1.1. ANTECEDENTES DE ESTUDIO
Se han realizado investigaciones en el Instituto Superior Tecnolgico
Publico Omate en el rea de Computacin e Informtica relacionados al
tema en mencin, as tenemos por ejemplo el trabajo de investigacin
desarrollado por el seor Rolando Ticona Bedoya denominado: Base de
Datos para el Control de Ingresos y Egresos Econmicos del I.S.T.P.
Omate, en la cual se modela una base de datos para organizar y
administrar los ingresos y egresos econmicos de la institucin en
mencin.
Por lo cual se tiene conocimiento que no existe en la institucin un
sistema que permita administrar la gestin en la biblioteca del I.S.T.P.
Omate.
Por esta razon planteamos el siguiente trabajo denominado PROTOTIPO
DE UN SOFTWARE DE GESTION PARA MEJORAR LA ATENCION EN
LA BIBLIOTECA DEL ISTP OMATE como un aporte a la investigacin
en el rea de computacin e informtica.
1.2. BASES TEORICAS
La elaboracin de un prototipo de un software de gestin para mejorar la
atencin en la biblioteca del Instituto Superior Tecnolgico Publico Omate,
esta basado en las teoras de las bases de datos y elaboracin del
prototipo, teniendo en cuenta el avance tecnolgico y cientfico en este
mundo globalizado, por lo cual hemos considerado las siguientes bases
tericas:

10

1.2.1. Anlisis y Diseo de Sistemas


Comprende la parte inicial, etapas y procedimientos en que se da
solucin a un problema de una organizacin, institucin, empresa, etc. y
a travs del uso de la tecnologa de la informacin, siguiendo detallada y
cuidadosamente las etapas para obtener un sistema que satisfaga,
optimice las necesidades de las distintas organizaciones.
1.2.2 Lenguaje de Programacin
Una de las partes ms importantes de la programacin orientada al
manejo de la informacin es el anlisis y diseo de sistemas y de la
base de datos para ello debemos conocer conceptos fundamentales, as
como los principios metodolgicos que constituyen la base para
conseguir un buen diseo e implementacin de un programa adecuado
a una realidad.
Visual FoxPro
Es un lenguaje de programacin diseado para la solucin de
problemas a travs de sus diferentes herramientas. Adems Visual
FoxPro es considerado como un sistema manejador de base de
datos, y de fcil manipulacin.
Software
Es la parte lgica del computador, el computador no puede hacer
absolutamente nada sin los programas que forman la estructura
lgica.
Hardware
Es la parte fsica de la computadora, esta formado por los perifricos
de entrada (Teclado,

ratn, etc.),
11

perifricos de salida (monitor,

impresora, etc.), la unidad central de procesamiento. El propsito de


los perifricos de entrada es de ingresar instrucciones y peticiones al
sistema de procesamiento de datos donde responde mostrndose
por los perifricos de salida sea por medios visuales (monitor) o por
medios escritos visuales (Impresora).
Computadora
Es una maquina electrnica capaz de realizar el procesamiento de
datos rpidamente, consistente en operaciones aritmtica, lgica y
de comparacin o la bsqueda a gran velocidad; y en grandes
cantidades con mucha precisin. En funcin a ciertas instrucciones
recibidas, lo cual nos dar como resultado final, informacin
ordenada y organizada, la cual ser til para la toma de decisiones;
se le conoce comnmente como ordenador personal o computadora
personal.
Informtica
Es la ciencia que estudia el tratamiento formal de la informacin. En
el mundo moderno de hoy, muchas decisiones importantes se toman
sobre la base de la informacin, lo que es til contar con mecanismos
que aseguren informacin fiable, exacta y en el mejor tiempo posible.
Para cumplir este propsito hacen uso de las computadoras que son
herramientas indispensables.
Programa
Un programa de computacin es un conjunto de instrucciones
(ordenes dadas a la maquina), que producir la ejecucin de una

12

determinada tarea, en esencia un programa es un medio para


conseguir un fin u objetivo, para la solucin de problemas.
Instrucciones
Las instrucciones escritas en cdigo fuente y posteriormente
almacenadas en la memoria del computador en el mismo orden en el
que han de ejecutarse, es decir, en una escala de secuencia.
Adems podemos encontrar distintos tipos de instrucciones como
son: de entrada y salida, de asignacin, de lectura, de escritura, y de
bifurcacin.
1.2.3. Programacin Estructurada
Cuando hablamos de programacin estructurada, nos referimos a un
conjunto de tcnicas que con el transcurso del tiempo han evolucionado.
Gracias a estas, la productividad de un programa se ve incrementada de
forma considerable y se reduce el tiempo de escritura, de depuracin y
mantenimiento de los programas. Aqu se hace un nmero ilimitado de
estructuras de control, se reduce la complejidad de los programas y se
logra minimizar los errores.
1.2.4. Programacin Orientada a Objetos
La programacin orientada a objetos no es un concepto difcil de
entender, es simplemente una nueva forma de pensamiento sistemtico,
es decir, en programacin al igual que ocurre en cualquier concepto
nuevo, existe una nueva sintaxis que aprender. Por lo tanto cuando
deseamos la ejecucin de nuestro programa desde la primera hasta la
ltima lnea de cdigo, debemos pensar ahora en la creacin de clases y
objetos de clase. Los conceptos generales mas utilizados en el modelo

13

orientado a objetos son: abstraccin, encapsulamiento y modularidad.


Respecto a programacin son: objeto, clase, mtodo, herencia y
polimorfismo.
1.2.5. Sistema Administrador de Base de Datos (SGBD)
Es un programa de aplicacin que se usa para crear, manipular y
administrar base de datos incluyendo su estructura lgica, fsica y reglas
de integridad. A su vez estos programas cuentan con el soporte
necesario que le permita obtener capacidad de integracin y migracin
con otras bases de datos u otros programas de aplicacin, entre ellos
tenemos: Access, Paradox, Visual FoxPro, SQL Server, Oracle, Sybase,
Informix, SQLBase, y otros.
1.2.6. Sistema Generador de Aplicacin (SGA)
Es un programa de aplicacin que se usa para crear programas de
aplicacin. Para dar una mejor idea los SGA son los conocidos lenguajes
de programacin o interpretes de instrucciones que permiten a los
programadores escribir un conjunto coordinado de instrucciones, entre
ellos tenemos Visual FoxPro, Visual Basic, Visual C++, Power Builder,
Delphi, Net, Etc.
1.3. Base de datos
El trmino de bases de datos fue escuchado por primera vez en 1963, en
un simposio celebrado en California USA.
Una base de datos se puede definir como un conjunto de informacin
relacionada que se encuentra agrupada estructurada.
Desde el punto de vista de lo informtico, la base de datos es un sistema
formado por un conjunto de datos almacenados en discos que permiten el

14

acceso directo a ellos y un conjunto de programas que manipulen ese


conjunto de datos.
Este trabajo se realizara con la finalidad de aprender un poco ms sobre
una base de datos, sus caractersticas, usos, estructuras, diseos, entre
otros.

Fig 01 concepto de una base de datos


1.3.1. Algunos conceptos de bases de datos:
Base

de Datos: es la coleccin de datos aparentes usados por el

sistema de aplicaciones de una determinada empresa.


Base de Datos: es un conjunto de
encuentra agrupada

informacin relacionada que se

o estructurada.

Un archivo por s mismo no

constituye una base de datos, sino ms bien la forma en que est


organizada la informacin es la que da origen a la base de datos.
Base de Datos: coleccin de datos organizada para dar servicio a
muchas aplicaciones al mismo tiempo al combinar los datos de manera
que aparezcan estar en una sola ubicacin

1.3.2. Requerimientos de las bases de datos:


15

El anlisis de requerimientos para una base de datos incorpora las


mismas tareas que el anlisis

de requerimientos del software.

Es

necesario un contacto estrecho con el cliente; es esencial la


identificacin de las funciones e interfaces; se requiere la especificacin
del flujo, estructura y asociatividad de la informacin y debe
desarrollarse un documento formal de los requerimientos.
Requerimientos administrativos: se requiere mucho ms para el
desarrollo de sistemas de bases de datos que nicamente seleccionan
un modelo lgico de base de datos. La bases de datos es una disciplina
organizacional, un mtodo, ms que una herramienta o una tecnologa.
Requiere de un cambio conceptual y organizacional.

Fig 02 Componentes de una base de datos


1.3 3. Elementos claves de organizacin en un ambiente de Bases de
Datos
Sistema de administracin de base de datos.
Administracin de informacin.
Tecnologa de administracin de base de datos.
Usuarios.
Planeacin de informacin y tecnologa de modelaje.
1.3.4 Caractersticas de las bases de datos:

16

Una base de datos contiene entidades de informacin que estn


relacionadas va organizacin y asociacin. La arquitectura lgica de
una base de datos se define mediante un esquema que representa las
definiciones de las relaciones entre las entidades de informacin. La
arquitectura fsica de una base de datos depende de la configuracin
del hardware residente.

Sin embargo, tanto el esquema (descripcin

lgica) como la organizacin (descripcin fsica) deben adecuarse para


satisfacer los requerimientos funcionales y de comportamiento para el
acceso al anlisis y creacin de informes.
1.3.5. Ventajas en el uso de bases de datos:
La utilizacin de bases de datos como plataforma para el desarrollo de
Sistemas de Aplicacin en las Organizaciones se ha incrementado
notablemente en los ltimos aos, se debe a las ventajas que ofrece su
utilizacin, algunas de las cuales se comentarn a continuacin:

Globalizacin de la informacin: permite a los diferentes usuarios


considerar la informacin como un recurso corporativo que carece
de dueos especficos.

Eliminacin de informacin inconsistente: si existen dos o ms


archivos con la misma informacin, los cambios que se hagan a
stos debern hacerse a todas las copias del archivo de facturas.

Permite compartir informacin.

Permite mantener la integridad en la informacin: la integridad de la


informacin es una de sus cualidades altamente deseable y tiene
por objetivo que slo se almacena la informacin correcta.

17

Independencia de datos: el concepto de independencia de datos es


quizs el que ms ha ayudado a la rpida proliferacin del
desarrollo de Sistemas de Bases de Datos. La independencia de
datos implica un divorcio entre programas y datos.

Fig 03 Ventajas del uso de una base de datos


1.3.6. El sistema manejador de bases de datos (dbms).
Es un conjunto de programas que se encargan de manejar la creacin y
todos los accesos a las bases de datos. Se compone de un lenguaje de
definicin de datos, de un lenguaje de manipulacin de datos y de un
lenguaje de consulta.
Una de las ventajas del DBMS es que puede ser invocado desde
programas de aplicacin que pertenecen a Sistemas Transaccionales
escritos en algn lenguaje de alto nivel, para la creacin o actualizacin
de las bases de datos, o bien para efectos de consulta a travs de
lenguajes propios que tienen las bases de datos o lenguajes de cuarta
generacin.

1.3.7. Ambiente moderno de base de datos:


18

La tecnologa de las bases de datos puede eliminar de un tajo muchos


problemas creados por la organizacin tradicional de archivos.

Una

definicin ms rigurosa de bases de datos dice que es una coleccin de


datos

organizada

para

dar

servicios

eficientemente

muchas

aplicaciones al centralizar los datos y minimizar aquellos que son


redundantes. En vez de separar los datos en archivos por separados
para cada aplicacin, los datos son almacenados fsicamente para
aparecer a los usuarios como almacenados en una sola ubicacin: una
sola base de datos sirve a muchas aplicaciones. Por ejemplo, en vez de
que una corporacin almacene los datos de personal en sistemas de
informacin separados y archivos separados para personal, nominas y
prestaciones, la corporacin podra crear una sola base de datos para
Recursos Humanos.
1.4. Diseo de una base de datos
Existen distintos modos de organizar la informacin y representar las
relaciones entre los datos en una base de datos. Los Sistemas
administradores de bases de datos convencionales usan uno de los tres
modelos lgicos de bases de datos para hacer seguimiento de las
entidades, atributos y relaciones. Los tres modelos lgicos principalmente
de bases de datos son el jerrquico, de redes y el relacional. Cada modelo
lgico tiene ciertas ventajas de procesamiento y tambin ciertas ventajas
de negocios.

1.4.1. Modelo jerrquico de datos:

19

Una clase de modelo lgico de bases de datos que tiene una estructura
arborescente. Un registro subdivide en segmentos que se interconectan
en relaciones padre e hijo y muchos ms. Los primeros sistemas
administradores de bases de datos eran jerrquicos. Puede representar
dos tipos de relaciones entre los datos: relaciones de uno a uno y
relaciones de uno a muchos.
1.4.2. Modelo de datos en red:
Es una variacin del modelo de datos jerrquico. De hecho las bases de
datos pueden traducirse de jerrquicas a en redes y viceversa con el
objeto de optimizar la velocidad y la conveniencia del procesamiento.
Mientras que las estructuras jerrquicas describen relaciones

de

muchos a muchos.
1.4.3. Modelo relacional de datos:
Es el ms reciente de estos modelos, supera algunas de las limitaciones
de los otros dos anteriores. El modelo relacional de datos representa
todos los datos en la base de datos como sencillas tablas de dos
dimensiones llamadas relaciones.

Las tablas son semejantes a los

archivos planos, pero la informacin en ms de un archivo puede ser


fcilmente extrada y combinada

20

Fig 04 Modelos de base de datos


1.5. Creacin de una base de datos
Para crear una base se deben realizar dos ejercicios de diseo: un diseo
lgico y uno fsico. El diseo lgico de una base de datos es un modelo
abstracto de la base de datos desde una perspectiva de negocios,
mientras que el diseo fsico muestra como la base de datos se ordena en
realidad en los dispositivos de almacenamiento de acceso directo.

El

diseo fsico de la base de datos es llevado a cabo por los especialistas


en bases de datos, mientras que el diseo lgico requiere de una
descripcin detallada de las necesidades de informacin del negocio de
los negocios actuales usuarios finales de la base. Idealmente, el diseos
de la base ser una parte del esfuerzo global de la planeacin de datos a
nivel institucional.

21

El diseo lgico de la base de datos describe como los elementos en la


base de datos han de quedar agrupados.
El proceso de diseo identifica las relaciones entre los elementos de datos
y la manera ms eficiente de agruparlos
requerimientos de informacin.

para cumplir con los

El proceso tambin identifica elementos

redundantes y los agrupamientos de los elementos de datos que se


requieren para programas de aplicaciones especficos.

Los grupos de

datos son organizados, refinados y agilizados hasta que una imagen


lgica general de las relaciones entre todos los elementos en la base de
datos surja.
1.5.1. Bases de datos documentales:
Son las derivadas de la necesidad de disponer de toda la informacin en
el puesto de trabajo y de minimizar los tiempos del acceso a aquellas
informaciones que, si bien se utilizan con frecuencia, no estn
estructuradas convenientemente. Esto se debe a que la procedencia de
la informacin

es muy variada (informes, notas diversas, peridicos,

revistas, muchos ms.


1.5.2. Bases de datos distribuidas:
Es aquella que se almacena en ms de un lugar fsico. Partes de la
base de datos se almacena fsicamente en un lugar y otras partes se
almacenan y mantienen en otros lugares. Existen dos maneras de
distribuir una

base de datos. La base de datos central

puede ser

particionada de manera que cada procesador remoto tenga los datos


necesarios sobre los clientes para servir a su rea local.

Los cambios

en los archivos pueden ser justificados en la base de datos central sobre

22

las bases de lotes, en general por la noche. Otra estrategia tambin


requiere de la actualizacin de la base central de datos en hojas no
laborables.
Aun otra posibilidad (una que se emplea en bases de datos grandes) es
mantener solo un ndice central de nombres y almacenar localmente los
registros completos.
Los procesamientos distribuidos y las bases de datos distribuidas tienen
como beneficios e inconvenientes. Los sistemas distribuidos reducen la
vulnerabilidad de un lugar nico central y voluminoso.

Permiten

incremento en la potencia de los sistemas al adquirir mini computadoras


que son ms pequeas y baratas. Finalmente incrementan el servicio y
la posibilidad de respuesta de los usuarios locales.

Los sistemas

distribuidos, sin embargo, dependen de la alta calidad de las lneas de


telecomunicaciones, las cuales a su vez son vulnerables.

Adems, las

bases de datos locales pueden algunas veces alejarse de las normas y


las definiciones de los datos centrales y hacen surgir problemas de
seguridad al distribuir ampliamente el acceso a datos de alta
sensibilidad.
1.5.3. Bases de datos orientadas a objetos e hipermedia:
Estas son capaces de almacenar tanto procesos como datos. Por este
motivo las bases orientadas al objeto deben poder almacenar
informacin

no

convencional

(como

imgenes

estticas

en

movimiento, colecciones de sonidos, entre otros). Este tipo de bases de


datos deriva directamente de la llamada programacin orientada a
objetos, tpica por ejemplo del lenguaje C/C++.

23

Entre las ventajas de las bases de datos orientadas al objeto destaca la


posibilidad de tratar los casos excepcionales, que suelen ser la mayora
en la prctica cotidiana, en lugar de tratar de insertar la realidad en unos
patrones rgidos que violentan para hacerla coincidir con los esquemas
utilizados. Adems, nadie pone en duda que es ms cmodo manejar
objetos de entorno que no es familiar, que trabaja, por ejemplo, con
tablas, esquemas, cuadros, muchos ms.
Entidad
Puede ser una persona, objeto, suceso o casa, que tiene datos
propios para la recopilacin de informacin por ejemplo una relacin
de pacientes alumnos y clientes corresponden a la entidad personal,
un lote de autos, medicamentos corresponden a la entidad objeto,
una operacin de crdito o una transferencia corresponderan a la
entidad suceso.
Dato
Elemento individual de un campo, se identifica por un nombre y tiene
un valor especfico. Los datos pueden abarcar subdatos como es el
caso de una fecha.
Campo
Conjunto de datos de un mismo tipo, por ejemplo un conjunto de
nombres, un conjunto de notas.
Registro
Conjunto de datos pertenecientes a una misma entidad, la fecha o
registro consta de campos, cada campo tiene una longitud definida,
por lo tanto los registros son de longitud fija.
24

Tabla
Es una coleccin de registros pertenecientes a una misma entidad.
Datos Diferenciales
a)

Biblioteca
Lugar

destinado

al

depsito

de

informacin

registrada,

principalmente en forma de libros. No obstante, aunque la


palabra biblioteca deriva de la latina biblioteca y esta a su vez
lo hace del vocablo griego biblin (libro), la acepcin moderna
del trmino hace referencia a cualquier recopilacin de datos
recogida en muchos otros formatos: microfilmes, revistas,
grabaciones, pelculas, diapositivas, cintas magnticas y de
video, as como otros medios electrnicos
b)

Libro.
Conjunto de varias paginas de papel, papiro u otra materia en la
que se pueda escribir, unidas entre si y que contiene textos,
ilustraciones o msica. Al contrario de los monumentos en los
que aparecen textos, esculpidos, los libros se pueden
transportar fcilmente y, a diferencia de los diarios personales,
que pueden tener forma de libro, estn concebidos para ser
divulgados al publico.

1.6. Concepto De Biblioteca


La conceptualizacin del trmino biblioteca, responde a una realidad
compleja y mltiple difcil de sistematizar en una definicin globalizadora,
ms an cuando se trata de una entidad de carcter dinmico y por lo
tanto cambiante.
25

Esta realidad y diversidad se ponen de manifiesto de forma ms patente


en el momento actual, cuando la biblioteca se encuentra en unos
momentos transnacionales, derivados, entre otros aspectos, del cambio
tecnolgico y de una concepcin econmica de las instituciones de
servicios y culturales.
A estos condicionantes se suman otros que dificultan la elaboracin de
una definicin vlida:

La diversificacin de tipos de usuarios.

La diversificacin de materiales susceptibles de ser albergados en una


biblioteca (CD-ROM, videos, discos, etc.)

Una concepcin ms dinmica de la informacin, en la que se


desarrollan tareas y servicios tradicionales, de los centros de
documentacin (indizacin, condensacin, DSI.)

Haciendo un poco de historia, podemos observar que la biblioteca ha sido


considerada desde diferentes puntos de vista en funcin de las
circunstancias.
La biblioteca de hace apenas treinta aos era una institucin cuyo fin
ltimo se concretaba casi exclusivamente en la conservacin y
transmisin del Patrimonio Documental. Los aos 70-80 suponen la
consolidacin de los conceptos de usuario y servicio; se trata de una
etapa de buena coyuntura econmica y de presupuestos generosos. Por
el contrario, los aos 90 conocen un momento general de crisis; lo que
supone una restriccin presupuestaria que afecta ms de cerca a
instituciones culturales, generalmente no consideradas esenciales en la
mentalidad de quienes tienen que distribuir los presupuestos. As
26

aparecen trminos como costos, calidad, marketing, evaluacin, y gestin


aplicados a instituciones de servicios1.
Las bibliotecas al servicio pblico en general deben replantearse sus
metas y objetivos con vistas a justificarse ante quienes los costean. As se
produce una paradoja, ya que se dan las mayores posibilidades de
acceso (automatizacin, redes de carcter universal), frente a la aparicin
de una filosofa que pone su acento en los costes, y por lo tanto
restrictiva. Por todo ello se habla de un concepto en crisis 2
Los autores que se han consagrado a la biblioteconoma cientfica han
venido definindola principalmente desde tres puntos de vista diferentes.
Por una parte, existe una corriente tcnica, para la cual la biblioteca
principalmente la define una coleccin y un local, siendo una
consideracin en franca decadencia. Una corriente humanstica, para la
cual la biblioteca sera el principal medio para crear hbitos lectores,
considerando que la biblioteca tiene un papel fundamental para contribuir
a la paz y a la democracia, en este contexto se desarrollara el concepto
desarrollado por el Manifiesto de la UNESCO 3 de 1994. Existe una tercera
concepcin que es la de considerar a la biblioteca como un sistema de
una serie de elementos interrelacionados tendentes a conseguir un fin
especfico, en esta lnea esta Serrai, Berta Enciso, Shera... etc., siendo la
consideracin con ms vigencia.
Sera prolijo enumerar todas y cada una de las conceptualizaciones que

_____________________________________________________________________________________________________________
1 En ingls "Non profit institutions"
2 MAGAN WALS, Jos Antonio. El concepto de biblioteca en la actualidad: bibliotecas realesfrente a bibliotecas virtuales. Tratado bsico
de biblioteconoma. Madrid : UniversidadComplutense, 1995. pp. 21-48
3 MANIFIESTO de la UNESCO para bibliotecas pblicas. Madrid ; Salamanca : Fundacin Germn Snchez Ruiprez, 1995

27

se han hecho al respecto. Generalmente todos coinciden en cuatro


aspectos que actuaran interrelacionados: informacin, organizacin,
usuarios y personal.
No obstante, cada clase de biblioteca tiene diferentes objetivos; lo que
establece una estructura, personal y necesidades especficas diferentes,
an teniendo en cuenta que existe una permeabilidad entre los distintos
tipos de bibliotecas y una concepcin bsica que subyace a todas ellas.
1.6.1. La Biblioteca En La Sociedad De La Informacin
La sociedad de los ltimos aos ha experimentado cambios importantes.
Estos pueden percibirse de manera ms patente en los campos de la
informtica, la informacin y la tecnologa de las comunicaciones. Estos
han impulsado el desarrollo de un nuevo concepto: "Sociedad Postindustrial" o "Sociedad de la Informacin".
La sociedad de la informacin ser aquella en la que una parte
significativa de la actividad humana y, por supuesto, de la generacin de
la riqueza, proceder de la produccin, de la manipulacin y el uso de la
informacin.
La informacin ha sido

siempre un componente importante de la

actividad econmica, pero nunca se haba despertado en torno a ella,


tantas y tan grandes expectativas de produccin, de riqueza y progreso 4.
El desarrollo de Internet pone de relieve la evolucin notable de la
sociedad de la informacin, como fuente de productos y servicios
diversos; en el que la red informtica puede posibilitar un nuevo
desarrollo basado en la economa del conocimiento.
_____________________________________________________________________________________________________________
4 Alabau, Antonio. Informacin, sociedad de la informacin y telecomunicaciones. Jornadas Espaolas De Documentacin.
(6.1998.Valencia); p.5-19.

28

Los datos ponen de manifiesto que el sector de la informacin est en


continuo

crecimiento

en

proporcin

al

resto

de

los

sectores

profesionales; este aumento se ha hecho ms evidente en los ltimos


aos.
Dentro de este contexto de comunicacin de la informacin est la
biblioteca Las bibliotecas, especialmente aquellas que trabajan en reas
especializadas -universitarias y de investigacin- tienen un reto
importante ante s para poder desarrollar sus potencialidades como
verdaderos centros de apoyo a la investigacin, que proporcionan
servicios documentales a la medida de las necesidades de sus usuarios.
En este contexto cabra preguntarse qu papel desempea la biblioteca
en la construccin de la Sociedad de la Informacin. Facilitar informacin
es un aspecto que siempre ha estado presente entre las funciones
desarrolladas por la biblioteca, y probablemente no exista un cambio en
las funciones conceptuales, aunque si se ha operado una autntica
revolucin en cuanto a los medios y capacidades disponibles para
optimizar esos objetivos.
Los profesionales de la informacin han ido incorporando nuevos roles
profesionales en un proceso continuo y progresivo, adaptando e
incorporando sus tareas al uso de la Tecnologa de la Informacin. 5.
El trabajo en redes de informacin en las bibliotecas responde a dos
orientaciones:
La biblioteca como usuaria de los recursos y servicios de informacin
en Internet
_______________________________________________________________________________________________
5 Martnez, F.J., Formacin de sistemas de informacin electrnica y nuevos documentos: Scire.

29

La biblioteca como proveedora de servicios de informacin en


Internet
Ambos aspectos lejos de entrar en contradiccin se complementan, pues
para la provisin de esos servicios, la red supone una herramienta de
primera utilidad de cara a apoyar y mejorar los procesos tcnicos y de
informacin, que servirn de sustento a los servicios que proporciona la
biblioteca en la propia red.
Los documentos electrnicos, aunque aparecieron en los aos 80
tanto en lnea como en CD-ROM- no tuvieron un uso generalizado hasta
que no han sido de uso comn las redes de informacin. El documento
electrnico ha supuesto una simplificacin del proceso de publicacin:
abaratando los costes de produccin, facilidad de elaboracin, rapidez
de edicin y capacidad de acceso, ya que cualquier documento que se
edita en la red por el slo hecho de hacerlo tiene una potencialidad de
uso universal, lo que a su vez conlleva unos cambios sustanciales en las
pautas de consumo y comunicacin, sobre todo en el mbito acadmico
y en la edicin cientfica, donde se dan las circunstancias apropiadas
para la sustitucin de la edicin tradicional 6.
Esto por otro lado afecta a la edicin comercial, ya que en alguna
medida este sector est perdiendo el control sobre la produccin, al
convertirse de esta manera la publicacin electrnica en un producto
directo entre los generadores de informacin cientfica y sus inmediatos
consumidores.

_______________________________________________________________________________________________
6 Ramos Simn, L.F. Las publicaciones electrnicas transformarn el sector de la edicin cientfica y las funciones del
bibliotecario en la Universidad: Cuadernos De Documentacin Multimedia, vol. 6-7. (1998)

30

Si bien hay que poner de manifiesto que esta facilidad para la edicin
hace de Internet un voluminoso almacn de informacin de muy diversos
contenidos, calidad y utilidad -debido en buena parte al carcter
descentralizado de la red-, lo que ha llevado a que algunos autores la
hayan comparado con una gran biblioteca sin catlogos, pues no
responde a criterios de informacin estructurada orientada a la
recuperacin, lo que hace de ella un depsito catico para la publicacin
y distribucin de documentos de gran variedad de contenidos, formatos y
perdurabilidad provenientes de todo el mundo. 7
Todos estos aspectos que afectan al proceso de investigacin, edicin,
difusin y consumo de la informacin. Tambin tienen su incidencia en el
proceso de informacin y comunicacin que desarrolla la biblioteca de
investigacin, abriendo a sta nuevas posibilidades como entidad
gestora del conocimiento8 Este concepto abarca todo el proceso antes
mencionado, desde la relacin bidireccional produccin-consumo de
informacin hasta la difusin de la misma.
INVESTIGACION

DIFUSION

RESULTADOS

EDICION

Fig 05 Gestin del conocimiento


La tarea fundamental de la biblioteca en este contexto sera la organizacin de
_______________________________________________________________________________________________
7 Olvera Lobo, Mara Dolores. Mtodos y tcnicas para la indizacin y recuperacin de los recursos de la World Wide
Web. Boletn de la Asociacin Andaluza de Bibliotecarios. Ao 14, n.57 (1999) pp. 11-22..
8 Wilson, T. Electronic publishing : libraries, universities, scientific societies, publishers, Bielefeld Colloquium (1996.
Bielefeld, Alemania)

31

los recursos de informacin en red, posibilitando un mejor acceso a


Internet a travs de servicios que de alguna manera garanticen un
acceso efectivo a los recursos. Cabra preguntarse que servicios pueden
ser estos:
La biblioteca por las tareas tradicionales que ha venido desarrollando
a lo largo de su devenir histrico -seleccionando, adquiriendo y
procesando informacin- es la entidad clave para la organizacin del
conocimiento en la red, de cara a crear y aplicar sistemas
estructurados de recuperacin de informacin: Metadatos 9 y sistemas
de bsqueda de informacin distribuida (protocolo Z39.50 10)
Aprovechar la capacidad de las nuevas tecnologas para proveer
servicios de informacin.
Otro papel que se ha asignado a la biblioteca en este contexto es
como entidad garante democrtico de acceso a la informacin,
otorgando al bibliotecario la tarea de mediador entre la informacin y
el usuario, en el cual tendran gran importancia las tareas de
formacin de usuarios.
La biblioteca en este contexto est generando un nuevo concepto de
biblioteca; La Biblioteca Digital.
1.6.2. Un Nuevo Concepto De Biblioteca: La Biblioteca Virtual
La aplicacin de la tecnologa de la informacin posibilita la definicin de
una nueva estrategia de desarrollo de las organizaciones documentales.

_______________________________________________________________________________________________
9 Dubln Core http://purl.org/DC
Miller, Paul. Metadata for masses http://www.ariadne.ac.uk./issue5/metadata-masses
Powel, A. Dublin Core managemet. http://www.ariadne.ac.uk./issue10/dublin
10 Lpez de Sonsaga, Arantxa. Z39.50 un estndar virtual o real? Jornades Catalanes de Documentai (7.1999.
Barcelona) pp. 479-486

32

Entre ellas el establecimiento de espacios virtuales a travs de los


cuales

los

usuarios

pueden

acceder

las

colecciones

con

independencia de las coordenadas espaciales o temporales


Esto

supone

una

reorganizacin

de

los

procesos

tcnicos

administrativos que conforman la biblioteca: sus recursos materiales,


humanos y servicios para dotarla de una infraestructura cliente-servidor
adecuada11.
Actualmente, la incorporacin cada vez mayor de materiales en soporte
electrnico hace que la gestin de la coleccin de materiales en soporte
tradicional

incremente

electrnicos, tarde
digitales,

stas

su
o

complejidad,

temprano, dominen

aunque
en

las

los

recursos
bibliotecas

seguirn albergando materiales en soporte papel,

formando parte de un servicio nico que administre dos aspectos


diferentes: recursos digitales y tradicionales.
Algunos autores hablan de la biblioteca "hbrida" 12 que sera una etapa
previa a la biblioteca digital, cuya consecucin depender ms de que se
opere un cambio cultural que del propio desarrollo tecnolgico.
La progresiva implantacin de la biblioteca digital tendr efectos sobre
las diferentes reas de la misma, sobre el desarrollo de la coleccin,
sobre su uso, sobre el servicio de referencia y sobre la formacin de
usuarios. Pero como toda innovacin tecnolgica, sta producir una
crisis transaccional que el tiempo y el uso incorporarn a sus rutinas
habituales.
______________________________________________________________________________________________
11 Lundquist, Mith; Daggett, Steven, and McClung, Mark. Technical infraestructure of electronic library. Library Hi Tech.
1998; 16(3-4): 110-124.
12Oppenheim, Charles and Smithson, Daniel. What is the hybrid library? Journal of Information Science. 1999; 25(2):
97-112.

33

Las ventajas que ofrece la biblioteca virtual se basan en la premisa de


que todos los usuarios tienen las mismas posibilidades de acceso a los
recursos de la biblioteca, independientemente de las coordenadas
espaciales y temporales del usuario, ya que es un servicio permanente
que al que se puede acceder desde cualquier parte y a cualquier hora,
adems de poder ser utilizado al mismo tiempo por varios usuarios a la
vez de manera interactiva.
De esta manera, se crea una comunidad virtual a la que se posibilita
acceder a todos los servicios tradicionales de la biblioteca presencial,
posibilitndoles adems disponer de toda una serie de servicios
adicionales derivados del diseo de la biblioteca digital. Una biblioteca
digital ofrece todos los servicios necesarios de forma remota, poniendo a
disposicin de los usuarios servicios tradicionales: informacin y
referencia, prstamo, obtencin de documentos, etc. y herramientas
adecuadas a las particularidades de este tipo de usuarios: textos
electrnicos, revistas electrnicas, sumarios de revistas, resmenes de
documentos, etc.13
1.6.3. Los profesionales
Desde la formulacin del concepto de sociedad de la informacin, a
mediados de los aos 80, los empleos en el sector de la informacin se
han incrementados y diversificados rpidamente.
El papel que los bibliotecarios tendran como proveedores de servicios
externos a sus clientes se pueden concretar sobre aquellas aportaciones

_______________________________________________________________________________________________
13 Prez Alarcn, Adoracin; Serrano Muoz, Jordi, and Enrech Larrea, Marta. Una biblioteca virtual para una
comunidad virtual. Jornadas Espaolas De Documentacin (6. 1998.Valencia); p. 715-728.

34

para las que estos profesionales estn especialmente dotados, por su


conocimiento de la naturaleza de la informacin, su contexto y los
hbitos bsicos de quienes cotidianamente trabajan con informacin 14.
Entre las tareas ms habituales del bibliotecario virtual estn: la
necesidad de organizacin y sistematizacin de los conocimientos,
establecer filtros informativos, gestin de los nuevos soportes de la
informacin y, especialmente, las tareas de formacin de usuarios, cuyo
grado de implicacin vendr determinado por la complejidad de las
infraestructuras de las bibliotecas digitales15.
Un asunto a considerar es la necesaria relacin bibliotecario-usuarios
cuando uno y otro mantienen una comunicacin a distancia; ello conlleva
a la necesidad de conocer a este usuario virtual y a desarrollar tcnicas
de anlisis de mercado que ayuden a determinar las necesidades y
conductas informativas de stos, para poder anticiparse a sus demandas
informativas.
1.6.4. Los usuarios virtuales
La biblioteca debe de atender a este segmento de la comunidad que se
conecta a distancia y que tiene unas caractersticas y necesidades
especficas, tambin debe de recabar informacin para conocer mejor a
este usuario a fin de mejorar la calidad de los servicios y su nivel de
satisfaccin con los mismos.16
1.6.5. Los documentos: la coleccin digital
La biblioteca digital tiene que tener un soporte virtual para que la
______________________________________________________________________________________________
14 Nancy, John R. Providing outsorced Internet services to Government Agency. IFLA Journal. 1999; 25(2): 87-96.
15 Ingwersen, Peter. The role of libraries and librarians in organising digital information. Libri.1999; 49(1): 11-15.
16 Cooper, Rosemarie; Dempsey, Paula R.; Menon, Vanaja, and Millson-Martula, C. Remote library users - needs and
expectations. Library Trends. 1998; 47(1): 42-64

35

disponibilidad y accesibilidad de una parte fundamental de los


documentos a texto completo que ofrece a sus usuarios en el servicio
tradicional, pueda ser ofertada a los usuarios en lnea.
En este contexto es inexcusable eludir los aspectos relativos al derecho
de reproduccin y de comunicacin pblica de los documentos y su
adaptacin al nuevo entorno electrnico, ya que condiciona los futuros
modos de utilizacin de las obras en la red y marca las lneas de
actuacin de los diferentes actores en la sociedad de la informacin 17.
Se trata de aspectos que no se han abordado con profundidad, y que
sern objeto de inmediatos desarrollos.
Cada da es ms habitual encontrarse documentos en ambos formatos tradicional y electrnico - y la mayora de los distribuidores ya ofrecen
bases de datos de publicaciones peridicas a texto completo de todas
las reas de conocimiento. Otra posibilidad la brinda, sobre todo para
aquellas publicaciones que no estn en formato digital, la creacin de
listas de distribucin, recurso dinmico
proporciona

informacin

al usuario

de

que

peridicamente

las publicaciones que va

incorporndose a la biblioteca18.
De esta manera la biblioteca no slo es transmisora de informacin, sino
que se convierte en generadora y distribuidora de informacin. 19

______________________________________________________________________________________________
17 tienne, Anne-Sophie. Actualit du droit d'auteur dans la socit de l'information. Bulletin des Bibliothques de
France. 1998; 43(3): 8-12.
18 InfoDOC : lista de informacin en Biblioteconoma y Documentacin de la Biblioteca de la Facultad de Traduccin y
Documentacin http://www.jcl.bcyl.es/InfoDOC
19 Prez Alarcn, Adoraci Op. Cit

36

CAPITULO II
2.- PROBLEMA
2.1. DESCRIPCION Y PLANTEAMIENTO DEL PROBLEMA
Estando en la era digital, del conocimiento en un mundo globalizado,
donde no existen limites para acceder a la informacin, la automatizacin
de los procesos y servicios en las instituciones publicas y privadas son
necesarias para una mejor atencin al usuario final.
El instituto Superior Tecnolgico Publico Omate como centro formador se
ve en serias limitaciones y dificultades probablemente por la influencia de
la nueva tecnologa, los cambios bruscos de la era del conocimiento, en
relacin con el manejo del material bibliogrfico y la informacin
digitalizada,

son

elementos

necesarios

para

complementar

los

conocimientos impartidos en el saln de clases, por esta razn se ha


visualizado que la institucin no cuenta con un software de Gestin de
Biblioteca que les permita a los alumnos, docentes y personal
administrativo, acceder a toda la informacin del material bibliogrfico,
enciclopedias virtuales, videos multimedia, debido a que esta informacin
se encuentra en un documento impreso, lo cual nos dificulta en la
bsqueda de algn material bibliogrfico y/o tema especifico.
El presente proyecto nos permitir poder acceder a un software de
gestin de biblioteca, el cual nos brindara toda la informacin necesaria
requerida por un usuario, as mismo

brindara la informacin de los

contenidos de un material bibliogrfico, sin tener la necesidad de


solicitarlo para revisarlo.

37

2.2. JUSTIFICACION.
Debido a que los alumnos, docentes y comunidad requieren de
informacin

para

la

realizacin

de

trabajos,

investigaciones,

actualizaciones acadmicas; as como la adquisicin de nuevos


conocimientos y recopilacin de datos para asimilar el conocimiento, el
ISTP Omate cuenta con una biblioteca puesta al servicio de la
comunidad estudiosa la cual trabaja de una forma mecanizada y brinda un
servicio inadecuado que no satisface las expectativas tanto del alumnado,
docentes y publico en general.
La idea de ingresar a una biblioteca implica entre otras cosas una
atencin cmoda y rpida, es decir, acceso a la informacin de una
manera ordenada, eficaz y automatizada de acuerdo al avance
tecnolgico, pero para que se pueda trabajar cmodamente con las
caractersticas antes mencionadas y mejorar los procesos de atencin, es
necesario contar con la infraestructura adecuada.
Por tal motivo pretendemos automatizar el proceso de atencin de la
biblioteca del ISTP Omate.
En la actualidad a nivel nacional y mundial existe un gran avance en
cuanto a tecnologa informtica, es decir, todos los procesos se han ido
automatizando as como los procesos de almacenamiento y control de
informacin para un manejo rpido y eficiente.
El presente proyecto tambin tiene la finalidad de cumplir con lo requisitos
exigidos como norma de educacin superior, para optar el titulo de
profesional tcnico en Computacin e Informtica.

38

2.3. OBJETIVOS.
a) Objetivo General
Elaborar un software de gestin que nos permita mejorar la atencin a
los usuarios de la biblioteca del ISTP Omate.
b)

Objetivos Especficos

Implementar la biblioteca del ISTPO, con un software de


gestin.

Optimizar la atencin a los usuarios que solicitan informacin


bibliogrfica.

Automatizar el acceso a los materiales bibliogrficos, que nos


permita analizar el comportamiento de los mismos y nos brinde
la informacin sobre su situacin.

2.4. DISEO METODOLOGICO


La metodologa empleada para la elaboracin del software, se realizo
utilizando los conceptos de anlisis y diseo de sistemas, investigando los
posibles inconvenientes en lo que respecta a la atencin de los usuarios a
la biblioteca, la visualizacin de los inconvenientes nos permitieron
plasmar y desarrollar el prototipo de software de gestin, el cual va a ser
aplicado directamente al encargado de la biblioteca.
No se requiere realizar pruebas para demostrar la aplicabilidad y la
eficiencia del software, debido a que en la institucin no cuenta con
software alguno o parecido aplicado a la atencin de la biblioteca, siendo
hasta la fecha la atencin del tipo manual.

39

CAPITULO III
3

DESARROLLO DEL PROTOTIPO

3.1. DISEO DE LAS TABLAS LIBRES DE LA BASE DE DATOS


TABLAS DEL SOFTWARE DE GESTIN DE BIBLIOTECA
Es importante mencionar que el programa trabaja con tablas libres :
La primera tabla ca_pr que observamos sirve para grabar datos de
rea/especialidad nom_car (nombre de carrera profesional) y su cdigo
respectivo.

La tabla Cl_ie sirve para guardar los datos de usuarios:

La tabla Co_di sirve para guardar los datos de administrador:

40

La tabla Da_en sirve para guardar los datos de la Entidad o Institucin:

La tabla fi_bi sirve para guardar los datos de las fichas de biblioteca generadas:

41

La tabla in_di es usada para administrar los datos de los ndices de material de
biblioteca

La tabla li_br, es utilizada para administrar los datos de material de biblioteca

La tabla te_fi sirve para tratar temporalmente los datos de ficha de biblioteca

42

La tabla te_in sirve para tratar temporalmente los datos de ndices antes de ser
debidamente registrados

3.2. SOFTWARE DE GESTION DE BIBLIOTECA 2008


3.2.1. BIENVENIDO A SGB2008
Al ejecutar el programa SGB2008 se ejecutar la siguiente presentacin,
haga clic en el botn SGB2008Adelante

3.2.2. ACCESO A SGB2008


43

Luego se visualiza el siguiente dilogo para ingresar al programa,


escriba en la primera Caja de Texto el ID de la persona que manejar el
programa y en la Segunda Caja de Texto la contrasea. Se ingresa
como administrador de software, cuyo ID es AD_MIN.
De esta forma este software es controlado por un administrador
(AD_MIN) Solamente en caso de AD_MIN tiene la posibilidad de poder
agregar, modificar y eliminar los datos que gestiona el presente software.

Ingrese
IdUsuario

Ingrese
Contrasea
de Acceso

Haga Clic Aqu para


Salir
Automticamente
Haga Clic en Aceptar para confirmar el ingreso al Software de Gestin
y en Cancelar para salir de forma automtica del programa.
Si el programa no reconoce el ID y/o la Clave de Acceso no permitir el
ingreso, asimismo solo permite tres intentos para ingresar al
programa, en caso contrario saldr de ejecucin de forma
automtica.

44

Si la clave es correcta as como el ID, aparecer un mensaje de


Bienvenida al Sistema, para luego aparecer el ttulo de ventana con su
barra de mens del Programa como vemos en la figura del siguiente
sub ttulo.
3.2.2.1. Barra de Menus Principal
La barra de mens principal cuenta con las opciones como vemos en
la siguiente figura que iremos describiendo en los subttulos
siguientes:

3.2.2.2. Men Archivo


Las opciones del men Archivo son las siguientes:

Al ejecutar la opcin LIBROS O MATERIAL, ejecuta el formulario


siguiente:

Al situar el puntero del mouse sobre cualquier control de un


formulario de este programa, aparece un MENSAJE que especifica
qu utilidad tiene este control dentro de un formulario en ejecucin
45

Asimismo, el cuadro donde se observa 1 Registro constituye un


visualizador de la accin que realiza un control activado.
Si las Cajas de Texto estn activadas para la opcin de Nuevo
Registro o Modificar Registro, lo recomendable es presionar la tecla
<ENTER>, asimismo, cada vez que tenga que ingresar datos en una
caja de texto o Cuadro Combinado (ComboBox) debe presionar
<ENTER> para dirigir el cursor de escritura o el enfoque al control
siguiente.
Para ejecutar la accin de un botn de comando presione <CLICK> o
<ENTER> en dicho botn de comando.
Seguidamente vamos a mostrar cada una de las acciones del
presente formulario explicando la funcin que cumple cada uno en su
manejo:
(En estado NUEVO REGISTRO o MODIFICAR REGISTRO se activan
las cajas de texto para ingresar CDIGO, TTULO, TIPO, AUTOR, ,
, , DISPONIBLE, as tambin se activan los botones GRABAR
REGISTRO y CANCELAR)

Permite Visualizar,
ingresar o modificar
el cdigo
Permite Visualizar,
ingresar o modificar
el ttulo
Permite Visualizar,
ingresar o modificar
el tipo (libro, cd, etc)
Permite Visualizar,
ingresar o modificar
el autor
Permite Visualizar,
ingresar o modificar
datos de edicin
Permite Visualizar,
ingresar o modificar
descripcin general
Permite Visualizar,
ingresar o modificar
de qu rea o carrera
se considera el
material
Permite Visualizar,
ingresar o modificar
descripcin general

Visualiza, de forma interactiva la accin que


permite se realiza a travs de un control
cuando recibe el enfoque

Ir al Primer Anterior Siguiente Al ltimo


Registro Registro Registro Registro

46
Nuevo
Registro

Modificar
Registro

Buscar
Registro

Eliminar
Registro

Grabar
Registro

Cancelar

Salir

Al hacer clic en el botn BUSCAR REGISTRO activar la ventana


que a continuacin se detalla:
Seleccione haciendo Clic o use teclas
Direccionales para determinar el campo
para realizar bsqueda luego
PRESIONE <ENTER>

Muestra la Accin a realizar


a travs de un control
Cuando el Control Recibe
el Enfoque

Ingrese cadena de texto a buscar


en relacin con el campo elegido
luego PRESIONE <ENTER>

HAGA <CLICK> o
PRESIONE <ENTER>
aqu para iniciar una
Bsqueda Nueva

Despus de realizar los dos pasos


anteriores, HAGA <CLICK> o
PRESIONE <ENTER> aqu para
realizar la bsqueda en cuestin

HAGA <CLICK> o
PRESIONE <ENTER>
aqu para Mostrar
todos los Registros

Ejemplo de Busqueda

47

HAGA <CLICK> o
HAGA <CLICK> o
PRESIONE <ENTER> PRESIONE <ENTER>
aqu para Regresar Al aqu para Imprimir la
Formulario Anterior Relacin de Material de
Biblioteca

VISUALIZA EL(LOS)
REGISTROS
ENCONTRADOS EN
BASE DE DATOS

Al Ejecutar la Opcion Ingreso de Indices, Ejecuta el Formulario


Siguiente
Visualiza el Ttulo Visualiza el Autor
Ingrese Aqu el
de Material
de Material
Cdigo de Material de
Biblioteca y Presione despus de Hacer despus de Hacer
Clic en INGRESAR Clic en INGRESAR
<ENTER>

Haga <CLICK> o Presione


Escriba Aqu el Nmero
<ENTER> aqu para
Permite escribir el Registro Presione <CLICK> o
de Pgina u otro
localizar Material y
de ndice para ser luego <ENTER> para salir de
indicador de Registro
Proceder a Ingresar
agregado al Visualizador
este formulario
de ndice
Registros de ndices

Visualiza los ndices agregados


Permite eliminar un registro de Presione <CLICK> o <ENTER>
antes de ser grabados a base de Presione <CLICK> o <ENTER>
Para Agregar temporalmente los ndice agregado al Visualizador Para Grabar Definitivamente
datos
de Forma Errnea (Activa un
ndices en el visualizador
los ndices del visualizador
Dilogo de Edicin)

48

Presione <CLICK> o
<ENTER> Para Ingresar
Nuevos Registros de
ndices

Al hacer clic en el botn EDITAR activar una pequea ventana


(ELIMINAR DATOS) que se detalla en la siguiente pgina SIN
DESACTIVAR EL FORMULARIO ANTERIOR.
Aqu se debe de indicar el nmero de registro que indica la columna
N del Visualizador para poder eliminarlo HACIENDO <CLICK> O
<ENTER> en SUPRIMIR. Asimismo da la opcin de poder eliminar
todos los registros del visualizador HACIENDO <CLICK> O <ENTER>
en SUPRIMIR TODOS. Puede hacer <CLICK> O <ENTER> en el
botn ATRAS para regresar al formulario anterior realizadas o no las
operaciones ltimas explicadas.
Indica el Nmero de Registro del
Visualizador del Formulario
Anterior que se desea eliminar

Luego de seleccionar el
nmero de registro Haga
<CLICK> o <ENTER> aqu
para eliminarlo

Si desea eliminar todos los


registros del Visualizador
<CLICK> o <ENTER> aqu.

Por ltimo haga <CLICK> o <ENTER> aqu


para regresar al formulario que aparece atrs,
habiendo o no realizado las acciones
especificadas anteriormente.

Al ejecutar la opcion SALIR , ejecuta el formulario siguiente, aqu


debe elegir <SI> o <NO> respectivamente para salir o no del
programa:
49

3.2.2.3. Men Edicin:


Las opciones del men Edicin son las siguientes:

Al ejecutar la opcion FICHA DE BIBLIOTECA, ejecuta el formulario


siguiente:

Al ejecutar la opcion DATOS DE ENTIDAD, ejecuta el formulario


siguiente:

50

En el estado MODIFICAR se activan las Cajas de Texto a


excepcin de las de Pass Word, esta opcin permite actualizar
datos de la entidad.
Al activar MODIFICAR se habilitan los botones ACEPTAR y
CANCELAR, pero al mismo tiempo se deshabilitan MODIFICAR y
OK. Si termin de actualizar datos puede presionar <ENTER> o
hacer <CLICK> en ACEPTAR para guardar los cambios o
simplemente en CANCELAR para omitir la funcin de Modificar
Datos.
Para salir de este formulario haga <CLICK> o presione <ENTER> en
OK

Al ejecutar la opcion DATOS DE USUARIO, ejecuta el formulario


siguiente:

51

3.2.2.4. Men Consulta:


52

Las nica opcin del men CONSULTA es la siguiente:

Al ejecutar la opcin FICHERO, ejecuta el formulario siguiente:

3.2.2.5. Men opciones:


Las alternativas del men OPCIONES son las siguientes:
53

Al ejecutar la alternativa CAMBIAR CONTRASEA,ejecuta el


formulario siguiente:

54

3.2.2.6. Men Reportes:


Las alternativas del men REPORTES son las siguientes:

Al ejecutar la alternativa MATERIAL DE BIB, ejecuta el siguiente


informe:

3.2.2.7. Men Ayuda:


Las alternativas del men AYUDA son las siguientes:

55

CONCLUSIONES
1. Se logro desarrollar de manera satisfactoria el prototipo de un software de
Gestion para mejorar la atencin en la biblioteca del I.S.T.P.O.
2. Se logro implementar el software de Gestin para el manejo de la
informacin sobre material bibliogrfico.
3. Se logro optimizar la atencin a los usuarios, mejorando la bsqueda de la
informacin sobre algn material bibliogrfico.
4. Se ha automatizado el acceso a los materiales bibliogrficos los cuales se
pueden visualizar mediante ventanas su estado y/o situacin respectiva.

RECOMENDACIONES

56

1. Que la institucin establezca una codificacin a los materiales bibliogrficos,


para que exista duplicidad de los mismos.
2. Que se logre culminar con el ingreso de toda la informacin (ndice) de cada
material bibliogrfico.
3. Instalar un equipo de cmputo adicional de uso exclusivo para bsqueda de
informacin bibliografica, multimedia, revistas, etc.
4. Establecer el uso de carnets a los usuarios de la biblioteca con una
codificaron respectiva.

BIBLIOGRAFIA

57

1. Bazian Menachem, 2000, Visual Foxpro, Edicin especial.


2. Bustamante Gutierrez Cesar, 2001, Visual Foxpro, 1ra Edicin,
Editorial GrafPer.
3. Coral Rojas Guido, 2000, Contabilidad, 2da Edicin Editolaser.
4. Instituto Nacional de Estadstica e Informtica, Programacin.
5. Joyanes Aguilar Lus, 1998, Programacin Orienta a Objetos 1ra
Edicin Editorial Carmelo.
6. Joyanes Aguilar Lus, 1999, Fundamentos de Programacin 2da
edicin.
7. Kenneth Kendall, 1999 Analisis y Diseo de Sistemas 3ra Edicin.
8. Romero Moreno Gesvin, 2001, Anlisis y Diseo de BD, 1ra
Edicin.
9. Vsquez Paragulla Julio, 1997, Diseo de Programacin 3ra
Edicin, Editorial San Carlos.

58

ANEXOS

Cdigo fuente del Software de Biblioteca


CDIGO FUENTE: SOFTWARE DE GESTIN DE BIBLIOTECA
FORMULARIO DE ACCESO AL SISTEMA

59

FORM1.INIT
SET SYSM TO
SET PATH TO "FO_RM,IC_ON,PR_OG,TA_BL,IN_FO"
PUBLIC I,MATRIB,Y,TEX,VTEX,WTEX1,WTEX2,WTEX,XI,VACCOD
Y=3
I=1
WITH THISFORM
.REFRESH
.MOVABLE=.F.
.LABEL1.CAPTION=ALLT(DA_EN.NOM_ENT)
.LABEL2.CAPTION=ALLT(DA_EN.DIR_ENT)+" - "+ALLT(DA_EN.DIS_ENT)
.LABEL3.CAPTION="TELFONO : "+ALLT(DA_EN.TEL_ENT)
.LABEL4.CAPTION="RUC N "+ALLT(DA_EN.RUC_ENT)
.LABEL5.CAPTION="DATOS DE ACCESO"
DECLARE MATRIB[16]
MATRIB[1]="D"
MATRIB[2]="DA"
MATRIB[3]="DAT"
MATRIB[4]="DATO"
MATRIB[5]="DATOS"
MATRIB[6]="DATOS "
MATRIB[7]="DATOS D"
MATRIB[8]="DATOS DE"
MATRIB[9]="DATOS DE "
MATRIB[10]="DATOS DE A"
MATRIB[11]="DATOS DE AC"
MATRIB[12]="DATOS DE ACC"
MATRIB[13]="DATOS DE ACCE"
MATRIB[14]="DATOS DE ACCES"
MATRIB[15]="DATOS DE ACCESO"
.TEXT1.SETFOCUS
.REFRESH
ENDWITH
TIMER.TIMER
IF THISFORM.LABEL1.FORECOLOR=RGB(0,0,0)
THISFORM.LABEL1.FORECOLOR=RGB(0,0,255)
THISFORM.LABEL2.FORECOLOR=RGB(0,0,255)
ELSE
THISFORM.LABEL1.FORECOLOR=RGB(0,0,0)
THISFORM.LABEL2.FORECOLOR=RGB(0,0,0)
ENDIF
TIMER2.TIMER
IF THISFORM.LABEL3.FORECOLOR=RGB(0,0,255)
THISFORM.LABEL3.FORECOLOR=RGB(0,0,0)
THISFORM.LABEL4.FORECOLOR=RGB(0,0,0)
ELSE
THISFORM.LABEL3.FORECOLOR=RGB(0,0,255)
THISFORM.LABEL4.FORECOLOR=RGB(0,0,255)
ENDIF
TIMER3.TIMER
IF THISFORM.IMAGE1.VISIBLE=.F.
THISFORM.IMAGE1.VISIBLE=.T.
ELSE
THISFORM.IMAGE1.VISIBLE=.F.
ENDIF
TIMER4.TIMER
IF I<16
THISFORM.LABEL5.CAPTION=MATRIB(I)
I=I+1
ELSE
I=1
ENDIF
COMMAND1.CLICK
WITH THISFORM
XI=1
VACCOD=UPPE(ALLT(.TEXT1.VALUE))
TEX=ALLT(.TEXT2.VALUE)
VTEX=LEN(TEX)
WTEX=""
WTEX1=""
WTEX2=""
SELE * FROM CO_DI WHERE VACCOD==UPPE(COD_USE) INTO CURS AZT
SELE AZT
WTEX2=ALLT(AZT.NU1_USE)
DO CASE
CASE EMPTY(.TEXT1.VALUE).OR.EMPTY(.TEXT2.VALUE)
Y=Y-1
WAIT WIND " ... NO INGRESO VALOR... " TIME 1
WAIT WIND " ... TIENE "+ALLT(STR(Y))+" OPORTUNIDAD(ES) ... " TIME 1
IF Y=0
.TEXT2.VALUE=""
WAIT WIND " ... CONSIGA EL ID CORRECTO Y/O LA CLAVE VLIDA ... " TIME 1
WAIT WIND " ... CANCELANDO OPERACIN ... " TIME 1
RELEASE I,MATRIB,Y,TEX,VTEX,WTEX1,WTEX2,WTEX,XI,VACCOD
.RELEASE
QUIT
ELSE
.TEXT1.SETFOCUS
.COMMAND2.ENABLED=.T.
ENDIF

60

OTHERWISE
DO WHILE XI<(VTEX+1)
WTEX=ASC(SUBST(TEX,XI,1))
WTEX1=ALLT(WTEX1)+ALLT(STR(WTEX))
XI=XI+1
ENDDO
.REFRESH
SET EXACT ON
IF VAL(WTEX1)<>VAL(WTEX2)
Y=Y-1
TEX=""
VTEX=0
WTEX1=""
WAIT WIND " ... CONSIGA EL ID CORRECTO Y/O LA CLAVE VLIDA ... " TIME 1
WAIT WIND " ... ACCESO DENEGADO ... " TIME 1
WAIT WIND " ... TIENE "+ALLT(STR(Y))+" OPORTUNIDAD(ES) ... " TIME 1
IF Y=0
WAIT WIND " ... CANCELANDO OPERACIN ... " TIME 1
.TEXT2.VALUE=""
RELEASE I,MATRIB,Y,TEX,VTEX,WTEX1,WTEX2,WTEX,XI,VACCOD
.RELEASE
QUIT
ELSE
.TEXT2.VALUE=""
.TEXT2.SETFOCUS
ENDIF
ELSE
WAIT WIND " ... PASSWORD CORRECTO ... BIENVENIDO AL SISTEMA ... " TIME 1
CLOSE DATA
SET PATH TO "FO_RM,IC_ON,PR_OG,TA_BL,IN_FO"
_SCREEN.CONTROLBOX=.T.
_SCREEN.CLOSABLE=.T.
_SCREEN.FONTSIZE=17
_SCREEN.PICTURE=""
_SCREEN.ICON="BOOKS05.ICO"
_SCREEN.WINDOWSTATE=2
USE DA_EN
_SCREEN.CAPTION=" S O F T W A R E D E G E S T I N D E B I B L I O T E C A :
USE
DO ME_BI.MPR
RELEASE I,MATRIB,Y,TEX,VTEX,WTEX1,WTEX2,WTEX,XI
.RELEASE
ENDIF
ENDCASE
ENDWITH

"+ALLT(NOM_ENT)

COMMAND2.CLICK
SET PATH TO "FO_RM,IC_ON,PR_OG,TA_BL,IN_FO"
USE DA_EN
IF MESSAGEBOX(" DESEA CANCELAR ACCESO? ",4+32,"BIBLIOTECA "+ALLT(DA_EN.NOM_ENT))=6
_SCREEN.PICTURE=""
_SCREEN.ICON=""
SET SYSM TO DEFA
RELEASE I,MATRIB,Y,TEX,VTEX,WTEX1,WTEX2,WTEX,XI,VACCOD
THISFORM.RELEASE
QUIT
ELSE
THISFORM.TEXT1.SETFOCUS
ENDIF
TEXT2.KEYPRESS
LPARAMETERS nKeyCode, nShiftAltCtrl
IF LASTKEY()=13
THISFORM.COMMAND1.SETFOCUS
ENDIF
CONJUNTO DE FORMULARIOS FICHAS DE BIBLIOTECA
EN EL FORMULARIO 1
FORM1.INIT
SET SAFE OFF
SET TALK OFF
SET SYSM TO
SET PATH TO "FO_RM,IC_ON,PR_OG,TA_BL,IN_FO"
SET DATE DMY
PUBLIC A,D,I,L,N,O,W,R,S,T,X,Y,DD,RE,T1,T2,XI,NRE,PA,CAP,WCOM,WSA,WTIE,WTIE1,WTIE2,WTIE3,WSTO,WTOT,WWX,WXW,WCOSEM,OPC;
VASI,VCOD,VPAP,VREC,VTOT,VPLI,VDIO,VMEO,VAO,TEXTO,M,VALOR,WASI,WNOM,WCOD,VGRD1,VGRD2,VGRD3,WAUT,FEC1,FEC2,TIPREP
SELECT TE_FI
ZAP
WITH THISFORM
VGRD1=.GRID1
VGRD2=.GRID2
VGRD3=.GRID3
T1=0.00
T2=0.00
VASI=""
VCOD=""
VPAP=""
VREC=""
RE=0.00
VTOT=0.00
*VPLI=""
W=0
VDIO=0
VMEO=0
VAO=0
WASI=""

61

WCOD=""
DD=""
L=""
I=""
O=""
Y=""
NRE=0
T=1
R=""
X=0
N=0
M=0
V1=0
WNUMDE=0
OPC=0
WCOM=""
WXW=""
WSA=""
WAUT=""
WWX=""
WTIE=""
WTIE1=""
WTIE3=""
WNOM=""
WCOSEM=""
TEXTO=""
CAP=""
THISFORMSET.FORM2.HIDE
THISFORMSET.FORM3.HIDE
THISFORMSET.FORM4.HIDE
THISFORMSET.FORM1.ENABLED=.T.
THISFORMSET.FORM2.ENABLED=.F.
THISFORMSET.FORM3.ENABLED=.F.
THISFORMSET.FORM4.ENABLED=.F.
THISFORM.SHOW
SET TALK OFF
SELEC DA_EN
.CONTAINER4.LABEL9.CAPTION=ALLT(DA_EN.NOM_ENT)
SELEC FI_BI
GO BOTTOM
IF MONTH(DATE())>MONTH(FI_BI.FEC_FIC)
.TEXCONTAR1.VALUE="0001"
ELSE
L=LEN(ALLT(STR(FI_BI.NUM_FIC)))
IF LEN(ALLT(STR(FI_BI.NUM_FIC+1)))=L
.TEXCONTAR1.VALUE=REPL("0",4-L)+ALLT(STR(FI_BI.NUM_FIC+1))
ELSE
.TEXCONTAR1.VALUE=REPL("0",4-(L+1))+ALLT(STR(FI_BI.NUM_FIC+1))
ENDIF
ENDIF
VGRD1.RECORDSOURCE=""
VGRD2.RECORDSOURCE=""
VGRD3.RECORDSOURCE=""
VGRD1.ENABLED=.F.
VGRD2.ENABLED=.F.
VGRD3.ENABLED=.F.
VGRD1.VISIBLE=.F.
VGRD2.VISIBLE=.F.
VGRD3.VISIBLE=.F.
.SETALL("ENABLED",.F.,"COMMANDBUTTON")
.TEXNOM.ENABLED=.F.
.TEXCODIGO.ENABLED=.F.
.TEXT1.ENABLED=.F.
.TEXT5.ENABLED=.F.
.TEXCODIGO.ENABLED=.F.
.COMCANCEL.ENABLED=.F.
.COMMAND1.ENABLED=.F.
.COMMAND2.ENABLED=.F.
.COMMAND3.ENABLED=.T.
.COMMAND4.ENABLED=.T.
.COMMAND5.ENABLED=.T.
.COMMAND6.ENABLED=.T.
.COMMAND7.ENABLED=.F.
.CONTAINER3.COMOBSER.ENABLED=.T.
.COMBO1.ENABLED=.F.
.COMBO1.VALUE=""
.TEXNOM.VALUE=""
.TEXCODIGO.VALUE=""
.TEXT1.VALUE=""
.TEXT5.VALUE=0
.GRID1.VISIBLE=.F.
.GRID2.VISIBLE=.F.
.COMBO1.VISIBLE=.F.
.COMM1.ENABLED=.T.
.COMM2.ENABLED=.T.
.COMM1.VISIBLE=.T.
.COMM2.VISIBLE=.T.
.COMM1.SETFOCUS
.REFRESH
ENDWITH
COMMAND2.GOTFOCUS
THISFORM.MENSAJE.VALUE="<<EDITA>> LOS DATOS AGREGADOS EN EL VISUALIZADOR INFERIOR"
COMMAND2.CLICK
SELE TE_FI
THISFORMSET.FORM2.CONTAINER1.SPINNER1.SPINNERHIGHVALUE=RECC()
IF RECCO()=0
ELSE

62

NRE=1
GO RECORD NRE
THISFORMSET.FORM1.ENABLED=.F.
THISFORMSET.FORM2.ENABLED=.T.
THISFORMSET.FORM2.SHOW
THISFORMSET.FORM2.CONTAINER1.SPINNER1.VALUE=1
ENDIF
TEXT1.INTERACTIVECHANGE
SET EXACT ON
VGRD2=THISFORM.GRID2
VGRD2.RECORDSOURCE=""
VGRD2.ENABLED=.T.
VGRD2.VISIBLE=.T.
VGRD2.COLUMN1.ENABLED=.T.
VGRD2.TABSTOP=.T.
IF LASTKEY()<>13
TEXTO=UPPE(ALLT(THISFORM.TEXT1.VALUE))
N=LEN(TEXTO)
IF N=0
THISFORM.COMMAND2.ENABLED=.T.
THISFORM.COMMAND6.ENABLED=.T.
THISFORM.COMCANCEL.ENABLED=.T.
VGRD2.RECORDSOURCE=""
ELSE
SELEC COD_LIB,TIT_LIB,AUT_LIB FROM LI_BR WHERE ATLINE(TEXTO,TIT_LIB)=1.AND.UPPER(DIS_LIB)="SI" INTO CURSOR TINGRES
THISFORM.COMMAND2.ENABLED=.T.
THISFORM.COMCANCEL.ENABLED=.T.
VGRD2.RECORDSOURCE="TINGRES"
ENDIF
ELSE
VGRD2.COLUMN1.TEXT1.SETFOCUS
ENDIF
THISFORM.REFRESH
TEXT1.KEYPRESS
LPARAMETERS nKeyCode, nShiftAltCtrl
DO CASE
CASE LASTKEY()=13.AND.EMPTY(THISFORM.TEXT1.VALUE)=.F.
THISFORM.COMMAND2.ENABLED=.T.
VGRD2.COLUMN1.TEXT1.SETFOCUS
ENDCASE
TEXT1.GOTFOCUS
THISFORM.MENSAJE.VALUE="DIGITAR EL NOMBRE DEL MATERIAL QUE SOLICITA EL USUARIO"
TEXFECHA.GOTFOCUS
THISFORM.MENSAJE.VALUE="MUESTRA LA FECHA PARA LA NUEVA FICHA A GENERAR"
TEXCONTAR1.GOTFOCUS
THISFORM.MENSAJE.VALUE="MUESTRA EL NUMERO PARA LA NUEVA FICHA A GENERAR"
COMMAND1.CLICK
VGRD3.RECORDSOURCE=""
SELE TINGRES
DO CASE
CASE THISFORM.TEXT1.VALUE=""
SELE TE_FI
IF RECC()=0
ELSE
VGRD3.RECORDSOURCE="TE_FI"
ENDIF
WAIT WIND " ... INGRESO DE DATOS INCORRECTO ... " TIME 1
THISFORM.TEXT1.SETFOCUS
CASE RECC()=0
SELE TE_FI
IF RECC()=0
ELSE
VGRD3.RECORDSOURCE="TE_FI"
ENDIF
WAIT WIND " ... INGRESO DE DATOS INCORRECTO ... " TIME 1
THISFORM.TEXT1.SETFOCUS
OTHERWISE
SELE TE_FI
APPE BLAN
THISFORM.TEXT5.VALUE=RECC()
REPLA TE_FI.NUM_ORD WITH THISFORM.TEXT5.VALUE
REPL TE_FI.TIT_LIB WITH ALLT(THISFORM.TEXT1.VALUE)
REPL TE_FI.AUT_LIB WITH ALLT(THISFORM.TEXT2.VALUE)
REPL TE_FI.COD_LIB WITH ALLT(THISFORM.TEXT3.VALUE)
SELE TE_FI
GO TOP
VGRD3.VISIBLE=.T.
VGRD3.RECORDSOURCE="TE_FI"
ENDCASE
THISFORM.REFRESH
COMMAND1.GOTFOCUS
THISFORM.MENSAJE.VALUE="ENVIA LA INFORMACIN AL VISUALIZADOR INFERIOR PARA GENERAR FICHA"
COMCANCEL.CLICK
THISFORM.TEXT1.VALUE=""
THISFORM.TEXT2.VALUE=""
THISFORM.TEXT3.VALUE=""

63

THISFORM.COMMAND6.ENABLED=.T.
THISFORM.TEXT1.ENABLED=.T.
VGRD2.ENABLED=.F.
VGRD2.COLUMN1.ENABLED=.F.
VGRD2.VISIBLE=.F.
VGRD2.TABSTOP=.F.
THISFORM.TEXT1.SETFOCUS
THISFORM.TEXT5.VALUE=0
COMCANCEL.GOTFOCUS
THISFORM.MENSAJE.VALUE="<<CANCELA>> LA SELECCION DE MATERIAL SOLICITADO"
GRID2.COLUMN1.TEXT1.KEYPRESS
LPARAMETERS nKeyCode, nShiftAltCtrl
IF LASTKEY()=13
SELE TINGRES
WCOD=ALLT(TINGRES.COD_LIB)
SELE LI_BR
LOCATE FOR ALLT(LI_BR.COD_LIB)==ALLT(WCOD)
IF FOUND()
THISFORM.TEXT1.VALUE=UPPE(ALLT(TIT_LIB))
THISFORM.TEXT2.VALUE=UPPE(ALLT(AUT_LIB))
THISFORM.TEXT3.VALUE=UPPE(ALLT(COD_LIB))
THISFORM.COMCANCEL.ENABLED=.T.
THISFORM.COMMAND1.ENABLED=.T.
THISFORM.COMMAND2.ENABLED=.T.
THISFORM.COMMAND1.SETFOCUS
THISFORM.REFRESH
ENDIF
ENDIF
GRID2.COLUMN1.TEXT1.DBLCLICK
SELE TINGRES
WCOD=ALLT(TINGRES.COD_LIB)
SELE LI_BR
LOCATE FOR ALLT(LI_BR.COD_LIB)==ALLT(WCOD)
IF FOUND()
THISFORM.TEXT1.VALUE=UPPE(ALLT(TIT_LIB))
THISFORM.TEXT2.VALUE=UPPE(ALLT(AUT_LIB))
THISFORM.TEXT3.VALUE=UPPE(ALLT(COD_LIB))
THISFORM.COMCANCEL.ENABLED=.T.
THISFORM.COMMAND1.ENABLED=.T.
THISFORM.COMMAND2.ENABLED=.T.
THISFORM.COMMAND1.SETFOCUS
THISFORM.REFRESH
ENDIF
GRID2.COLUMN1.TEXT1.GOTFOCUS
THISFORM.MENSAJE.VALUE="HAGA <<DOBLE CLICK O ENTER>> EN EL MATERIAL QUE SOLICITA EL USUARIO"
GRID2.COLUMN2.TEXT1.KEYPRESS
LPARAMETERS nKeyCode, nShiftAltCtrl
IF LASTKEY()=13
SELE TINGRES
WCOD=ALLT(TINGRES.COD_LIB)
SELE LI_BR
LOCATE FOR ALLT(LI_BR.COD_LIB)==ALLT(WCOD)
IF FOUND()
THISFORM.TEXT1.VALUE=UPPE(ALLT(TIT_LIB))
THISFORM.TEXT2.VALUE=UPPE(ALLT(AUT_LIB))
THISFORM.TEXT3.VALUE=UPPE(ALLT(COD_LIB))
THISFORM.COMCANCEL.ENABLED=.T.
THISFORM.COMMAND1.ENABLED=.T.
THISFORM.COMMAND2.ENABLED=.T.
THISFORM.COMMAND1.SETFOCUS
THISFORM.REFRESH
ENDIF
ENDIF
GRID2.COLUMN2.TEXT1.DBLCLICK
SELE TINGRES
WCOD=ALLT(TINGRES.COD_LIB)
SELE LI_BR
LOCATE FOR ALLT(LI_BR.COD_LIB)==ALLT(WCOD)
IF FOUND()
THISFORM.TEXT1.VALUE=UPPE(ALLT(TIT_LIB))
THISFORM.TEXT2.VALUE=UPPE(ALLT(AUT_LIB))
THISFORM.TEXT3.VALUE=UPPE(ALLT(COD_LIB))
THISFORM.COMCANCEL.ENABLED=.T.
THISFORM.COMMAND1.ENABLED=.T.
THISFORM.COMMAND2.ENABLED=.T.
THISFORM.COMMAND1.SETFOCUS
THISFORM.REFRESH
ENDIF
GRID2.COLUMN2.TEXT1.GOTFOCUS
THISFORM.MENSAJE.VALUE="HAGA <<DOBLE CLICK O ENTER>> EN EL MATERIAL QUE SOLICITA EL USUARIO"
GRID2.COLUMN3.TEXT1.KEYPRESS
LPARAMETERS nKeyCode, nShiftAltCtrl
IF LASTKEY()=13
SELE TINGRES
WCOD=ALLT(TINGRES.COD_LIB)
SELE LI_BR

64

LOCATE FOR ALLT(LI_BR.COD_LIB)==ALLT(WCOD)


IF FOUND()
THISFORM.TEXT1.VALUE=UPPE(ALLT(TIT_LIB))
THISFORM.TEXT2.VALUE=UPPE(ALLT(AUT_LIB))
THISFORM.TEXT3.VALUE=UPPE(ALLT(COD_LIB))
THISFORM.COMCANCEL.ENABLED=.T.
THISFORM.COMMAND1.ENABLED=.T.
THISFORM.COMMAND2.ENABLED=.T.
THISFORM.COMMAND1.SETFOCUS
THISFORM.REFRESH
ENDIF
ENDIF
GRID2.COLUMN3.TEXT1.DBLCLICK
SELE TINGRES
WCOD=ALLT(TINGRES.COD_LIB)
SELE LI_BR
LOCATE FOR ALLT(LI_BR.COD_LIB)==ALLT(WCOD)
IF FOUND()
THISFORM.TEXT1.VALUE=UPPE(ALLT(TIT_LIB))
THISFORM.TEXT2.VALUE=UPPE(ALLT(AUT_LIB))
THISFORM.TEXT3.VALUE=UPPE(ALLT(COD_LIB))
THISFORM.COMCANCEL.ENABLED=.T.
THISFORM.COMMAND1.ENABLED=.T.
THISFORM.COMMAND2.ENABLED=.T.
THISFORM.COMMAND1.SETFOCUS
THISFORM.REFRESH
ENDIF
GRID2.COLUMN3.TEXT1.GOTFOCUS
THISFORM.MENSAJE.VALUE="HAGA <<DOBLE CLICK O ENTER>> EN EL MATERIAL QUE SOLICITA EL USUARIO"
GRID1.COLUMN1.TEXT1.DBLCLICK
SELE TCLIENT
VSEM=ALLT(SECLI)
WNOM=ALLT(THISFORM.GRID1.COLUMN1.TEXT1.VALUE)
SELE CL_IE
LOCA FOR ALLT(CL_IE.APCLI)==ALLT(WNOM)
IF FOUND()
THISFORM.TEXNOM.VALUE=WNOM
WCOSEM=ALLT(ESCLI)
THISFORM.TEXCODIGO.VALUE=CL_IE.COCLI
THISFORM.COMCANCEL.ENABLED=.T.
THISFORM.TEXT1.ENABLED=.T.
THISFORM.TEXT1.SETFOCUS
ENDIF
THISFORM.REFRESH
GRID1.COLUMN1.TEXT1.KEYPRESS
LPARAMETERS nKeyCode, nShiftAltCtrl
SET EXACT ON
IF LASTKEY()=13
SELE TCLIENT
VSEM=ALLT(SECLI)
WNOM=ALLT(THISFORM.GRID1.COLUMN1.TEXT1.VALUE)
SELE CL_IE
LOCA FOR ALLT(CL_IE.APCLI)==ALLT(WNOM)
IF FOUND()
THISFORM.TEXNOM.VALUE=WNOM
WCOSEM=ALLT(ESCLI)
THISFORM.TEXCODIGO.VALUE=CL_IE.COCLI
THISFORM.COMCANCEL.ENABLED=.T.
THISFORM.TEXT1.ENABLED=.T.
THISFORM.TEXT1.SETFOCUS
ENDIF
THISFORM.REFRESH
ENDIF
GRID1.COLUMN1.TEXT1.GOTFOCUS
THISFORM.MENSAJE.VALUE=" HAGA << CLICK O ENTER >> EN EL NOMBRE DEL USUARIO INTERNO"
GRID1.COLUMN2.TEXT1.DBLCLICK
SELE TCLIENT
VSEM=ALLT(SECLI)
WNOM=ALLT(THISFORM.GRID1.COLUMN1.TEXT1.VALUE)
SELE CL_IE
LOCA FOR ALLT(CL_IE.APCLI)==ALLT(WNOM)
IF FOUND()
THISFORM.TEXNOM.VALUE=WNOM
WCOSEM=ALLT(ESCLI)
THISFORM.TEXCODIGO.VALUE=CL_IE.COCLI
THISFORM.COMCANCEL.ENABLED=.T.
THISFORM.TEXT1.ENABLED=.T.
THISFORM.TEXT1.SETFOCUS
ENDIF
THISFORM.REFRESH
GRID1.COLUMN2.TEXT1.KEYPRESS
LPARAMETERS nKeyCode, nShiftAltCtrl
SET EXACT ON
IF LASTKEY()=13
SELE TCLIENT
VSEM=ALLT(SECLI)
WNOM=ALLT(THISFORM.GRID1.COLUMN1.TEXT1.VALUE)

65

SELE CL_IE
LOCA FOR ALLT(CL_IE.APCLI)==ALLT(WNOM)
IF FOUND()
THISFORM.TEXNOM.VALUE=WNOM
WCOSEM=ALLT(ESCLI)
THISFORM.TEXCODIGO.VALUE=CL_IE.COCLI
THISFORM.COMCANCEL.ENABLED=.T.
THISFORM.TEXT1.ENABLED=.T.
THISFORM.TEXT1.SETFOCUS
ENDIF
THISFORM.REFRESH
ENDIF
GRID1.COLUMN2.TEXT1.GOTFOCUS
THISFORM.MENSAJE.VALUE=" HAGA << CLICK O ENTER >> EN EL NOMBRE DEL USUARIO INTERNO"
COMOBSER.CLICK
SELE FI_BI
GO TOP
IF RECC()=0
THISFORM.COMM1.SETFOCUS
ELSE
ENDIF
THISFORM.REFRESH
COMMAND6.CLICK
IF MESSAGEBOX("... DESEA GENERAR REPORTE?...",4+32," BIBLIOTECA "+DA_EN.NOM_ENT)=6
THISFORMSET.FORM1.ENABLED=.F.
THISFORMSET.FORM2.ENABLED=.F.
THISFORMSET.FORM3.ENABLED=.T.
THISFORMSET.FORM3.SHOW
THISFORMSET.FORM3.TEXT1.SETFOCUS
ELSE
WAIT WIND " ... CANCELANDO OPERACIN ... " TIME 1
ENDIF
THISFORM.REFRESH
COMMAND6.GOTFOCUS
THISFORM.MENSAJE.VALUE="<<GENERA E IMPRIME>> UN REPORTE ESPECIFICADO"
COMMAND5.GOTFOCUS
THISFORM.MENSAJE.VALUE="TERMINA LA EJECUCIN DEL MODULO FICHAS DE BIBLIOTECA"
COMMAND5.CLICK
VGRD1=""
VGRD2=""
VGRD3=""
RELE A,D,I,L,N,O,W,R,S,T,X,Y,DD,RE,T1,T2,XI,NRE,PA,CAP,WCOM,WSA,WTIE,WTIE1,WTIE2,WTIE3,WSTO,WTOT,WWX,WXW,WCOSEM,OPC;
VASI,VCOD,VPAP,VREC,VTOT,VPLI,VDIO,VMEO,VAO,TEXTO,M,VALOR,WASI,WNOM,WCOD,VGRD1,VGRD2,VGRD3,WAUT,FEC1,FEC2,TIPREP
SET PATH TO "FO_RM,IC_ON,PR_OG,TA_BL,IN_FO"
DO ME_BI.MPR
THISFORMSET.RELEASE
COMMAND3.GOTFOCUS
THISFORM.MENSAJE.VALUE="GENERA UNA NUEVA FICHA DE BIBLIOTECA"
COMMAND3.CLICK
SELE TE_FI
IF RECC()=0
ELSE
IF MESSAGEBOX("... DESEA GENERAR FICHA?...",4+32," BIBLIOTECA "+DA_EN.NOM_ENT)=6
THISFORM.COMMAND1.ENABLED=.F.
THISFORM.COMMAND2.ENABLED=.F.
THISFORM.COMMAND3.ENABLED=.F.
XI=0
S=0
X=0
M=0
THISFORM.COMMAND4.ENABLED=.T.
THISFORM.COMMAND6.ENABLED=.T.
SELEC TE_FI
XI=RECCOUNT()
FOR M=1 TO XI
SELE TE_FI
GO RECO M
WCOD=ALLT(COD_LIB)
WNOM=ALLT(TIT_LIB)
WAUT=ALLT(AUT_LIB)
SELE FI_BI
APPE BLAN
REPL NUM_FIC WITH VAL(THISFORM.TEXCONTAR1.VALUE)
REPL NOM_CLI WITH ALLT(THISFORM.TEXNOM.VALUE)
REPL COD_CLI WITH ALLT(THISFORM.TEXCODIGO.VALUE)
REPL TIT_LIB WITH WNOM
REPL AUT_LIB WITH WAUT
REPL COD_LIB WITH WCOD
REPL FEC_FIC WITH THISFORM.TEXFECHA.VALUE
REPL DIS_LIB WITH "NO"
SELE LI_BR
LOCA FOR ALLT(LI_BR.COD_LIB)==WCOD
IF FOUND()
REPL DIS_LIB WITH "NO"
ELSE

66

WAIT WIND " ... DATOS EN TABLA DE MATERIAL DE BIBLIOTECA ALTERADOS ... " TIME 1.2
ENDIF
SELE IN_DI
SET FILTER TO ALLT(IN_DI.COD_LIB)==WCOD
REPL ALL DIS_LIB WITH "NO"
SET FILTER TO
ENDFOR
IF OPC=2
SELE CL_IE
LOCA FOR ALLT(COCLI)==ALLT(THISFORM.TEXCODIGO.VALUE)
IF FOUND()
ELSE
WTIE1=ALLT(THISFORM.TEXNOM.VALUE)
WTIE2=THISFORM.TEXFECHA.VALUE
WTIE3="EXTERNO"
APPE BLAN
REPL COCLI WITH ALLT(THISFORM.TEXCODIGO.VALUE)
REPL APCLI WITH WTIE1
REPL ESCLI WITH "*"
REPL FICLI WITH WTIE2
REPL OCCLI WITH WTIE3
REPL SECLI WITH WTIE3
REPL GRCLI WITH "*"
ENDIF
ENDIF
THISFORM.COMMAND7.ENABLED=.T.
ELSE
THISFORM.TEXT1.SETFOCUS
ENDIF
THISFORM.REFRESH
ENDIF
COMMAND4.GOTFOCUS
THISFORM.MENSAJE.VALUE="<<REINICIALIZA>> SELECCION DE DATOS PARA GENERAR NUEVA FICHA"
COMMAND4.CLICK
THISFORM.INIT
WAIT WIND "<<REINICIANDO>> SELECCION DE DATOS PARA GENERAR NUEVA FICHA" TIME 1
COMM1.GOTFOCUS
THISFORM.MENSAJE.VALUE="PRESIONE CLICK, O ENTER SI LA PERSONA ES DE LA ENTIDAD"
COMM1.CLICK
OPC=1
THISFORM.GRID1.TABSTOP=.T.
THISFORM.COMM1.ENABLED=.F.
THISFORM.COMM2.ENABLED=.F.
THISFORM.CONTAINER2.ENABLED=.F.
THISFORM.COMBO1.VISIBLE=.T.
THISFORM.COMBO1.ENABLED=.T.
THISFORM.COMBO1.SETFOCUS
COMM2.GOTFOCUS
THISFORM.MENSAJE.VALUE="HAGA <CLICK O ENTER> PARA INGRESAR DATOS DE PERSONAS FORNEAS A LA ENTIDAD"
COMM2.CLICK
OPC=2
THISFORM.COMM1.ENABLED=.F.
THISFORM.COMM2.ENABLED=.F.
THISFORM.CONTAINER2.ENABLED=.F.
THISFORM.TEXCODIGO.ENABLED=.T.
THISFORM.TEXCODIGO.VALUE=""
THISFORM.GRID1.ENABLED=.F.
THISFORM.GRID1.VISIBLE=.F.
THISFORM.TEXNOM.VALUE=""
THISFORM.TEXNOM.ENABLED=.T.
THISFORM.TEXNOM.SETFOCUS
COMBO1.KEYPRESS
LPARAMETERS nKeyCode, nShiftAltCtrl
IF LASTKEY()=13.AND.EMPTY(THISFORM.COMBO1.VALUE)
ELSE
IF LASTKEY()=13.AND.EMPTY(THISFORM.COMBO1.VALUE)=.F.
THISFORM.COMBO1.ENABLED=.F.
THISFORM.TEXNOM.ENABLED=.T.
THISFORM.TEXNOM.SETFOCUS
ENDIF
ENDIF
COMBO1.GOTFOCUS
THISFORM.MENSAJE.VALUE="CON EL <MOUSE> O DIRECCIONALES ELEGIR OCUPACION DE USUARIO, LUEGO PULSE <ENTER>"
COMBO1.CLICK
THISFORM.TEXNOM.ENABLED=.T.
TEXNOM.KEYPRESS
LPARAMETERS nKeyCode, nShiftAltCtrl
IF LASTKEY()=13
DO CASE
CASE OPC=2.AND.VGRD1.VISIBLE=.T.
VGRD1.TABSTOP=.T.

67

VGRD1.COLUMN1.TEXT1.SETFOCUS
WWX=ALLT(THISFORM.TEXNOM.VALUE)
CASE OPC=2.AND.VGRD1.VISIBLE=.F.
WAIT WIND "... INGRESE SU DNI ..." TIME 1
THISFORM.TEXCODIGO.SETFOCUS
CASE OPC=1.AND.VGRD1.VISIBLE=.T.
VGRD1.TABSTOP=.T.
VGRD1.COLUMN1.TEXT1.SETFOCUS
WWX=ALLT(THISFORM.TEXNOM.VALUE)
CASE OPC=1.AND.VGRD1.VISIBLE=.F.
WAIT WIND " ... UN MOMENTO INGRESANDO NUEVO USUARIO INTERNO... ! " TIME 1
THISFORMSET.FORM1.ENABLED=.F.
THISFORMSET.FORM2.ENABLED=.F.
THISFORMSET.FORM3.ENABLED=.F.
THISFORMSET.FORM4.ENABLED=.T.
THISFORMSET.FORM4.COSEM.VALUE=THISFORM.COMBO1.VALUE
THISFORMSET.FORM4.TEXAP.VALUE=THISFORM.TEXNOM.VALUE+ " "
THISFORMSET.FORM4.COGRU.VALUE=""
THISFORMSET.FORM4.COESP.VALUE=""
THISFORMSET.FORM4.TEXCO.VALUE=""
THISFORMSET.FORM4.TEXAP.SETFOCUS
THISFORMSET.FORM4.SHOW
ENDCASE
ENDIF
TEXNOM.INTERACTIVECHANGE
WITH THISFORM
WWX=ALLT(.TEXNOM.VALUE)
VGRD1.RECORDSOURCE=""
VGRD1.ENABLED=.F.
VGRD1.VISIBLE=.F.
VGRD1.SETALL("ENABLED",.T.,"COLUMN")
VGRD1.COLUMN2.ENABLED=.F.
VGRD1.TABSTOP=.T.
IF LASTKEY()<>13
TEXTO=ALLT(.TEXNOM.VALUE)
N=LEN(TEXTO)
IF N=0
VGRD1.RECORDSOURCE=""
VGRD1.VISIBLE=.F.
VGRD1.ENABLED=.F.
ELSE
DO CASE
CASE OPC=1.AND.ALLT(.COMBO1.VALUE)="ALUMNO"
SELE APCLI,COCLI,ESCLI,SECLI FROM CL_IE WHERE (ATLINE(TEXTO,APCLI)==1).AND.ALLT(UPPE(OCCLI))="ALUMNO" INTO CURSOR TCLIENT
CASE OPC=1.AND.ALLT(.COMBO1.VALUE)="DOCENTE"
SELE APCLI,COCLI,ESCLI,SECLI FROM CL_IE WHERE (ATLINE(TEXTO,APCLI)==1).AND.ALLT(UPPE(OCCLI))="DOCENTE" INTO CURSOR TCLIENT
CASE OPC=1.AND.ALLT(.COMBO1.VALUE)="PERS.ADM./SERV."
SELE APCLI,COCLI,ESCLI,SECLI FROM CL_IE WHERE (ATLINE(TEXTO,APCLI)==1).AND.ALLT(UPPE(OCCLI))="PERS.ADM./SERV." INTO CURSOR TCLIENT
CASE OPC=2
SELE APCLI,COCLI,ESCLI,SECLI FROM CL_IE WHERE (ATLINE(TEXTO,APCLI)==1).AND.ALLT(UPPE(OCCLI))="EXTERNO" INTO CURSOR TCLIENT
ENDCASE
SELE TCLIENT
IF RECC()=0
VGRD1.RECORDSOURCE=""
VGRD1.VISIBLE=.F.
VGRD1.ENABLED=.F.
ELSE
WCOSEM=ESCLI
VGRD1.RECORDSOURCE = "TCLIENT"
VGRD1.VISIBLE=.T.
VGRD1.ENABLED=.T.
THISFORM.REFRESH
ENDIF
ENDIF
ENDIF
ENDWITH
TEXNOM.GOTFOCUS
THISFORM.MENSAJE.VALUE="PARA *NUEVO* USUARIO, DIGITE APELLIDOS Y NOMBRES LUEGO <ENTER>; SI EXISTE USUARIO DIGITA APELLIDOS Y
NOMBRES LUEGO <ENTER>"
TEXCODIGO.KEYPRESS
LPARAMETERS nKeyCode, nShiftAltCtrl
IF LASTKEY()=13
DO CASE
CASE OPC=2
DO CASE
CASE LEN(ALLT(THIS.VALUE))<=7
WAIT WIND "*** INGRESE BIEN EL D.N.I. ***" TIME 1
THISFORM.TEXCODIGO.SETFOCUS
CASE LEN(ALLT(THIS.VALUE))=8
THISFORM.COMCANCEL.ENABLED=.T.
THISFORM.TEXT1.ENABLED=.T.
THISFORM.TEXT1.SETFOCUS
CASE LEN(ALLT(THISFORM.TEXCODIGO.VALUE))>=9
WAIT WIND "*** INGRESE BIEN EL D.N.I. ***" TIME 1
THISFORM.TEXCODIGO.SETFOCUS
OTHERWISE
ENDCASE
ENDCASE
ENDIF
TEXCODIGO.GOTFOCUS
DO CASE
CASE OPC=1
THISFORM.MENSAJE.VALUE=" << DIGITE >> EL CODIGO DEL DOCENTE O ALUMNO Y PRESIONE ENTER"

68

CASE OPC=2
THISFORM.MENSAJE.VALUE=" << DIGITE >> EL D. N. I. DE LA PERSONA FORNEA Y PRESIONE ENTER"
ENDCASE
TEXT2.INTERACTIVECHANGE
SET EXACT ON
VGRD2=THISFORM.GRID2
VGRD2.RECORDSOURCE=""
VGRD2.ENABLED=.T.
VGRD2.VISIBLE=.T.
VGRD2.COLUMN1.ENABLED=.T.
VGRD2.TABSTOP=.T.
IF LASTKEY()<>13
TEXTO=UPPE(ALLT(THISFORM.TEXT1.VALUE))
N=LEN(TEXTO)
IF N=0
THISFORM.COMMAND2.ENABLED=.T.
THISFORM.COMMAND6.ENABLED=.T.
THISFORM.COMCANCEL.ENABLED=.T.
VGRD2.RECORDSOURCE=""
ELSE
SELEC COD_LIB,TIT_LIB,AUT_LIB FROM LI_BR WHERE ATLINE(TEXTO,TIT_LIB)=1.AND.UPPER(ALLT(DIS_LIB))="SI" INTO CURSOR TINGRES
THISFORM.COMMAND2.ENABLED=.T.
THISFORM.COMCANCEL.ENABLED=.T.
VGRD2.RECORDSOURCE="TINGRES"
ENDIF
ELSE
VGRD2.COLUMN1.TEXT1.SETFOCUS
ENDIF
THISFORM.REFRESH
TEXT2.KEYPRESS
LPARAMETERS nKeyCode, nShiftAltCtrl
DO CASE
CASE LASTKEY()=13.AND.EMPTY(THISFORM.TEXT1.VALUE)=.F.
THISFORM.COMMAND2.ENABLED=.T.
THISFORM.GRID2.COLUMN1.TEXT1.SETFOCUS
ENDCASE
TEXT2.GOTFOCUS
THISFORM.MENSAJE.VALUE="DIGITAR EL NOMBRE DEL MATERIAL QUE SOLICITA EL USUARIO"
TEXT3.GOTFOCUS
THISFORM.MENSAJE.VALUE="DIGITAR EL NOMBRE DEL MATERIAL QUE SOLICITA EL USUARIO"
TEXT3.KEYPRESS
LPARAMETERS nKeyCode, nShiftAltCtrl
DO CASE
CASE LASTKEY()=13.AND.EMPTY(THISFORM.TEXT1.VALUE)=.F.
THISFORM.COMMAND2.ENABLED=.T.
THISFORM.GRID2.COLUMN1.TEXT1.SETFOCUS
ENDCASE
TEXT3.INTERACTIVECHANGE
SET EXACT ON
VGRD2=THISFORM.GRID2
VGRD2.RECORDSOURCE=""
VGRD2.ENABLED=.T.
VGRD2.VISIBLE=.T.
VGRD2.COLUMN1.ENABLED=.T.
VGRD2.TABSTOP=.T.
IF LASTKEY()<>13
TEXTO=UPPE(ALLT(THISFORM.TEXT1.VALUE))
N=LEN(TEXTO)
IF N=0
THISFORM.COMMAND2.ENABLED=.T.
THISFORM.COMMAND6.ENABLED=.T.
THISFORM.COMCANCEL.ENABLED=.T.
VGRD2.RECORDSOURCE=""
ELSE
SELEC COD_LIB,TIT_LIB,AUT_LIB FROM LI_BR WHERE ATLINE(TEXTO,TIT_LIB)=1.AND.UPPER(ALLT(DIS_LIB))="SI" INTO CURSOR TINGRES
THISFORM.COMMAND2.ENABLED=.T.
THISFORM.COMCANCEL.ENABLED=.T.
VGRD2.RECORDSOURCE="TINGRES"
ENDIF
ELSE
VGRD2.COLUMN1.TEXT1.SETFOCUS
ENDIF
THISFORM.REFRESH
COMMAND7.GOTFOCUS
THISFORM.MENSAJE.VALUE="IMPRIME UNA NUEVA FICHA DE BIBLIOTECA"
COMMAND7.CLICK
WTIE=ALLT(THISFORM.TEXCONTAR1.VALUE)
WTIE1=ALLT(THISFORM.TEXNOM.VALUE)
WTIE2=THISFORM.TEXFECHA.VALUE
IF OPC=1
WTIE3=ALLT(THISFORM.COMBO1.VALUE)
ELSE
WTIE3="EXTERNO"
ENDIF
REPORT FORM FICHAS NOCONSOLE PREVIEW

69

EN EL FORMULARIO 2
SPINNER1.LOSTFOCUS
SELE TE_FI
IF THISFORM.CONTAINER1.SPINNER1.VALUE>RECCOUNT().OR.THISFORM.CONTAINER1.SPINNER1.VALUE<1
WAIT WIND " ... INGRESO INCORRECTO ... " TIME 1
THISFORM.CONTAINER1.SPINNER1.VALUE=1
NRE=THISFORM.CONTAINER1.SPINNER1.VALUE
GO RECORD NRE
ELSE
NRE=THISFORM.CONTAINER1.SPINNER1.VALUE
GO RECORD NRE
ENDIF
COMMAND3.CLICK
SELE TE_FI
THISFORMSET.FORM2.HIDE
THISFORMSET.FORM2.ENABLED=.F.
THISFORMSET.FORM1.ENABLED=.T.
THISFORMSET.FORM1.SHOW
THISFORMSET.FORM1.REFRESH
THISFORMSET.FORM1.TEXT5.VALUE=RECC()
THISFORMSET.FORM1.TEXT1.SETFOCUS
COMMAND2.CLICK
SELE TE_FI
IF MESSAGEBOX(" ELIMINAR REGISTRO(S) ? ",4+32,DA_EN.NOM_ENT)=6
VGRD3.RECORDSOURCE=""
VGRD3.ENABLED=.F.
VGRD3.VISIBLE=.F.
DELETE ALL
PACK
THISFORMSET.FORM1.TEXT5.VALUE=RECCOUNT()
WAIT WINDOW " ... REGISTRO(S) ELIMINADO(S) ... " TIME 1
THISFORMSET.FORM2.ENABLED=.F.
THISFORMSET.FORM2.HIDE
THISFORMSET.FORM1.ENABLED=.T.
THISFORMSET.FORM1.SHOW
THISFORMSET.FORM1.TEXT1.SETFOCUS
THISFORMSET.REFRESH
ELSE
WAIT WIND " ... CANCELANDO OPERACIN ... " TIME 1
THISFORM.CONTAINER1.COMMAND2.SETFOCUS
THISFORM.CONTAINER1.SPINNER1.VALUE=1
NRE=1
GO RECORD NRE
ENDIF
THISFORM.REFRESH
COMMAND1.CLICK
SELE TE_FI
IF MESSAGEBOX(" ... ELIMINAR REGISTRO "+ ALLT(STR(NRE))+" ... ? ",4+32,DA_EN.NOM_ENT)=6
VGRD3.RECORDSOURCE=""
DELETE
PACK
WAIT WINDOW " ... REGISTRO "+ALLT(STR(NRE))+""+" ELIMINADO ... " TIME 1
THISFORMSET.FORM1.TEXT5.VALUE=RECCOUNT()
FOR I=1 TO RECC()
GO RECO I
REPL NUM_ORD WITH RECNO()
ENDFOR
VGRD3.RECORDSOURCE="TE_FI"
SELE TE_FI
GO TOP
IF RECCOUNT()=0
VGRD3.ENABLED=.F.
VGRD3.VISIBLE=.F.
THISFORM.CONTAINER1.COMMAND3.CLICK
ELSE
THISFORM.CONTAINER1.SPINNER1.VALUE=1
THISFORM.CONTAINER1.SPINNER1.SPINNERHIGHVALUE=RECCOUNT()
THISFORM.CONTAINER1.COMMAND1.SETFOCUS
VGRD3.RECORDSOURCE="TE_FI"
THISFORM.CONTAINER1.SPINNER1.VALUE=1
THISFORM.REFRESH
ENDIF
ELSE
WAIT WIND " ... CANCELANDO OPERACIN ... " TIME 1
THISFORM.CONTAINER1.COMMAND1.SETFOCUS
THISFORM.CONTAINER1.SPINNER1.VALUE=1
NR=1
GO RECORD NR
ENDIF
THISFORM.REFRESH
EN EL FORMULARIO 3
FORM3.INIT
THISFORM.TEXT1.VALUE=DATE()
THISFORM.TEXT2.VALUE=DATE()
THISFORM.CHECK1.VALUE=0
THISFORM.CHECK2.VALUE=0

70

COMMAND1.CLICK
SELE FI_BI
SET FILTER TO
THISFORMSET.FORM3.ENABLED=.F.
THISFORMSET.FORM3.HIDE
THISFORMSET.FORM2.ENABLED=.F.
THISFORMSET.FORM1.ENABLED=.T.
THISFORMSET.FORM1.SHOW
THISFORMSET.FORM1.COMMAND6.SETFOCUS
THISFORMSET.FORM1.REFRESH
COMMAND2.CLICK
THISFORM.TEXT1.VALUE=DATE()
THISFORM.TEXT2.VALUE=DATE()
THISFORM.CHECK1.VALUE=0
THISFORM.CHECK2.VALUE=0
THISFORM.TEXT1.SETFOCUS
COMMAND3.CLICK
A=0
B=0
A=THISFORM.CHECK1.VALUE
B=THISFORM.CHECK2.VALUE
DO CASE
CASE THISFORM.TEXT1.VALUE>THISFORM.TEXT2.VALUE
WAIT WIND " ... INGRESO DE DATOS INCORRECTO ... " TIME 1.2
THISFORM.TEXT1.SETFOCUS
CASE THISFORM.CHECK1.VALUE=0.AND.THISFORM.CHECK2.VALUE=0
WAIT WIND " ... INGRESO DE DATOS INCORRECTO ... " TIME 1.2
THISFORM.CHECK1.SETFOCUS
CASE A=1.AND.B=0
SELE FI_BI
TIPREP="PRESTADOS"
SET FILTER TO FEC_FIC>=THISFORM.TEXT1.VALUE.AND.FEC_FIC<=THISFORM.TEXT2.VALUE.AND.DIS_LIB="NO"
FEC1=THISFORM.TEXT1.VALUE
FEC2=THISFORM.TEXT2.VALUE
REPORT FORM PREDEV NOCONSOLE PREVI
CASE A=0.AND.B=1
SELE FI_BI
TIPREP="DEVUELTOS"
SET FILTER TO FEC_FIC>=THISFORM.TEXT1.VALUE.AND.FEC_FIC<=THISFORM.TEXT2.VALUE.AND.DIS_LIB="SI"
FEC1=THISFORM.TEXT1.VALUE
FEC2=THISFORM.TEXT2.VALUE
REPORT FORM PREDEV NOCONSOLE PREVI
CASE A=1.AND.B=1
SELE FI_BI
TIPREP="PRESTADOS Y DEVUELTOS"
SET FILTER TO FEC_FIC>=THISFORM.TEXT1.VALUE.AND.FEC_FIC<=THISFORM.TEXT2.VALUE
FEC1=THISFORM.TEXT1.VALUE
FEC2=THISFORM.TEXT2.VALUE
REPORT FORM PREDEV NOCONSOLE PREVI
ENDCASE
EN EL FORMULARIO 4
COMMAND2.GOTFOCUS
THISFORMSET.FORM1.MENSAJE.VALUE=" ELIMINA LA NUEVA INFORMACIN Y REINICIALIZA EL PROGRAMA"
COMMAND2.CLICK
THISFORMSET.FORM4.HIDE
THISFORMSET.FORM4.ENABLED=.F.
THISFORMSET.FORM1.ENABLED=.T.
THISFORMSET.FORM1.SHOW
THISFORMSET.FORM1.INIT
THISFORMSET.FORM1.REFRESH
TEXAP.KEYPRESS
LPARAMETERS nKeyCode, nShiftAltCtrl
IF LASTKEY()<>13
ELSE
IF EMPTY(THISFORM.TEXAP.VALUE)
ELSE
WAP=ALLT(THISFORM.TEXAP.VALUE)
THISFORM.COSEM.ENABLED=.T.
THISFORM.COSEM.SETFOCUS
ENDIF
ENDIF
COSEM.KEYPRESS
LPARAMETERS nKeyCode, nShiftAltCtrl
SET EXACT ON
IF LASTKEY()=13
DO CASE
CASE ALLT(THIS.VALUE)="ALUMNO"
THISFORM.COGRU.VALUE="*"
THISFORM.COESP.SETFOCUS
CASE ALLT(THIS.VALUE)="DOCENTE"
THISFORM.COGRU.VALUE="*"
THISFORM.COESP.SETFOCUS
CASE ALLT(THIS.VALUE)="PERS.ADM./SERV."
THISFORM.COGRU.VALUE="*"
THISFORM.COESP.VALUE="*"

71

THISFORM.TEXCO.SETFOCUS
ENDCASE
ENDIF
COGRU.KEYPRESS
LPARAMETERS nKeyCode, nShiftAltCtrl
SET EXACT ON
IF LASTKEY()=13
DO CASE
CASE ALLT(THIS.VALUE)="*"
THISFORM.COESP.SETFOCUS
CASE ALLT(THIS.VALUE)="A"
THISFORM.COESP.SETFOCUS
CASE ALLT(THIS.VALUE)="B"
THISFORM.COESP.SETFOCUS
CASE ALLT(THIS.VALUE)="C"
THISFORM.COESP.SETFOCUS
CASE ALLT(THIS.VALUE)="D"
THISFORM.COESP.SETFOCUS
CASE ALLT(THIS.VALUE)="E"
THISFORM.COESP.SETFOCUS
ENDCASE
ENDIF
COMMAND1.GOTFOCUS
THISFORMSET.FORM1.MENSAJE.VALUE="GRABA LOS NUEVOS DATOS DEL USUARIO"
COMMAND1.CLICK
IF LASTKEY()=13
WCOSE=THISFORM.COSEM.VALUE
WCOES=THISFORM.COESP.VALUE
DO CASE
CASE THISFORM.COSEM.VALUE="DOCENTE".AND.THISFORM.COESP.VALUE=""
WAIT WINDOW " ... INGRESO DE DATOS INCORRECTO ... " TIME 1
THISFORM.COESP.SETFOCUS
CASE EMPTY(THISFORM.TEXAP.VALUE)
WAIT WINDOW " ... INGRESO DE DATOS INCORRECTO ... " TIME 1
THISFORM.TEXAP.SETFOCUS
CASE THISFORM.COSEM.VALUE=""
WAIT WINDOW " ... INGRESO DE DATOS INCORRECTO ... " TIME 1
THISFORM.COSEM.SETFOCUS
CASE THISFORM.COGRU.VALUE=""
WAIT WINDOW " ... INGRESO DE DATOS INCORRECTO ... " TIME 1
THISFORM.COGRU.SETFOCUS
CASE EMPTY(THISFORM.TEXCO.VALUE)
WAIT WINDOW " ... INGRESO DE DATOS INCORRECTO ... " TIME 1
THISFORM.TEXCO.SETFOCUS
OTHERWISE
SELE CL_IE
LOCATE FOR ALLT(CL_IE.COCLI)=THISFORM.TEXCO.VALUE
IF FOUND()
WAIT WIND " ... CDIGO YA EXISTE ... " TIME 1
THISFORM.TEXCO.SETFOCUS
ELSE
APPEND BLANK
R=RECNO()
REPLA CL_IE.APCLI WITH THISFORM.TEXAP.VALUE
REPLA CL_IE.COCLI WITH THISFORM.TEXCO.VALUE
REPLA CL_IE.ESCLI WITH WCOES
REPLA CL_IE.GRCLI WITH THISFORM.COGRU.VALUE
REPLA CL_IE.FICLI WITH DATE()
DO CASE
CASE THISFORM.COSEM.VALUE="PERS.ADM./SERV."
REPLA CL_IE.OCCLI WITH "PERS.ADM./SERV."
REPLA CL_IE.SECLI WITH WCOSE
CASE THISFORM.COSEM.VALUE="DOCENTE"
REPLA CL_IE.OCCLI WITH "DOCENTE"
REPLA CL_IE.SECLI WITH WCOSE
CASE THISFORM.COSEM.VALUE<>"DOCENTE".OR.THISFORM.COSEM.VALUE<>"PERS.ADM./SERV."
REPLA CL_IE.OCCLI WITH "ALUMNO"
REPLA CL_IE.SECLI WITH WCOSE
ENDCASE
WAIT WIND " GRABANDO EN EL "+ALLT(STR(R))+" REGISTRO" TIME 1.5
THISFORMSET.FORM4.HIDE
THISFORMSET.FORM4.ENABLED=.F.
THISFORMSET.FORM1.ENABLED=.T.
THISFORMSET.FORM1.TEXNOM.VALUE=THISFORM.TEXAP.VALUE
THISFORMSET.FORM1.TEXCODIGO.VALUE=THISFORM.TEXCO.VALUE
THISFORMSET.FORM1.COMBO1.VALUE=THISFORM.COSEM.VALUE
THISFORMSET.FORM1.TEXNOM.ENABLED=.F.
THISFORMSET.FORM1.TEXCODIGO.ENABLED=.F.
THISFORMSET.FORM1.GRID1.ENABLED=.F.
THISFORMSET.FORM1.GRID1.VISIBLE=.F.
THISFORMSET.FORM1.COMBO1.ENABLED=.F.
THISFORMSET.FORM1.TEXT1.ENABLED=.T.
THISFORMSET.FORM1.TEXT1.SETFOCUS
THISFORMSET.FORM1.SHOW
THISFORMSET.FORM1.REFRESH
ENDIF
ENDCASE
ENDIF
COESP.KEYPRESS
LPARAMETERS nKeyCode, nShiftAltCtrl
SET EXACT ON
WCOESP=THISFORM.COESP.VALUE
IF LASTKEY()=13

72

DO CASE
CASE ALLT(THIS.VALUE)<>""
THISFORM.TEXCO.SETFOCUS
ENDCASE
ENDIF
COMMAND4.CLICK
THISFORM.TEXCO.VALUE=""
THISFORM.TEXAP.VALUE=""
THISFORM.COSEM.VALUE=""
THISFORM.COGRU.VALUE=""
THISFORM.COESP.VALUE=""
THISFORM.TEXAP.SETFOCUS
COMMAND4.GOTFOCUS
THISFORMSET.FORM1.MENSAJE.VALUE="LIMPIA LOS TEXTOS PARA QUE SEAN NUEVAMENTE LLENADOS"
TEXCO.KEYPRESS
LPARAMETERS nKeyCode, nShiftAltCtrl
IF LASTKEY()=13
IF EMPTY(THISFORM.TEXCO.VALUE)
ELSE
DO CASE
CASE LEN(ALLT(THISFORM.TEXCO.VALUE))<=5.AND.OPC=1.AND.ALLT(THISFORMSET.FORM1.COMBO1.VALUE)="ALUMNO"
WAIT WIND "... INGRESE BIEN EL CODIGO (6 CARACTERES) ..." TIME 1
THISFORM.TEXCO.SETFOCUS
CASE LEN(ALLT(THISFORM.TEXCO.VALUE))<=7.AND.OPC=1.AND.ALLT(THISFORMSET.FORM1.COMBO1.VALUE)="DOCENTE"
WAIT WIND "... INGRESE BIEN EL CODIGO (DNI: 8 CARACTERES) ..." TIME 1
THISFORM.TEXCO.SETFOCUS
CASE LEN(ALLT(THISFORM.TEXCO.VALUE))<=7.AND.OPC=1.AND.ALLT(THISFORMSET.FORM1.COMBO1.VALUE)="PERS.ADM./SERV."
WAIT WIND "... INGRESE BIEN EL CODIGO (DNI: 8 CARACTERES) ..." TIME 1
THISFORM.TEXCO.SETFOCUS
CASE LEN(ALLT(THISFORM.TEXCO.VALUE))<=8.AND.OPC=2
WAIT WIND "... INGRESE BIEN EL CODIGO (DNI: 8 CARACTERES) ..." TIME 1
THISFORM.TEXCO.SETFOCUS
OTHERWISE
WCO=ALLT(THISFORM.TEXCO.VALUE)
SELE CL_IE
GO TOP
LOCATE FOR (ALLT(CL_IE.COCLI)=ALLT(WCO)).AND.(ALLT(CL_IE.SECLI)=ALLT(THISFORM.COSEM.VALUE))
IF FOUND()
IF MESSAGEBOX ("...DESEA REINTENTAR OPERACIN?...",4+32,".... CDIGO LOCALIZADO !!! ....")=6
THISFORM.TEXCO.VALUE=""
THISFORM.TEXCO.ENABLED=.T.
THISFORM.TEXCO.SETFOCUS
ELSE
THISFORM.COMMAND1.ENABLED=.T.
THISFORM.COMMAND1.SETFOCUS
ENDIF
ELSE
THISFORM.COMMAND1.ENABLED=.T.
THISFORM.COMMAND1.SETFOCUS
ENDIF
ENDCASE
ENDIF
ENDIF
FORMULARIO CONSULTA BIBLIOGRFICA
FORM1.INIT
SET PATH TO "FO_RM,IC_ON,PR_OG,TA_BL,IN_FO"
SET SAFETY OFF
SET ANSI ON
SET TALK OFF
SET STAT OFF
SET SYSM TO
WITH THISFORM
PUBLIC OPC,WCOD,WNOM,NRE,OPC,NOMC,TEXTO,GRD1,GRD2,N,R,X,Y,NUM,WCO,XZ,Z,L,X1,YY,COLI,WTEX,WLIB,WTEM
WLIB=""
WTEM=""
WTEX=""
COLI=""
XZ=0
Z=0
L=0
X1=0
YY=0
NUM=0
WCOD=""
WNOM=""
OPC=0
NOMC=""
TEXTO=""
N=0
N1=0
WCO=""
.COMBO1.VISIBLE=.F.
.COMBO1.ENABLED=.F.
.COMBO2.VISIBLE=.F.
.COMBO2.ENABLED=.F.
.TEXBUS.VISIBLE=.F.
.TEXBUS.ENABLED=.F.
.TEXLIB.VALUE=""
.TEXAUT.VALUE=""
.COMBO1.VALUE=""
.COMBO2.VALUE=""
.TEXBUS.VALUE=""

73

.OPTIONGROUP1.OPTION1.VALUE=1
.OPTIONGROUP1.OPTION2.VALUE=0
.OPTIONGROUP1.OPTION1.SETFOCUS
GRD1=.GRID1
GRD2=.GRID2
GRD1.RECORDSOURCE=""
GRD1.VISIBLE=.F.
GRD1.ENABLED=.F.
GRD2.RECORDSOURCE=""
GRD2.VISIBLE=.F.
GRD2.ENABLED=.F.
.REFRESH
ENDWITH
COMMAND1.CLICK
SET EXACT OFF
GRD1.RECORDSOURCE=""
GRD2.RECORDSOURCE=""
IF THISFORM.COMBO2.ENABLED=.F.
TEXTO=ALLT(THISFORM.TEXBUS.VALUE)
ELSE
TEXTO=ALLT(THISFORM.COMBO2.VALUE)
ENDIF
N=LEN(TEXTO)
IF N=0
WAIT WIND " ... INGRESO DE DATOS INCORRECTO ... " TIMEO 1.2
DO CASE
CASE THISFORM.COMBO2.ENABLED=.F.
THISFORM.COMBO1.SETFOCUS
CASE THISFORM.TEXBUS.ENABLED=.F.
THISFORM.COMBO2.SETFOCUS
ENDCASE
ELSE
DO CASE
CASE OPC=2
SELEC COD_LIB,IND_LIB,DES_LIB,DIS_LIB,CAR_LIB FROM IN_DI WHERE ATLINE(TEXTO,UPPER(&NOMC))=1 INTO CURSOR TEMP
GRD1.RECORDSOURCE="TEMP"
GRD1.VISIBLE=.T.
GRD1.ENABLED=.T.
GRD1.COLUMN1.TEXT1.SETFOCUS
GRD2.RECORDSOURCE=""
GRD2.VISIBLE=.F.
GRD2.ENABLED=.F.
CASE OPC=1
SELEC * FROM LI_BR WHERE ATLINE(TEXTO,UPPER(&NOMC))=1 INTO CURSOR TEMP
GRD1.RECORDSOURCE=""
GRD1.VISIBLE=.F.
GRD1.ENABLED=.F.
GRD2.RECORDSOURCE="TEMP"
GRD2.VISIBLE=.T.
GRD2.ENABLED=.T.
GRD2.COLUMN1.TEXT1.SETFOCUS
ENDCASE
ENDIF
COMMAND2.CLICK
THISFORM.INIT
COMMAND3.CLICK
RELEASE OPC,WCOD,WNOM,NRE,OPC,NOMC,TEXTO,GRD1,GRD2,N,R,X,Y,NUM,WCO,XZ,Z,L,X1,YY,COLI,WTEX,WLIB,WTEM
DO ME_BI.MPR
THISFORM.RELEASE
TEXT1.KEYPRESS
LPARAMETERS nKeyCode, nShiftAltCtrl
IF LASTKEY()=13
THISFORM.COMMAND2.SETFOCUS
ENDIF
GRID1.COLUMN1.TEXT1.GOTFOCUS
SELEC TEMP
WLIB=ALLT(TEMP.COD_LIB)
WTEM=ALLT(TEMP.IND_LIB)
SELE LI_BR
LOCA FOR ALLT(COD_LIB)==WLIB
IF FOUND()
THISFORM.TEXLIB.VALUE=TIT_LIB
THISFORM.TEXAUT.VALUE=AUT_LIB
ENDIF
GRID1.COLUMN1.TEXT1.KEYPRESS
LPARAMETERS nKeyCode, nShiftAltCtrl
IF LASTKEY()=13
THISFORM.COMMAND2.SETFOCUS
ENDIF
GRID1.COLUMN2.TEXT1.GOTFOCUS
SELEC TEMP
WLIB=ALLT(TEMP.COD_LIB)
WTEM=ALLT(TEMP.IND_LIB)
SELE LI_BR
LOCA FOR ALLT(COD_LIB)==WLIB
IF FOUND()
THISFORM.TEXLIB.VALUE=TIT_LIB

74

THISFORM.TEXAUT.VALUE=AUT_LIB
ENDIF
GRID1.COLUMN2.TEXT1.KEYPRESS
LPARAMETERS nKeyCode, nShiftAltCtrl
IF LASTKEY()=13
THISFORM.COMMAND2.SETFOCUS
ENDIF
GRID1.COLUMN3.TEXT1.GOTFOCUS
SELEC TEMP
WLIB=ALLT(TEMP.COD_LIB)
WTEM=ALLT(TEMP.IND_LIB)
SELE LI_BR
LOCA FOR ALLT(COD_LIB)==WLIB
IF FOUND()
THISFORM.TEXLIB.VALUE=TIT_LIB
THISFORM.TEXAUT.VALUE=AUT_LIB
ENDIF
GRID1.COLUMN3.TEXT1.KEYPRESS
LPARAMETERS nKeyCode, nShiftAltCtrl
IF LASTKEY()=13
THISFORM.COMMAND2.SETFOCUS
ENDIF
GRID1.COLUMN4.TEXT1.GOTFOCUS
SELEC TEMP
WLIB=ALLT(TEMP.COD_LIB)
WTEM=ALLT(TEMP.IND_LIB)
SELE LI_BR
LOCA FOR ALLT(COD_LIB)==WLIB
IF FOUND()
THISFORM.TEXLIB.VALUE=TIT_LIB
THISFORM.TEXAUT.VALUE=AUT_LIB
ENDIF
GRID1.COLUMN4.TEXT1.KEYPRESS
LPARAMETERS nKeyCode, nShiftAltCtrl
IF LASTKEY()=13
THISFORM.COMMAND2.SETFOCUS
ENDIF
GRID1.COLUMN5.TEXT1.GOTFOCUS
SELEC TEMP
WLIB=ALLT(TEMP.COD_LIB)
WTEM=ALLT(TEMP.IND_LIB)
SELE LI_BR
LOCA FOR ALLT(COD_LIB)==WLIB
IF FOUND()
THISFORM.TEXLIB.VALUE=TIT_LIB
THISFORM.TEXAUT.VALUE=AUT_LIB
ENDIF
GRID1.COLUMN5.TEXT1.KEYPRESS
LPARAMETERS nKeyCode, nShiftAltCtrl
IF LASTKEY()=13
THISFORM.COMMAND2.SETFOCUS
ENDIF
COMBO1.INTERACTIVECHANGE
IF OPC=1
THISFORM.COMBO2.VISIBLE=.F.
THISFORM.COMBO2.ENABLED=.F.
THISFORM.TEXBUS.VISIBLE=.T.
THISFORM.TEXBUS.ENABLED=.T.
DO CASE
CASE ALLT(THIS.VALUE)="CODIGO"
NOMC="COD_LIB"
CASE ALLT(THIS.VALUE)="TITULO"
NOMC="TIT_LIB"
CASE ALLT(THIS.VALUE)="TIPO"
NOMC="TIP_LIB"
CASE ALLT(THIS.VALUE)="AUTOR"
NOMC="AUT_LIB"
CASE ALLT(THIS.VALUE)="EDITORIAL"
NOMC="EDI_LIB"
CASE ALLT(THIS.VALUE)="DISPONIBLE"
NOMC="DIS_LIB"
THISFORM.COMBO2.VISIBLE=.T.
THISFORM.COMBO2.ENABLED=.T.
THISFORM.TEXBUS.VISIBLE=.F.
THISFORM.TEXBUS.ENABLED=.F.
THISFORM.COMBO2.CLEAR
THISFORM.COMBO2.ADDITEM("SI")
THISFORM.COMBO2.ADDITEM("NO")
CASE ALLT(THIS.VALUE)="CARRERA PROFESIONAL"
NOMC="CAR_LIB"
OTHERWISE
THISFORM.COMBO1.VALUE=""
ENDCASE
ELSE
IF OPC=2
THISFORM.COMBO2.VISIBLE=.F.

75

THISFORM.COMBO2.ENABLED=.F.
THISFORM.TEXBUS.VISIBLE=.T.
THISFORM.TEXBUS.ENABLED=.T.
DO CASE
CASE ALLT(THIS.VALUE)="CODIGO"
NOMC="COD_LIB"
CASE ALLT(THIS.VALUE)="TEMA"
NOMC="IND_LIB"
CASE ALLT(THIS.VALUE)="DISPONIBLE"
NOMC="DIS_LIB"
THISFORM.COMBO2.VISIBLE=.T.
THISFORM.COMBO2.ENABLED=.T.
THISFORM.TEXBUS.VISIBLE=.F.
THISFORM.TEXBUS.ENABLED=.F.
THISFORM.COMBO2.CLEAR
THISFORM.COMBO2.ADDITEM("SI")
THISFORM.COMBO2.ADDITEM("NO")
CASE ALLT(THIS.VALUE)="CARRERA PROFESIONAL"
NOMC="CAR_LIB"
OTHERWISE
THISFORM.COMBO1.VALUE=""
ENDCASE
ENDIF
ENDIF
GRID2.COLUMN1.TEXT1.KEYPRESS
LPARAMETERS nKeyCode, nShiftAltCtrl
IF LASTKEY()=13
THISFORM.COMMAND3.SETFOCUS
ENDIF
OPTIONGROUP1.CLICK
WITH THISFORM
OPC=THIS.VALUE
.COMBO1.VISIBLE=.T.
.COMBO1.ENABLED=.T.
.TEXBUS.VISIBLE=.T.
.TEXBUS.ENABLED=.T.
.COMBO1.VALUE=""
.COMBO2.VALUE=""
.TEXBUS.VALUE=""
.OPTIONGROUP1.OPTION1.SETFOCUS
GRD1.RECORDSOURCE=""
GRD1.VISIBLE=.F.
GRD1.ENABLED=.F.
GRD2.RECORDSOURCE=""
GRD2.VISIBLE=.F.
GRD2.ENABLED=.F.
DO CASE
CASE OPC=1
.COMBO1.CLEAR
.COMBO1.ADDITEM("CODIGO")
.COMBO1.ADDITEM("TITULO")
.COMBO1.ADDITEM("TIPO")
.COMBO1.ADDITEM("AUTOR")
.COMBO1.ADDITEM("EDITORIAL")
.COMBO1.ADDITEM("DISPONIBLE")
.COMBO1.ADDITEM("CARRERA PROFESIONAL")
.COMBO1.SETFOCUS
CASE OPC=2
.COMBO1.CLEAR
.COMBO1.ADDITEM("CODIGO")
.COMBO1.ADDITEM("TEMA")
.COMBO1.ADDITEM("DISPONIBLE")
.COMBO1.ADDITEM("CARRERA PROFESIONAL")
.COMBO1.SETFOCUS
ENDCASE
.REFRESH
ENDWITH
TEXBUS.KEYPRESS
LPARAMETERS nKeyCode, nShiftAltCtrl
IF LASTKEY()=13
IF EMPTY(THISFORM.COMBO1.VALUE).OR.EMPTY(THISFORM.TEXBUS.VALUE)
ELSE
THISFORM.COMMAND1.SETFOCUS
ENDIF
ENDIF
TEXLIB.KEYPRESS
LPARAMETERS nKeyCode, nShiftAltCtrl
IF LASTKEY()=13
IF EMPTY(THISFORM.COMBO1.VALUE).OR.EMPTY(THISFORM.TEXBUS.VALUE)
ELSE
THISFORM.COMMAND1.SETFOCUS
ENDIF
ENDIF
TEXAUT.KEYPRESS
LPARAMETERS nKeyCode, nShiftAltCtrl
IF LASTKEY()=13
IF EMPTY(THISFORM.COMBO1.VALUE).OR.EMPTY(THISFORM.TEXBUS.VALUE)
ELSE
THISFORM.COMMAND1.SETFOCUS
ENDIF
ENDIF

76

CONJUNTO DE FORMULARIOS INGRESAR NDICES


FORM1.INIT
SET PATH TO "FO_RM,IC_ON,PR_OG,TA_BL,IN_FO"
SET SAFETY OFF
SET TALK OFF
SET ANSI ON
SET STAT OFF
SET SYSM TO
WITH THISFORM
PUBLIC WCOD,WDES,WDIS,WCAR,WNOM,NRE,OPC,NOMC,TEXTO,VGRID,N,R,X,Y,NUM,WCO1,XZ,Z,L,X1,YY,WNUM
WDES=""
WDIS=""
WCAR=""
XZ=0
Z=0
L=0
X1=0
YY=0
NUM=0
WCOD=""
WNOM=""
OPC=0
NOMC=""
TEXTO=""
N=0
N1=0
THISFORMSET.FORM1.SHOW
THISFORMSET.FORM2.VISIBLE=.F.
THISFORMSET.FORM2.ENABLED=.F.
THISFORMSET.FORM2.HIDE
.TEXNOM.ENABLED=.F.
.GRID1.RECORDSOURCE=""
SELE TE_IN
ZAP
.GRID1.ENABLED=.F.
.TEXCOD.VISIBLE=.T.
.TEXCOD.ENABLED=.T.
.TEXCOD.VALUE=""
.TEXCOD.SETFOCUS
.TEXTIT.VALUE=""
.TEXAUT.VALUE=""
.TEXT1.VALUE=0
.GRID1.RECORDSOURCE=""
.GRID1.ENABLED=.F.
.COMMAND1.ENABLED=.T.
.COMMAND2.ENABLED=.F.
.COMMAND3.ENABLED=.F.
.COMMAND4.ENABLED=.T.
.REFRESH
ENDWITH
TEXCOD.KEYPRESS
LPARAMETERS nKeyCode, nShiftAltCtrl
IF LASTKEY()=13
IF EMPTY(THISFORM.TEXCOD.VALUE)
ELSE
THISFORM.COMMAND1.SETFOCUS
ENDIF
ENDIF
COMMAND1.CLICK
SET EXACT ON
WITH THISFORM
IF EMPTY(THISFORM.TEXCOD.VALUE)
.TEXCOD.SETFOCUS
ELSE
.COMMAND1.ENABLED=.F.
.COMMAND2.ENABLED=.T.
.COMMAND3.ENABLED=.T.
WCOD=ALLT(.TEXCOD.VALUE)
SELE LI_BR
SEEK WCOD ORDER COD_LIB
IF FOUND()
WDES=ALLT(DES_LIB)
WDIS=ALLT(DIS_LIB)
WCAR=ALLT(CAR_LIB)
NRE=RECNO()
SELE IN_DI
SEEK WCOD ORDER COD_LIB
IF.NOT.FOUND()
SELE LI_BR
GO RECORD NRE
WAIT WIND " ... CONTINUANDO OPERACION ... " TIME 1.2
.TEXCOD.ENABLED=.F.
.TEXNOM.ENABLED=.T.
.TEXNOM.SETFOCUS
.TEXCOD.VALUE=ALLT(LI_BR.COD_LIB)
.TEXTIT.VALUE=ALLT(LI_BR.TIT_LIB)
.TEXAUT.VALUE=ALLT(LI_BR.AUT_LIB)
ELSE
WAIT WIND " ... LIBRO YA REGISTRADO ... " TIME 1
IF MESSAGEBOX(" DESEA ADICIONAR MAS INDICES?",48+4," BIBLIOTECA "+DA_EN.NOM_ENT)=6
WAIT WIND " ... CONTINUANDO OPERACION ... " TIME 1.2
.TEXCOD.ENABLED=.F.
.TEXNOM.ENABLED=.T.

77

.TEXNOM.SETFOCUS
.TEXCOD.VALUE=ALLT(LI_BR.COD_LIB)
.TEXTIT.VALUE=ALLT(LI_BR.TIT_LIB)
.TEXAUT.VALUE=ALLT(LI_BR.AUT_LIB)
ELSE
.INIT
ENDIF
ENDIF
ELSE
WAIT WIND " ... CODIGO NO EXISTE ... " TIME 1
.INIT
ENDIF
ENDIF
.REFRESH
ENDWITH
COMMAND2.CLICK
THISFORM.INIT
COMMAND3.CLICK
SELE TE_IN
IF RECCOUNT()=0
THISFORM.TEXCOD.SETFOCUS
ELSE
IF MESSAGEBOX (" ... GRABAR REGISTRO ... ",32+4," ... EDICIN DE DATOS ... ")=6
WCOD=ALLT(THISFORM.TEXCOD.VALUE)
SELE TE_IN
GO TOP
XZ=RECCOUNT()
Z=1
DO WHILE Z<(XZ+1)
SELE TE_IN
GO RECORD Z
WNOM=SUBS(ALLT(TE_IN.TEM_BUS),1)
SELE IN_DI
APPE BLAN
GO BOTTOM
REPL COD_LIB WITH WCOD
REPL IND_LIB WITH WNOM
REPL DES_LIB WITH WDES
REPL DIS_LIB WITH WDIS
REPL CAR_LIB WITH WCAR
SELE TE_IN
Z=Z+1
ENDDO
WAIT WIND " ... REGISTROS GRABADOS ... " TIME 1.5
THISFORM.INIT
ELSE
THISFORM.TEXNOM.SETFOCUS
ENDIF
ENDIF
COMMAND4.CLICK
RELEASE WCOD,WDES,WDIS,WCAR,WNOM,NRE,OPC,NOMC,TEXTO,VGRID,N,R,X,Y,NUM,WCO1,XZ,Z,L,X1,YY,WNUM
SET PATH TO "FO_RM,IC_ON,PR_OG,TA_BL,IN_FO"
DO ME_BI.MPR
THISFORMSET.RELEASE
COMMAND6.CLICK
SELE TE_IN
THISFORMSET.FORM2.SPINNER1.SPINNERHIGHVALUE=RECCOUNT()
IF RECCOUNT()=0
THISFORM.TEXNOM.VALUE=""
THISFORM.TEXNOM.SETFOCUS
THISFORM.GRID1.ENABLED=.F.
ELSE
NRE=1
GO RECORD NRE
THISFORMSET.FORM1.VISIBLE=.T.
THISFORMSET.FORM1.ENABLED=.F.
THISFORMSET.FORM2.SHOW
THISFORMSET.FORM2.VISIBLE=.T.
THISFORMSET.FORM2.ENABLED=.T.
THISFORMSET.FORM2.SPINNER1.VALUE=1
ENDIF
COMMAND5.CLICK
THISFORM.REFRESH
DO CASE
CASE LASTKEY()=13.AND. EMPTY(THISFORM.TEXCOD.VALUE)=.T.
WAIT WIND " ... INGRESO DE DATOS INCORRECTO ... " TIME 1
THISFORM.TEXCOD.SETFOCUS
CASE LASTKEY()=13.AND. EMPTY(THISFORM.TEXNOM.VALUE)=.T.
WAIT WIND " ... INGRESO DE DATOS INCORRECTO ... " TIME 1
THISFORM.TEXNOM.SETFOCUS
CASE LASTKEY()=13.AND. EMPTY(THISFORM.TEXCOD.VALUE)=.F..AND. EMPTY(THISFORM.TEXNOM.VALUE)=.F.
WNUM=THISFORM.TEXT1.VALUE
SELE TE_IN
THISFORM.GRID1.ENABLED=.T.
THISFORM.GRID1.VISIBLE=.T.
APPEND BLANK
NRE=RECCOUNT()
REPLA TE_IN.NUM WITH NRE
REPLA TE_IN.TEM_BUS WITH ALLT(SUBS(THISFORM.TEXNOM.VALUE,1))
REPLA TE_IN.TEM_PAG WITH WNUM
THISFORM.TEXNOM.VALUE=""

78

THISFORM.TEXNOM.SETFOCUS
GO TOP
THISFORM.GRID1.RECORDSOURCE="TE_IN"
THISFORM.TEXT1.VALUE=0
ENDCASE
TEXTIT.KEYPRESS
LPARAMETERS nKeyCode, nShiftAltCtrl
IF LASTKEY()=13
IF EMPTY(THISFORM.TEXCOD.VALUE)
ELSE
THISFORM.COMMAND1.SETFOCUS
ENDIF
ENDIF
TEXAUT.KEYPRESS
LPARAMETERS nKeyCode, nShiftAltCtrl
IF LASTKEY()=13
IF EMPTY(THISFORM.TEXCOD.VALUE)
ELSE
THISFORM.COMMAND1.SETFOCUS
ENDIF
ENDIF
EN EL FORMULARIO 2
SPINNER1.LOSTFOCUS
SELE TE_IN
IF THISFORM.SPINNER1.VALUE>RECCOUNT().OR.THISFORM.SPINNER1.VALUE<1
WAIT WIND " ... INGRESO INCORRECTO ... " TIME 1.5
THISFORM.SPINNER1.VALUE=1
NRE=THISFORM.SPINNER1.VALUE
GO RECORD NRE
ELSE
NRE=THISFORM.SPINNER1.VALUE
GO RECORD NRE
ENDIF
COMMAND3.CLICK
THISFORMSET.FORM2.HIDE
THISFORMSET.FORM2.ENABLED=.F.
THISFORMSET.FORM1.ENABLED=.T.
THISFORMSET.FORM1.SHOW
THISFORMSET.FORM1.REFRESH
THISFORMSET.FORM1.TEXNOM.ENABLED=.T.
THISFORMSET.FORM1.TEXNOM.VALUE=""
THISFORMSET.FORM1.TEXNOM.SETFOCUS
COMMAND2.CLICK
IF MESSAGEBOX(" ELIMINAR REGISTRO(S) ? ",4+32," DE INDICE(S)")=6
THISFORMSET.FORM1.GRID1.RECORDSOURCE=""
DELETE ALL
PACK
WAIT WINDOW " ... REGISTRO(S) ELIMINADO(S) ... " TIME 1
THISFORMSET.FORM2.ENABLED=.F.
THISFORMSET.FORM2.HIDE
THISFORMSET.FORM1.ENABLED=.T.
THISFORMSET.FORM1.SHOW
THISFORMSET.FORM1.GRID1.ENABLED=.F.
THISFORMSET.FORM1.TEXNOM.ENABLED=.T.
THISFORMSET.FORM1.TEXNOM.VALUE=""
THISFORMSET.FORM1.TEXNOM.SETFOCUS
THISFORMSET.FORM1.GRID1.RECORDSOURCE="TE_IN"
THISFORMSET.REFRESH
ELSE
WAIT WINDOW " ... CANCELANDO OPERACIN ... " TIME 1
THISFORM.COMMAND2.SETFOCUS
THISFORM.SPINNER1.VALUE=1
NRE=1
GO RECORD NRE
ENDIF
COMMAND1.CLICK
IF MESSAGEBOX(" ... ELIMINAR REGISTRO "+ ALLT(STR(NRE))+" ... ? ",48+4," INDICE(S) ")=6
SELE TE_IN
THISFORMSET.FORM1.GRID1.RECORDSOURCE=""
GO RECORD NRE
DELETE
PACK
WAIT WINDOW " ... REGISTRO "+ALLT(STR(NRE))+""+" ELIMINADO ... " TIME 1.5
THISFORMSET.FORM1.GRID1.RECORDSOURCE="TE_IN"
SELEC TE_IN
R=RECCOUNT()
NR=1
DO WHILE NR<R.OR.NR=R
REPLA NUM WITH NR
IF.NOT.EOF()
SKIP
ENDIF
NR=NR+1
ENDDO
R=0
NR=0

79

SELEC TE_IN
IF RECCOUNT()=0
THISFORMSET.FORM2.ENABLED=.F.
THISFORMSET.FORM2.HIDE
THISFORMSET.FORM1.ENABLED=.T.
THISFORMSET.FORM1.SHOW
THISFORMSET.FORM1.GRID1.ENABLED=.F.
THISFORMSET.FORM1.TEXNOM.ENABLED=.T.
THISFORMSET.FORM1.TEXNOM.VALUE=""
ELSE
THISFORM.SPINNER1.VALUE=1
THISFORM.SPINNER1.SPINNERHIGHVALUE=RECCOUNT()
THISFORM.COMMAND1.SETFOCUS
THISFORM.SPINNER1.VALUE=1
NRE=1
GO RECORD NRE
THISFORM.REFRESH
ENDIF
ELSE
WAIT WINDOW " ... CANCELANDO OPERACIN ... " TIME 1.5
THISFORM.COMMAND1.SETFOCUS
THISFORM.SPINNER1.VALUE=1
NRE=1
GO RECORD NRE
ENDIF
THISFORM.REFRESH
CONJUNTO DE FORMULARIOS DATOS DE MATERIAL BIBLIOGRFICO
EN EL FORMULARIO 1
FORM1.INIT
*SET DELE OFF
SET PATH TO "FO_RM,IC_ON,PR_OG,TA_BL,IN_FO"
SET CENTURY ON
SET SYSM TO
SET DATE DMY
SET STAT OFF
WITH THISFORM
PUBLIC COD,TIT,TIP,AUT,EDI,DES,CAR,DIS,NRE,OPC,NOMC,TEXTO,VGRID,N,R,X,Y,NUM,XZ,Z,L
N=0
R=0
X=0
Y=0
L=0
XZ=0
Z=0
NUM=0
COD=""
TIT=""
TIP=""
AUT=""
EDI=""
DES=""
CAR=""
DIS=""
OPC=0
NOMC=""
TEXTO=""
THISFORMSET.FORM1.SHOW
THISFORMSET.FORM1.ENABLED=.T.
THISFORMSET.FORM2.HIDE
THISFORMSET.FORM2.ENABLED=.F.
.SETALL("ENABLED",.T.,"COMMANDBUTTON")
.TEXCOD.CONTROLSOURCE="LI_BR.COD_LIB"
.TEXTIT.CONTROLSOURCE="LI_BR.TIT_LIB"
.TEXTIP.CONTROLSOURCE="LI_BR.TIP_LIB"
.TEXAUT.CONTROLSOURCE="LI_BR.AUT_LIB"
.TEXEDI.CONTROLSOURCE="LI_BR.EDI_LIB"
.TEXDES.CONTROLSOURCE="LI_BR.DES_LIB"
.TEXCAR.CONTROLSOURCE="LI_BR.CAR_LIB"
.TEXDIS.CONTROLSOURCE="LI_BR.DIS_LIB"
.TEXCAR.ENABLED=.F.
.TEXDIS.ENABLED=.F.
.COMMAND9.ENABLED=.F.
.COMMAND10.ENABLED=.F.
.SETALL("ENABLED",.F.,"TEXTBOX")
THISFORMSET.FORM2.HIDE
.REFRESH
SELE LI_BR
DO CASE
CASE RECCOUNT()=0.OR.RECCOUNT()=1
.COMMAND1.ENABLED=.F.
.COMMAND2.ENABLED=.F.
.COMMAND3.ENABLED=.F.
.COMMAND4.ENABLED=.F.
.COMMAND5.SETFOCUS
.TEXT1.VALUE=" 1 REGISTRO O NO EXISTE REGISTROS"
CASE RECNO()=RECCOUNT()
.COMMAND3.ENABLED=.F.
.COMMAND4.ENABLED=.F.
.COMMAND2.SETFOCUS
.TEXT1.VALUE=ALLT(STR(NRE))+" REGISTRO"
CASE RECNO()=1
.COMMAND1.ENABLED=.F.
.COMMAND2.ENABLED=.F.
.COMMAND3.SETFOCUS
.TEXT1.VALUE=ALLT(STR(RECNO()))+" REGISTRO"
OTHERWISE

80

.COMMAND1.ENABLED=.T.
.COMMAND2.ENABLED=.T.
.COMMAND3.ENABLED=.T.
.COMMAND4.ENABLED=.T.
NRE=RECNO()
.TEXT1.VALUE=ALLT(STR(NRE))+" REGISTRO"
ENDCASE
.REFRESH
ENDWITH
TEXTIT.GOTFOCUS
THISFORM.TEXT1.VALUE=THIS.TOOLTIPTEXT
TEXTIT.KEYPRESS
LPARAMETERS nKeyCode, nShiftAltCtrl
IF LASTKEY()=13
IF EMPTY(THISFORM.TEXTIT.VALUE)
ELSE
THISFORM.TEXTIP.SETFOCUS
ENDIF
ENDIF
TEXTIP.GOTFOCUS
THISFORM.TEXT1.VALUE=THIS.TOOLTIPTEXT
TEXTIP.KEYPRESS
LPARAMETERS nKeyCode, nShiftAltCtrl
IF LASTKEY()=13
IF EMPTY(THISFORM.TEXTIT.VALUE)
ELSE
THISFORM.TEXAUT.SETFOCUS
ENDIF
ENDIF
TEXCOD.KEYPRESS
LPARAMETERS nKeyCode, nShiftAltCtrl
IF LASTKEY()=13
IF EMPTY(THISFORM.TEXCOD.VALUE)
ELSE
THISFORM.TEXTIT.SETFOCUS
ENDIF
ENDIF
TEXCOD.GOTFOCUS
THISFORM.TEXT1.VALUE=THIS.TOOLTIPTEXT
COMMAND1.GOTFOCUS
THISFORM.TEXT1.VALUE=THIS.TOOLTIPTEXT
COMMAND1.CLICK
SELE LI_BR
GO TOP
THISFORM.COMMAND1.ENABLED=.F.
THISFORM.COMMAND2.ENABLED=.F.
THISFORM.COMMAND3.ENABLED=.T.
THISFORM.COMMAND4.ENABLED=.T.
THISFORM.TEXT1.VALUE=ALLT(STR(RECNO()))+" REGISTRO"
THISFORM.REFRESH
COMMAND5.GOTFOCUS
THISFORM.TEXT1.VALUE=THIS.TOOLTIPTEXT
COMMAND5.CLICK
SELE LI_BR
OPC=1
NRE=RECNO()
THISFORM.SETALL("ENABLED",.F.,"COMMANDBUTTON")
THISFORM.SETALL("CONTROLSOURCE","","TEXTBOX")
THISFORM.TEXCAR.CONTROLSOURCE=""
THISFORM.TEXDIS.CONTROLSOURCE=""
THISFORM.SETALL("VALUE","","TEXTBOX")
THISFORM.TEXCOD.VALUE=COD
THISFORM.TEXTIT.VALUE=TIT
THISFORM.TEXTIP.VALUE=TIP
THISFORM.TEXAUT.VALUE=AUT
THISFORM.TEXEDI.VALUE=EDI
THISFORM.TEXDES.VALUE=DES
THISFORM.TEXCAR.VALUE=CAR
THISFORM.TEXDIS.VALUE=DIS
THISFORM.SETALL("ENABLED",.T.,"TEXTBOX")
THISFORM.TEXCAR.ENABLED=.T.
THISFORM.TEXDIS.ENABLED=.T.
THISFORM.COMMAND9.ENABLED=.T.
THISFORM.COMMAND10.ENABLED=.T.
THISFORM.TEXT1.ENABLED=.F.
THISFORM.TEXT1.VALUE=" NUEVO REGISTRO "
THISFORM.TEXCOD.SETFOCUS
THISFORM.REFRESH
COMMAND6.GOTFOCUS

81

THISFORM.TEXT1.VALUE=THIS.TOOLTIPTEXT
COMMAND6.CLICK
SELE LI_BR
IF RECCOUNT()=0
ELSE
OPC=2
NRE=RECNO()
THISFORM.SETALL("ENABLED",.F.,"COMMANDBUTTON")
THISFORM.SETALL("ENABLED",.T.,"TEXTBOX")
COD=SUBS(ALLT(LI_BR.COD_LIB),1)
TIT=SUBS(ALLT(LI_BR.TIT_LIB),1)
TIP=SUBS(ALLT(LI_BR.TIP_LIB),1)
AUT=SUBS(ALLT(LI_BR.AUT_LIB),1)
EDI=SUBS(ALLT(LI_BR.EDI_LIB),1)
DES=SUBS(ALLT(LI_BR.DES_LIB),1)
CAR=SUBS(ALLT(LI_BR.CAR_LIB),1)
DIS=SUBS(ALLT(LI_BR.DIS_LIB),1)
THISFORM.SETALL("CONTROLSOURCE","","TEXTBOX")
THISFORM.TEXCAR.CONTROLSOURCE=""
THISFORM.TEXDIS.CONTROLSOURCE=""
THISFORM.TEXCOD.VALUE=COD
THISFORM.TEXTIT.VALUE=TIT
THISFORM.TEXTIP.VALUE=TIP
THISFORM.TEXAUT.VALUE=AUT
THISFORM.TEXEDI.VALUE=EDI
THISFORM.TEXDES.VALUE=DES
THISFORM.TEXCAR.VALUE=CAR
THISFORM.TEXDIS.VALUE=DIS
THISFORM.TEXCAR.ENABLED=.T.
THISFORM.TEXDIS.ENABLED=.T.
THISFORM.COMMAND9.ENABLED=.T.
THISFORM.COMMAND10.ENABLED=.T.
THISFORM.TEXT1.VALUE=THIS.TOOLTIPTEXT+" "+ALLT(STR(RECNO()))+" REGISTRO"
THISFORM.TEXT1.ENABLED=.F.
THISFORM.TEXCOD.SETFOCUS
ENDIF
THISFORM.REFRESH
COMMAND7.GOTFOCUS
THISFORM.TEXT1.VALUE=THIS.TOOLTIPTEXT
COMMAND7.CLICK
SELEC LI_BR
IF RECCOUNT()=0
ELSE
R=RECNO()
THISFORM.TEXT1.ENABLED=.F.
THISFORMSET.FORM1.HIDE
THISFORMSET.FORM1.ENABLED=.F.
THISFORMSET.FORM2.ENABLED=.T.
THISFORMSET.FORM2.SHOW
THISFORMSET.FORM2.COMBO1.ENABLED=.T.
THISFORMSET.FORM2.TEXT1.VALUE=""
THISFORMSET.FORM2.TEXT1.ENABLED=.F.
VGRID.ENABLED=.F.
THISFORMSET.FORM2.COMMAND2.ENABLED=.F.
VGRID.RECORDSOURCE=""
VGRID.VISIBLE=.F.
THISFORMSET.FORM2.COMBO1.SETFOCUS
ENDIF
THISFORM.REFRESH
COMMAND8.GOTFOCUS
THISFORM.TEXT1.VALUE=THIS.TOOLTIPTEXT
COMMAND8.CLICK
SELE LI_BR
IF RECC()=0
ELSE
NRE=RECNO()
THISFORM.TEXT1.VALUE=" ... ELIMINAR "+ALLT(STR(NRE))+" REGISTRO ... "
IF RECCOUNT()=0
ELSE
IF RECCOUNT()>0
IF MESSAGEBOX(" DESEA ELIMINAR REGISTRO? ",4+32,"BIBILIOTECA")=6
SELE LI_BR
GO RECORD NRE
COD=COD_LIB
DELE
PACK
SELE IN_DI
SET FILTER TO COD_LIB==COD
DELE ALL
PACK
WAIT WINDOW " ... REGISTRO "+ALLT(STR(NRE))+" ELIMINADO ... " TIME 1
THISFORM.INIT
ELSE
WAIT WINDOW " ... CANCELANDO OPERACIN ... " TIME 1
GO RECORD NRE
ENDIF
ENDIF
ENDIF
ENDIF

82

THISFORM.REFRESH
COMMAND9.GOTFOCUS
THISFORM.TEXT1.VALUE=THIS.TOOLTIPTEXT
COMMAND9.CLICK
SET EXACT ON
SET ANSI ON
DO CASE
CASE EMPTY(THISFORM.TEXCOD.VALUE).OR.LEN(THISFORM.TEXCOD.VALUE)<5
WAIT WINDOW " ... INGRESO DE DATOS INCORRECTO ... " TIME 1
THISFORM.TEXCOD.SETFOCUS
CASE EMPTY(THISFORM.TEXTIT.VALUE)
WAIT WINDOW " ... INGRESO DE DATOS INCORRECTO ... " TIME 1
THISFORM.TEXTIT.SETFOCUS
CASE EMPTY(THISFORM.TEXTIP.VALUE)
WAIT WINDOW " ... INGRESO DE DATOS INCORRECTO ... " TIME 1
THISFORM.TEXTIP.SETFOCUS
CASE EMPTY(THISFORM.TEXAUT.VALUE).AND.OPC>1
WAIT WINDOW " ... INGRESO DE DATOS INCORRECTO ... " TIME 1
THISFORM.TEXAUT.SETFOCUS
CASE EMPTY(THISFORM.TEXDES.VALUE)
WAIT WINDOW " ... INGRESO DE DATOS INCORRECTO ... " TIME 1
THISFORM.TEXDES.SETFOCUS
CASE EMPTY(THISFORM.TEXCAR.VALUE)
WAIT WINDOW " ... INGRESO DE DATOS INCORRECTO ... " TIME 1
THISFORM.TEXCAR.SETFOCUS
CASE EMPTY(THISFORM.TEXDIS.VALUE)
WAIT WINDOW " ... INGRESO DE DATOS INCORRECTO ... " TIME 1
THISFORM.TEXDIS.SETFOCUS
OTHERWISE
COD=ALLT(THISFORM.TEXCOD.VALUE)
TIT=ALLT(THISFORM.TEXTIT.VALUE)
TIP=ALLT(THISFORM.TEXTIP.VALUE)
AUT=ALLT(THISFORM.TEXAUT.VALUE)
EDI=ALLT(THISFORM.TEXEDI.VALUE)
DES=ALLT(THISFORM.TEXDES.VALUE)
CAR=ALLT(THISFORM.TEXCAR.VALUE)
DIS=ALLT(THISFORM.TEXDIS.VALUE)
IF MESSAGEBOX (" ... GRABAR REGISTRO ... ",32+4," ... EDICIN DE DATOS ... ")=6
SELE LI_BR
SET DELETE OFF
DO CASE
CASE OPC=1
SEEK COD ORDER COD_LIB
IF FOUND()=.T.
WAIT WIND " ... CDIGO YA EXISTE ... " TIME 1
THISFORM.TEXCOD.SETFOCUS
ELSE
SELE LI_BR
APPEND BLANK
GO BOTTOM
R=RECNO()
REPLA LI_BR.COD_LIB WITH ALLT(COD)
REPLA LI_BR.TIT_LIB WITH ALLT(TIT)
REPLA LI_BR.TIP_LIB WITH ALLT(TIP)
REPLA LI_BR.AUT_LIB WITH ALLT(AUT)
REPLA LI_BR.EDI_LIB WITH ALLT(EDI)
REPLA LI_BR.DES_LIB WITH ALLT(DES)
REPLA LI_BR.CAR_LIB WITH ALLT(CAR)
REPLA LI_BR.DIS_LIB WITH ALLT(DIS)
WAIT WIND " GRABADO "+ALLT(STR(R))+" REGISTRO" TIME 1
SELE LI_BR
GO RECORD NRE
THISFORM.INIT
ENDIF
CASE OPC=2
SELE LI_BR
GO RECORD NRE
REPL LI_BR.COD_LIB WITH ALLT(COD)
REPL LI_BR.TIT_LIB WITH ALLT(TIT)
REPL LI_BR.TIP_LIB WITH ALLT(TIP)
REPL LI_BR.AUT_LIB WITH ALLT(AUT)
REPL LI_BR.EDI_LIB WITH ALLT(EDI)
REPL LI_BR.DES_LIB WITH ALLT(DES)
REPL LI_BR.CAR_LIB WITH ALLT(CAR)
REPL LI_BR.DIS_LIB WITH ALLT(DIS)
WAIT WIND " MODIFICADO "+ALLT(STR(NRE))+" REGISTRO" TIME 1
SELE LI_BR
THISFORM.INIT
ENDCASE
ELSE
THISFORM.TEXCOD.SETFOCUS
ENDIF
ENDCASE
COMMAND10.GOTFOCUS
THISFORM.TEXT1.VALUE=THIS.TOOLTIPTEXT
COMMAND10.CLICK
IF OPC=1.OR.OPC=2
SET ESCAPE OFF
SELE LI_BR
IF RECC()=0
THISFORM.INIT
WAIT WIND " ... CANCELANDO OPERACIN ... " TIME 1
SET ESCAPE OFF

83

ELSE
GO RECORD NRE
THISFORM.INIT
WAIT WIND " ... CANCELANDO OPERACIN ... " TIME 1
ENDIF
ENDIF
THISFORM.REFRESH
COMMAND11.GOTFOCUS
THISFORM.TEXT1.VALUE=THIS.TOOLTIPTEXT
COMMAND11.CLICK
RELEASE COD,TIT,TIP,AUT,EDI,DES,CAR,DIS,NRE,OPC,NOMC,TEXTO,VGRID,N,R,X,Y,NUM,XZ,Z,L
SET CENTURY ON
SET PATH TO "FO_RM,IC_ON,PR_OG,TA_BL,IN_FO"
DO ME_BI.MPR
THISFORMSET.RELEASE
COMMAND2.GOTFOCUS
THISFORM.TEXT1.VALUE=THIS.TOOLTIPTEXT
COMMAND2.CLICK
SELE LI_BR
IF NOT BOF()
SKIP-1
THISFORM.COMMAND4.ENABLED=.T.
THISFORM.COMMAND3.ENABLED=.T.
THISFORM.TEXT1.VALUE=ALLT(STR(RECN()))+" REGISTRO"
ENDIF
IF RECN()=1
THISFORM.COMMAND1.ENABLED=.F.
THISFORM.COMMAND2.ENABLED=.F.
THISFORM.TEXT1.VALUE=ALLT(STR(RECN()))+" REGISTRO"
ENDIF
THISFORM.REFRESH
COMMAND3.GOTFOCUS
THISFORM.TEXT1.VALUE=THIS.TOOLTIPTEXT
COMMAND3.CLICK
SELE LI_BR
IF.NOT.EOF()
SKIP +1
THISFORM.COMMAND1.ENABLED=.T.
THISFORM.COMMAND2.ENABLED=.T.
THISFORM.TEXT1.VALUE=ALLT(STR(RECNO()))+" REGISTRO"
ENDIF
IF RECNO()=RECCOUNT()
THISFORM.COMMAND3.ENABLED=.F.
THISFORM.COMMAND4.ENABLED=.F.
THISFORM.TEXT1.VALUE=ALLT(STR(RECNO()))+" REGISTRO"
ENDIF
THISFORM.REFRESH
COMMAND4.GOTFOCUS
THISFORM.TEXT1.VALUE=THIS.TOOLTIPTEXT
COMMAND4.CLICK
SELE LI_BR
GO BOTTOM
THISFORM.COMMAND3.ENABLED=.F.
THISFORM.COMMAND4.ENABLED=.F.
THISFORM.COMMAND2.ENABLED=.T.
THISFORM.COMMAND1.ENABLED=.T.
THISFORM.TEXT1.VALUE=ALLT(STR(RECNO()))+" REGISTRO"
THISFORM.REFRESH
TEXAUT.GOTFOCUS
THISFORM.TEXT1.VALUE=THIS.TOOLTIPTEXT
TEXAUT.KEYPRESS
LPARAMETERS nKeyCode, nShiftAltCtrl
IF LASTKEY()=13
IF EMPTY(THISFORM.TEXTIT.VALUE)
ELSE
THISFORM.TEXEDI.SETFOCUS
ENDIF
ENDIF
TEXEDI.GOTFOCUS
THISFORM.TEXT1.VALUE=THIS.TOOLTIPTEXT
TEXEDI.KEYPRESS
LPARAMETERS nKeyCode, nShiftAltCtrl
IF LASTKEY()=13
IF EMPTY(THISFORM.TEXTIT.VALUE)
ELSE
THISFORM.TEXDES.SETFOCUS
ENDIF

84

ENDIF
TEXDES.GOTFOCUS
THISFORM.TEXT1.VALUE=THIS.TOOLTIPTEXT
TEXDES.KEYPRESS
LPARAMETERS nKeyCode, nShiftAltCtrl
IF LASTKEY()=13
IF EMPTY(THISFORM.TEXDES.VALUE)
ELSE
THISFORM.TEXCAR.SETFOCUS
ENDIF
ENDIF
TEXDIS.GOTFOCUS
THISFORM.TEXT1.VALUE=THIS.TOOLTIPTEXT
TEXDIS.KEYPRESS
LPARAMETERS nKeyCode, nShiftAltCtrl
IF LASTKEY()=13
IF EMPTY(THISFORM.TEXDIS.VALUE)
ELSE
THISFORM.COMMAND9.SETFOCUS
ENDIF
ENDIF
TEXCAR.GOTFOCUS
THISFORM.TEXT1.VALUE=THIS.TOOLTIPTEXT
TEXCAR.KEYPRESS
LPARAMETERS nKeyCode, nShiftAltCtrl
IF LASTKEY()=13
IF EMPTY(THISFORM.TEXCAR.VALUE)
ELSE
THISFORM.TEXDIS.SETFOCUS
ENDIF
ENDIF
EN EL FORMULARIO 2
FORM2.INIT
SET PATH TO "FO_RM,IC_ON,PR_OG,TA_BL,IN_FO"
VGRID=THISFORM.GRID1
PUBLIC CLI
CLI=1
COMMAND3.GOTFOCUS
THISFORM.TEXT2.VALUE=THIS.TOOLTIPTEXT
COMMAND3.CLICK
THISFORM.COMBO1.VALUE=""
THISFORM.GRID1.RECORDSOURCE=""
SELE LI_BR
GO RECORD R
THISFORMSET.FORM2.HIDE
THISFORMSET.FORM2.ENABLED=.F.
THISFORMSET.FORM1.SHOW
THISFORMSET.FORM1.ENABLED=.T.
RELEASE CLI
TEXT1.GOTFOCUS
THISFORM.TEXT2.VALUE=THIS.TOOLTIPTEXT
TEXT1.KEYPRESS
LPARAMETERS nKeyCode, nShiftAltCtrl
IF LASTKEY()=13
SELE TEMP
IF RECCOUNT()=0
ELSE
SELE TEMP
GO TOP
VGRID.TABSTOP=.T.
VGRID.SETALL("ENABLED",.T.,"COLUMN")
DO CASE
CASE NOMC="COD_LIB"
VGRID.COLUMN1.TEXT1.SETFOCUS
CASE NOMC="TIT_LIB"
VGRID.COLUMN2.TEXT1.SETFOCUS
CASE NOMC="AUT_LIB"
VGRID.COLUMN4.TEXT1.SETFOCUS
ENDCASE
ENDIF
ENDIF
TEXT1.INTERACTIVECHANGE
SET EXACT ON
VGRID.RECORDSOURCE=""
VGRID.ENABLED=.T.
VGRID.SETALL("ENABLED",.F.,"COLUMN")
VGRID.TABSTOP=.F.

85

THISFORM.COMMAND2.ENABLED=.F.
IF LASTKEY()<>13
TEXTO=ALLT(THISFORM.TEXT1.VALUE)
N=LEN(TEXTO)
IF N=0
VGRID.RECORDSOURCE=""
VGRID.VISIBLE=.F.
ELSE
SELEC * FROM LI_BR WHERE ATLINE(TEXTO,UPPER(&NOMC))=1 INTO CURSOR TEMP
VGRID.RECORDSOURCE = "TEMP"
VGRID.VISIBLE=.T.
ENDIF
ENDIF
THISFORM.REFRESH
COMMAND1.GOTFOCUS
THISFORM.TEXT2.VALUE=THIS.TOOLTIPTEXT
COMMAND1.CLICK
NOMC=""
TEXTO=""
N=0
THISFORM.GRID1.RECORDSOURCE=""
THISFORM.COMBO1.VALUE=""
THISFORM.TEXT1.VALUE=""
THISFORM.TEXT1.ENABLED=.F.
THISFORM.COMBO1.ENABLED=.T.
THISFORM.COMBO1.SETFOCUS
COMMAND2.GOTFOCUS
THISFORM.TEXT2.VALUE=THIS.TOOLTIPTEXT
COMMAND2.CLICK
THISFORM.COMBO1.VALUE=""
THISFORMSET.FORM1.REFRESH
SELE LI_BR
GO RECORD NRE
THISFORMSET.FORM1.INIT
COMBO1.GOTFOCUS
THISFORM.TEXT2.VALUE=THIS.TOOLTIPTEXT
COMBO1.KEYPRESS
LPARAMETERS nKeyCode, nShiftAltCtrl
IF LASTKEY()=13
THISFORM.COMBO1.ENABLED=.F.
THISFORM.TEXT1.ENABLED=.T.
THISFORM.TEXT1.SETFOCUS
ENDIF
COMBO1.INTERACTIVECHANGE
SET EXACT ON
THISFORM.GRID1.ENABLED=.F.
DO CASE
CASE ALLT(THIS.VALUE)="CODIGO"
NOMC="COD_LIB"
CASE ALLT(THIS.VALUE)="TITULO"
NOMC="TIT_LIB"
CASE ALLT(THIS.VALUE)="AUTOR"
NOMC="AUT_LIB"
OTHERWISE
THISFORM.COMBO1.VALUE=""
THISFORM.REFRESH
ENDCASE
COMMAND4.GOTFOCUS
THISFORM.TEXT2.VALUE=THIS.TOOLTIPTEXT
COMMAND4.CLICK
THISFORM.COMBO1.VALUE=""
THISFORM.COMBO1.ENABLED=.F.
THISFORM.GRID1.RECORDSOURCE=""
SELECT * FROM LI_BR INTO CURSOR TEMP
THISFORM.GRID1.RECORDSOURCE="TEMP"
VGRID=THISFORM.GRID1
THISFORM.GRID1.ENABLED=.T.
THISFORM.GRID1.TABSTOP=.T.
VGRID.SETALL("ENABLED",.T.,"COLUMN")
THISFORM.GRID1.COLUMN1.TEXT1.SETFOCUS
COMMAND5.GOTFOCUS
THISFORM.TEXT2.VALUE=THIS.TOOLTIPTEXT
COMMAND5.CLICK
REPORT FORM LIBROS NOCONSOLE PREVIEW
GRID1.COLUMN1.TEXT1.GOTFOCUS
SELE TEMP
SELE LI_BR
SEEK TEMP.COD_LIB ORDER COD_LIB

86

IF FOUND()
NRE=RECNO()
THISFORM.TEXT2.VALUE=ALLT(STR(NRE))+" REGISTRO"
ENDIF
GRID1.COLUMN1.TEXT1.KEYPRESS
LPARAMETERS nKeyCode, nShiftAltCtrl
IF LASTKEY()=13
SELE LI_BR
NRE=RECNO()
THISFORM.COMMAND2.ENABLED=.T.
THISFORM.COMMAND2.SETFOCUS
ENDIF
GRID1.COLUMN2.TEXT1.GOTFOCUS
SELE TEMP
SELE LI_BR
SEEK TEMP.COD_LIB ORDER COD_LIB
IF FOUND()
NRE=RECNO()
THISFORM.TEXT2.VALUE=ALLT(STR(NRE))+" REGISTRO"
ENDIF
GRID1.COLUMN2.TEXT1.KEYPRESS
LPARAMETERS nKeyCode, nShiftAltCtrl
IF LASTKEY()=13
SELE LI_BR
NRE=RECNO()
THISFORM.COMMAND2.ENABLED=.T.
THISFORM.COMMAND2.SETFOCUS
ENDIF
GRID1.COLUMN3.TEXT1.GOTFOCUS
SELE TEMP
SELE LI_BR
SEEK TEMP.COD_LIB ORDER COD_LIB
IF FOUND()
NRE=RECNO()
THISFORM.TEXT2.VALUE=ALLT(STR(NRE))+" REGISTRO"
ENDIF
GRID1.COLUMN3.TEXT1.KEYPRESS
LPARAMETERS nKeyCode, nShiftAltCtrl
IF LASTKEY()=13
SELE LI_BR
NRE=RECNO()
THISFORM.COMMAND2.ENABLED=.T.
THISFORM.COMMAND2.SETFOCUS
ENDIF
GRID1.COLUMN1.TEXT4.GOTFOCUS
SELE TEMP
SELE LI_BR
SEEK TEMP.COD_LIB ORDER COD_LIB
IF FOUND()
NRE=RECNO()
THISFORM.TEXT2.VALUE=ALLT(STR(NRE))+" REGISTRO"
ENDIF
GRID1.COLUMN1.TEXT4.KEYPRESS
LPARAMETERS nKeyCode, nShiftAltCtrl
IF LASTKEY()=13
SELE LI_BR
NRE=RECNO()
THISFORM.COMMAND2.ENABLED=.T.
THISFORM.COMMAND2.SETFOCUS
ENDIF
GRID1.COLUMN1.TEXT5.GOTFOCUS
SELE TEMP
SELE LI_BR
SEEK TEMP.COD_LIB ORDER COD_LIB
IF FOUND()
NRE=RECNO()
THISFORM.TEXT2.VALUE=ALLT(STR(NRE))+" REGISTRO"
ENDIF
GRID1.COLUMN1.TEXT5.KEYPRESS
LPARAMETERS nKeyCode, nShiftAltCtrl
IF LASTKEY()=13
SELE LI_BR
NRE=RECNO()
THISFORM.COMMAND2.ENABLED=.T.
THISFORM.COMMAND2.SETFOCUS
ENDIF
GRID1.COLUMN1.TEXT6.GOTFOCUS
SELE TEMP
SELE LI_BR
SEEK TEMP.COD_LIB ORDER COD_LIB
IF FOUND()

87

NRE=RECNO()
THISFORM.TEXT2.VALUE=ALLT(STR(NRE))+" REGISTRO"
ENDIF
GRID1.COLUMN1.TEXT6.KEYPRESS
LPARAMETERS nKeyCode, nShiftAltCtrl
IF LASTKEY()=13
SELE LI_BR
NRE=RECNO()
THISFORM.COMMAND2.ENABLED=.T.
THISFORM.COMMAND2.SETFOCUS
ENDIF
GRID1.COLUMN1.TEXT7.GOTFOCUS
SELE TEMP
SELE LI_BR
SEEK TEMP.COD_LIB ORDER COD_LIB
IF FOUND()
NRE=RECNO()
THISFORM.TEXT2.VALUE=ALLT(STR(NRE))+" REGISTRO"
ENDIF
GRID1.COLUMN1.TEXT7.KEYPRESS
LPARAMETERS nKeyCode, nShiftAltCtrl
IF LASTKEY()=13
SELE LI_BR
NRE=RECNO()
THISFORM.COMMAND2.ENABLED=.T.
THISFORM.COMMAND2.SETFOCUS
ENDIF
GRID1.COLUMN1.TEXT8.GOTFOCUS
SELE TEMP
SELE LI_BR
SEEK TEMP.COD_LIB ORDER COD_LIB
IF FOUND()
NRE=RECNO()
THISFORM.TEXT2.VALUE=ALLT(STR(NRE))+" REGISTRO"
ENDIF
GRID1.COLUMN1.TEXT8.KEYPRESS
LPARAMETERS nKeyCode, nShiftAltCtrl
IF LASTKEY()=13
SELE LI_BR
NRE=RECNO()
THISFORM.COMMAND2.ENABLED=.T.
THISFORM.COMMAND2.SETFOCUS
ENDIF
CONJUNTO DE FORMULARIOS MANTENIMIENTO DE USUARIOS
EN EL PRIMER FORMULARIO
FORM1.INIT
SET SYSM TO
SET PATH TO "FO_RM,IC_ON,PR_OG,TA_BL,IN_FO"
SET DATE DMY
PUBLIC WCO,WAP,WOC,WTEX,NRE,OPC,X,NOMC,TEXTO,N,R,X,Y
WCO=""
WAP=""
WTEX=""
WOC=""
X=0
OPC=0
NOMC=""
TEXTO=""
NRE=0
N=0
R=0
THISFORMSET.FORM1.SHOW
THISFORMSET.FORM2.HIDE
THISFORMSET.FORM1.ENABLED=.T.
THISFORMSET.FORM2.ENABLED=.F.
THISFORM.CONTAINER1.VISIBLE=.T.
THISFORM.SPINNER1.VISIBLE=.T.
THISFORM.COMMAND12.VISIBLE=.T.
THISFORM.LABEL8.VISIBLE=.T.
THISFORM.SPINNER1.ENABLED=.T.
THISFORM.COMMAND12.ENABLED=.T.
THISFORM.COESPT.ENABLED=.T.
THISFORM.COESPC.ENABLED=.F.
THISFORM.COESPT.VISIBLE=.T.
THISFORM.COESPC.VISIBLE=.F.
SELE DA_EN
THISFORM.CONTAINER2.LABEL1.CAPTION=ALLT(DA_EN.NOM_ENT)
THISFORM.CONTAINER2.LABEL2.CAPTION=ALLT(DA_EN.DIR_ENT)
THISFORM.CONTAINER2.LABEL3.CAPTION=ALLT(DA_EN.DIS_ENT)+" - FONO : "+ALLT(DA_EN.TEL_ENT)
SELE CL_IE
THISFORM.SPINNER1.SPINNERHIGHVALUE=RECCOUNT()
THISFORM.TEXCO.CONTROLSOURCE="CL_IE.COCLI"
THISFORM.TEXAP.CONTROLSOURCE="CL_IE.APCLI"
THISFORM.COSEM.CONTROLSOURCE="CL_IE.OCCLI"
THISFORM.COESPT.CONTROLSOURCE="CL_IE.ESCLI"
THISFORM.COGRU.CONTROLSOURCE="CL_IE.GRCLI"
THISFORM.SETALL("ENABLED",.F.,"TEXTBOX")

88

THISFORM.SETALL("ENABLED",.F.,"COMBOBOX")
THISFORM.SETALL("ENABLED",.T.,"COMMANDBUTTON")
THISFORM.COMMAND9.ENABLED=.F.
THISFORM.COMMAND10.ENABLED=.F.
DO CASE
CASE RECNO()=RECCOUNT()
THISFORM.COMMAND3.ENABLED=.F.
THISFORM.COMMAND4.ENABLED=.F.
CASE RECCOUNT()=0.OR.RECCOUNT()=1
THISFORM.COMMAND1.ENABLED=.F.
THISFORM.COMMAND2.ENABLED=.F.
THISFORM.COMMAND3.ENABLED=.F.
THISFORM.COMMAND4.ENABLED=.F.
THISFORM.CONTAINER1.ENABLED=.F.
THISFORM.MENSAJE.VALUE=" 1 REGISTRO NO EXISTE O, NO EXISTE REGISTROS"
CASE RECNO()=1
THISFORM.COMMAND1.ENABLED=.F.
THISFORM.COMMAND2.ENABLED=.F.
THISFORM.MENSAJE.VALUE=ALLT(STR(RECNO()))+" REGISTRO"
OTHERWISE
NRE=RECNO()
THISFORM.MENSAJE.VALUE=ALLT(STR(NRE))+" REGISTRO"
ENDCASE
THISFORM.REFRESH
COMMAND5.CLICK
OPC=1
R=RECNO()
THISFORM.CONTAINER1.VISIBLE=.F.
THISFORM.SPINNER1.VISIBLE=.F.
THISFORM.COMMAND12.VISIBLE=.F.
THISFORM.LABEL8.VISIBLE=.F.
THISFORM.SPINNER1.ENABLED=.F.
THISFORM.COMMAND12.ENABLED=.F.
THISFORM.SETALL("CONTROLSOURCE","","TEXTBOX")
THISFORM.SETALL("CONTROLSOURCE","","COMBOBOX")
THISFORM.SETALL("VALUE","","TEXTBOX")
THISFORM.SETALL("VALUE","","COMBOBOX")
THISFORM.TEXCO.VALUE=WCO
THISFORM.TEXAP.VALUE=WAP
THISFORM.COSEM.VALUE=WOC
THISFORM.COESPT.ENABLED=.F.
THISFORM.COESPC.ENABLED=.T.
THISFORM.COESPT.VISIBLE=.F.
THISFORM.COESPC.VISIBLE=.T.
THISFORM.SETALL("ENABLED",.F.,"COMMANDBUTTON")
THISFORM.SETALL("ENABLED",.T.,"TEXTBOX")
THISFORM.SETALL("ENABLED",.T.,"COMBOBOX")
THISFORM.MENSAJE.VALUE=THIS.TOOLTIPTEXT
THISFORM.COMMAND9.ENABLED=.T.
THISFORM.COMMAND10.ENABLED=.T.
THISFORM.TEXAP.ENABLED=.T.
THISFORM.TEXAP.SETFOCUS
THISFORM.REFRESH
COMMAND6.CLICK
SELE CL_IE
THISFORM.CONTAINER1.VISIBLE=.F.
THISFORM.SPINNER1.VISIBLE=.F.
THISFORM.COMMAND12.VISIBLE=.F.
THISFORM.LABEL8.VISIBLE=.F.
THISFORM.SPINNER1.ENABLED=.F.
THISFORM.COMMAND12.ENABLED=.F.
OPC=2
R=RECN()
THISFORM.SETALL("ENABLED",.F.,"COMMANDBUTTON")
THISFORM.SETALL("ENABLED",.T.,"TEXTBOX")
THISFORM.SETALL("ENABLED",.T.,"COMBOBOX")
WCO=SUBS(ALLT(CL_IE.COCLI),1)
WAP=SUBS(ALLT(CL_IE.APCLI),1)
WOC=SUBS(ALLT(CL_IE.OCCLI),1)
THISFORM.SETALL("CONTROLSOURCE","","TEXTBOX")
THISFORM.TEXCO.VALUE=WCO
THISFORM.TEXAP.VALUE=WAP
THISFORM.COSEM.VALUE=WOC
THISFORM.COESPT.ENABLED=.F.
THISFORM.COESPC.ENABLED=.T.
THISFORM.COESPT.VISIBLE=.F.
THISFORM.COESPC.VISIBLE=.T.
THISFORM.MENSAJE.VALUE=THIS.TOOLTIPTEXT
THISFORM.COMMAND9.ENABLED=.T.
THISFORM.COMMAND10.ENABLED=.T.
THISFORM.TEXAP.ENABLED=.T.
THISFORM.TEXAP.SETFOCUS
THISFORM.REFRESH
COMMAND7.CLICK
SELEC CL_IE
IF RECCOUNT()=0
ELSE
R=RECNO()
THISFORMSET.FORM1.HIDE
THISFORMSET.FORM1.ENABLED=.F.
THISFORMSET.FORM2.ENABLED=.T.
THISFORMSET.FORM2.SHOW
THISFORMSET.FORM2.COMBO1.ENABLED=.T.
THISFORMSET.FORM2.TEXT1.VALUE=""
THISFORMSET.FORM2.TEXT1.ENABLED=.F.
THISFORMSET.FORM2.GRID1.ENABLED=.F.

89

THISFORMSET.FORM2.COMMAND2.ENABLED=.F.
THISFORMSET.FORM2.GRID1.RECORDSOURCE=""
THISFORMSET.FORM2.GRID1.RECORDSOURCE="TEMVI1"
THISFORMSET.FORM2.COMBO1.SETFOCUS
ENDIF
THISFORM.REFRESH
COMMAND8.CLICK
SELE CL_IE
NRE=RECN()
THISFORM.MENSAJE.VALUE=" ... ELIMINAR "+ALLT(STR(NRE))+" REGISTRO ... "
IF RECCOUNT()=0
ELSE
IF RECC()>0
IF MESSAGEBOX(" DESEA ELIMINAR REGISTRO? ",4+32,"USUARIOS DE BIBLIOTECA "+DA_EN.NOM_ENT)=6
DELE
WAIT WIND " ... REGISTRO "+ALLT(STR(NRE))+" ELIMINADO ... " TIME 1
THISFORM.INIT
ELSE
WAIT WIND " ... CANCELANDO OPERACIN ... " TIME 1
THISFORM.MENSAJE.VALUE=ALLT(STR(NRE))+" REGISTRO ... "
GO RECO NRE
ENDIF
ENDIF
ENDIF
THISFORM.REFRESH
COMMAND9.CLICK
WAP=THISFORM.TEXAP.VALUE
WCO=THISFORM.TEXCO.VALUE
WCOSE=THISFORM.COSEM.VALUE
WCOES=THISFORM.COESPC.VALUE
DO CASE
CASE THISFORM.COSEM.VALUE="DOCENTE".AND.THISFORM.COESP.VALUE=""
WAIT WINDOW " ... INGRESO DE DATOS INCORRECTO ... " TIME 1
THISFORM.COESPC.SETFOCUS
CASE EMPTY(THISFORM.TEXAP.VALUE)
WAIT WINDOW " ... INGRESO DE DATOS INCORRECTO ... " TIME 1
THISFORM.TEXAP.SETFOCUS
CASE THISFORM.COSEM.VALUE=""
WAIT WINDOW " ... INGRESO DE DATOS INCORRECTO ... " TIME 1
THISFORM.COSEM.SETFOCUS
CASE EMPTY(THISFORM.TEXCO.VALUE)
WAIT WINDOW " ... INGRESO DE DATOS INCORRECTO ... " TIME 1
THISFORM.TEXCO.SETFOCUS
OTHERWISE
SELE CL_IE
GO TOP
DO CASE
CASE OPC=1
SELE CL_IE
LOCATE FOR ALLT(CL_IE.COCLI)=THISFORM.TEXCO.VALUE
IF FOUND()
WAIT WIND " ... CDIGO YA EXISTE ... " TIME 1
THISFORM.TEXCO.SETFOCUS
ELSE
APPE BLAN
R=RECNO()
REPL CL_IE.FICLI WITH DATE()
REPL CL_IE.APCLI WITH THISFORM.TEXAP.VALUE
REPL CL_IE.COCLI WITH THISFORM.TEXCO.VALUE
REPL CL_IE.ESCLI WITH WCOES
REPL CL_IE.GRCLI WITH THISFORM.COGRU.VALUE
DO CASE
CASE ALLT(THISFORM.COSEM.VALUE)="PERS.ADM./SERV."
REPL CL_IE.OCCLI WITH "PERS.ADM./SERV."
REPL CL_IE.SECLI WITH WCOSE
CASE ALLT(THISFORM.COSEM.VALUE)="DOCENTE"
REPL CL_IE.OCCLI WITH "DOCENTE"
REPL CL_IE.SECLI WITH WCOSE
CASE ALLT(THISFORM.COSEM.VALUE)<>"DOCENTE".OR.ALLT(THISFORM.COSEM.VALUE)<>"PERS.ADM./SERV."
REPL CL_IE.OCCLI WITH "ALUMNO"
REPL CL_IE.SECLI WITH WCOSE
ENDCASE
WAIT WIND " ... GRABANDO EN EL "+ALLT(STR(R))+" REGISTRO" TIME 1
THISFORM.MENSAJE.VALUE=ALLT(STR(R))+" REGISTRO ... "
THISFORM.INIT
ENDIF
CASE OPC=2
SELE CL_IE
GO TOP
LOCATE FOR ALLT(CL_IE.COCLI)=WCO
NRE=RECNO()
IF ALLT(CL_IE.COCLI)=WCO
WAIT WIND " ... CDIGO YA EXISTE ... " TIME 1
IF MESSAGEBOX ("...SEGURO(A) QUE EL CDIGO NO SE REPITE?...",4+32,".... CDIGO LOCALIZADO !!! ....")=6
GO RECORD NRE
REPLA CL_IE.FICLI WITH DATE()
REPLA CL_IE.APCLI WITH THISFORM.TEXAP.VALUE
REPLA CL_IE.COCLI WITH THISFORM.TEXCO.VALUE
REPLA CL_IE.ESCLI WITH WCOES
REPLA CL_IE.GRCLI WITH THISFORM.COGRU.VALUE
DO CASE
CASE ALLT(THISFORM.COSEM.VALUE)="PERS.ADM./SERV."
REPLA CL_IE.OCCLI WITH "PERS.ADM./SERV."
REPLA CL_IE.SECLI WITH WCOSE
CASE ALLT(THISFORM.COSEM.VALUE)="DOCENTE"
REPLA CL_IE.OCCLI WITH "DOCENTE"
REPLA CL_IE.SECLI WITH WCOSE

90

CASE ALLT(THISFORM.COSEM.VALUE)<>"DOCENTE".OR.ALLT(THISFORM.COSEM.VALUE)<>"PERS.ADM./SERV."
REPLA CL_IE.OCCLI WITH "ALUMNO"
REPLA CL_IE.SECLI WITH WCOSE
ENDCASE
WAIT WIND " ... MODIFICADO "+ALLT(STR(R))+" REGISTRO" TIME 1
THISFORM.MENSAJE.VALUE=ALLT(STR(R))+" REGISTRO ... "
THISFORM.INIT
ELSE
THISFORM.TEXCO.SETFOCUS
ENDIF
ELSE
GO RECORD R
REPL CL_IE.FICLI WITH DATE()
REPL CL_IE.APCLI WITH THISFORM.TEXAP.VALUE
REPL CL_IE.COCLI WITH THISFORM.TEXCO.VALUE
REPL CL_IE.ESCLI WITH WCOES
REPL CL_IE.GRCLI WITH THISFORM.COGRU.VALUE
DO CASE
CASE ALLT(THISFORM.COSEM.VALUE)="PERS.ADM./SERV."
REPL CL_IE.OCCLI WITH "PERS.ADM./SERV."
REPL CL_IE.SECLI WITH WCOSE
CASE ALLT(THISFORM.COSEM.VALUE)="DOCENTE"
REPL CL_IE.OCCLI WITH "DOCENTE"
REPL CL_IE.SECLI WITH WCOSE
CASE ALLT(THISFORM.COSEM.VALUE)<>"DOCENTE".OR.ALLT(THISFORM.COSEM.VALUE)<>"PERS.ADM./SERV."
REPL CL_IE.OCCLI WITH "ALUMNO"
REPL CL_IE.SECLI WITH WCOSE
ENDCASE
WAIT WIND " MODIFICADO "+ALLT(STR(R))+" REGISTRO" TIME 1
THISFORM.MENSAJE.VALUE=ALLT(STR(R))+" REGISTRO ... "
THISFORM.INIT
ENDIF
ENDCASE
ENDCASE
THISFORM.REFRESH
COMMAND10.CLICK
THISFORM.REFRESH
THISFORM.INIT
WAIT WIND " ... CANCELANDO OPERACIN ... " TIME 1
COMMAND10.CLICK
RELEASE WCODA,WEPRA,WNOAR,WUNIA,WFINA,WCANA,NRE,OPC, NR
SET PATH TO "FO_RM,IC_ON,PR_OG,TA_BL,IN_FO"
DO ME_BI.MPR
THISFORMSET.RELEASE
COMMAND1.CLICK
SELE CL_IE
GO TOP
THISFORM.COMMAND1.ENABLED=.F.
THISFORM.COMMAND2.ENABLED=.F.
THISFORM.COMMAND3.ENABLED=.T.
THISFORM.COMMAND4.ENABLED=.T.
THISFORM.MENSAJE.VALUE=ALLT(STR(RECNO()))+" REGISTRO"
THISFORM.REFRESH
COMMAND2.CLICK
SELE CL_IE
IF NOT BOF()
SKIP-1
THISFORM.COMMAND4.ENABLED=.T.
THISFORM.COMMAND3.ENABLED=.T.
ENDIF
IF RECN()=1
THISFORM.COMMAND1.ENABLED=.F.
THISFORM.COMMAND2.ENABLED=.F.
ENDIF
THISFORM.MENSAJE.VALUE=ALLT(STR(RECNO()))+" REGISTRO"
THISFORM.REFRESH
COMMAND3.CLICK
SELE CL_IE
IF.NOT.EOF()
SKIP +1
THISFORM.COMMAND1.ENABLED=.T.
THISFORM.COMMAND2.ENABLED=.T.
ENDIF
IF RECNO()=RECCOUNT()
THISFORM.COMMAND3.ENABLED=.F.
THISFORM.COMMAND4.ENABLED=.F.
ENDIF
THISFORM.MENSAJE.VALUE=ALLT(STR(RECNO()))+" REGISTRO"
THISFORM.REFRESH
COMMAND4.CLICK
SELE CL_IE
GO BOTTOM
THISFORM.COMMAND3.ENABLED=.F.
THISFORM.COMMAND4.ENABLED=.F.
THISFORM.COMMAND2.ENABLED=.T.
THISFORM.COMMAND1.ENABLED=.T.
THISFORM.MENSAJE.VALUE=ALLT(STR(RECNO()))+" REGISTRO"
THISFORM.REFRESH
COSEM.LOSTFOCUS

91

SET EXACT ON
WCOSEM=THISFORM.COSEM.VALUE
IF LASTKEY()=13
DO CASE
CASE ALLT(THIS.VALUE)="I"
IF MESSAGEBOX("... INGRESAR GRUPO ?...",4+32," BIBLIOTECA "+DA_EN.NOM_ENT)=6
THISFORM.COGRU.ENABLED=.T.
ELSE
THISFORM.COGRU.VALUE="*"
THISFORM.TEXCO.SETFOCUS
ENDIF
CASE ALLT(THIS.VALUE)="II"
IF MESSAGEBOX("... INGRESAR GRUPO ?...",4+32," BIBLIOTECA "+DA_EN.NOM_ENT)=6
THISFORM.COGRU.ENABLED=.T.
ELSE
THISFORM.COGRU.VALUE="*"
THISFORM.TEXCO.SETFOCUS
ENDIF
CASE ALLT(THIS.VALUE)="III"
IF MESSAGEBOX("... INGRESAR GRUPO ?...",4+32," BIBLIOTECA "+DA_EN.NOM_ENT)=6
THISFORM.COGRU.ENABLED=.T.
ELSE
THISFORM.COGRU.VALUE="*"
THISFORM.TEXCO.SETFOCUS
ENDIF
CASE ALLT(THIS.VALUE)="IV"
IF MESSAGEBOX("... INGRESAR GRUPO ?...",4+32," BIBLIOTECA "+DA_EN.NOM_ENT)=6
THISFORM.COGRU.ENABLED=.T.
ELSE
THISFORM.COGRU.VALUE="*"
THISFORM.TEXCO.SETFOCUS
ENDIF
CASE ALLT(THIS.VALUE)="V"
IF MESSAGEBOX("... INGRESAR GRUPO ?...",4+32," BIBLIOTECA "+DA_EN.NOM_ENT)=6
THISFORM.COGRU.ENABLED=.T.
ELSE
THISFORM.COGRU.VALUE="*"
THISFORM.TEXCO.SETFOCUS
ENDIF
CASE ALLT(THIS.VALUE)="VI"
IF MESSAGEBOX("... INGRESAR GRUPO ?...",4+32," BIBLIOTECA "+DA_EN.NOM_ENT)=6
THISFORM.COGRU.ENABLED=.T.
ELSE
THISFORM.COGRU.VALUE="*"
THISFORM.TEXCO.SETFOCUS
ENDIF
CASE ALLT(THIS.VALUE)="VII"
IF MESSAGEBOX("... INGRESAR GRUPO ?...",4+32," BIBLIOTECA "+DA_EN.NOM_ENT)=6
THISFORM.COGRU.ENABLED=.T.
ELSE
THISFORM.COGRU.VALUE="*"
THISFORM.TEXCO.SETFOCUS
ENDIF
CASE ALLT(THIS.VALUE)="VIII"
IF MESSAGEBOX("... INGRESAR GRUPO ?...",4+32," BIBLIOTECA "+DA_EN.NOM_ENT)=6
THISFORM.COGRU.ENABLED=.T.
ELSE
THISFORM.COGRU.VALUE="*"
THISFORM.TEXCO.SETFOCUS
ENDIF
CASE ALLT(THIS.VALUE)="IX"
IF MESSAGEBOX("... INGRESAR GRUPO ?...",4+32," BIBLIOTECA "+DA_EN.NOM_ENT)=6
THISFORM.COGRU.ENABLED=.T.
ELSE
THISFORM.COGRU.VALUE="*"
THISFORM.TEXCO.SETFOCUS
ENDIF
CASE ALLT(THIS.VALUE)="X"
IF MESSAGEBOX("... INGRESAR GRUPO ?...",4+32," BIBLIOTECA "+DA_EN.NOM_ENT)=6
THISFORM.COGRU.ENABLED=.T.
ELSE
THISFORM.COGRU.VALUE="*"
THISFORM.TEXCO.SETFOCUS
ENDIF
CASE ALLT(THIS.VALUE)="DOCENTE"
THISFORM.COGRU.VALUE="*"
THISFORM.TEXCO.SETFOCUS
CASE ALLT(THIS.VALUE)="PERS.ADM./SERV."
THISFORM.COGRU.VALUE="*"
THISFORM.COESP.VALUE="*"
THISFORM.TEXCO.SETFOCUS
ENDCASE
ENDIF
COGRU.LOSTFOCUS
SET EXACT ON
WCOGRU=THISFORM.COGRU.VALUE
IF LASTKEY()=13
DO CASE
CASE ALLT(THIS.VALUE)="*"
THISFORM.TEXCO.ENABLED=.T.
CASE ALLT(THIS.VALUE)="A"
THISFORM.TEXCO.ENABLED=.T.
CASE ALLT(THIS.VALUE)="B"
THISFORM.TEXCO.ENABLED=.T.
CASE ALLT(THIS.VALUE)="C"
THISFORM.TEXCO.ENABLED=.T.
CASE ALLT(THIS.VALUE)="D"
THISFORM.TEXCO.ENABLED=.T.

92

CASE ALLT(THIS.VALUE)="E"
THISFORM.TEXCO.ENABLED=.T.
ENDCASE
ENDIF
COESPC.KEYPRESS
LPARAMETERS nKeyCode, nShiftAltCtrl
IF LASTKEY()<>13
*
THISFORM.COESP.ROWSOURCETYPE=6
*
THISFORM.COESP.RECORDSOURCE="ESPE.NOESP"
ELSE
THISFORM.COSEM.ENABLED=.T.
ENDIF
TEXCO.KEYPRESS
LPARAMETERS nKeyCode, nShiftAltCtrl
IF LASTKEY()<>13
THISFORM.TEXCO.ENABLED=.T.
ELSE
IF EMPTY(THISFORM.TEXCO.VALUE)
ELSE
DO CASE
CASE LEN(ALLT(THISFORM.TEXCO.VALUE))<=5
WAIT WIND "... INGRESE BIEN EL CODIGO ..." TIME 1
*THISFORM.TEXCO.SETFOCUS
THISFORM.TEXCO.ENABLED=.T.
CASE LEN(ALLT(THISFORM.TEXCO.VALUE))=7
WAIT WIND "... INGRESE BIEN EL CODIGO ..." TIME 1
*THISFORM.TEXCO.SETFOCUS
THISFORM.TEXCO.ENABLED=.T.
CASE LEN(ALLT(THISFORM.TEXCO.VALUE))=6.AND.(THISFORM.COSEM.VALUE="DOCENTE")
WAIT WIND "... INGRESE BIEN EL CODIGO ..." TIME 1
*THISFORM.TEXCO.SETFOCUS
THISFORM.TEXCO.ENABLED=.T.
CASE LEN(ALLT(THISFORM.TEXCO.VALUE))=6.AND.(THISFORM.COSEM.VALUE="PERS. ADM./ SERV.")
WAIT WIND "... INGRESE BIEN EL CODIGO ..." TIME 1
*THISFORM.TEXCO.SETFOCUS
THISFORM.TEXCO.ENABLED=.T.
CASE (LEN(ALLT(THISFORM.TEXCO.VALUE))=8).AND.(THISFORM.COSEM.VALUE="I")
WAIT WIND "... INGRESE BIEN EL CODIGO ..." TIME 1
*THISFORM.TEXCO.SETFOCUS
THISFORM.TEXCO.ENABLED=.T.
CASE (LEN(ALLT(THISFORM.TEXCO.VALUE))=8).AND.(THISFORM.COSEM.VALUE="II")
WAIT WIND "... INGRESE BIEN EL CODIGO ..." TIME 1
*THISFORM.TEXCO.SETFOCUS
THISFORM.TEXCO.ENABLED=.T.
CASE (LEN(ALLT(THISFORM.TEXCO.VALUE))=8).AND.(THISFORM.COSEM.VALUE="III")
WAIT WIND "... INGRESE BIEN EL CODIGO ..." TIME 1
*THISFORM.TEXCO.SETFOCUS
THISFORM.TEXCO.ENABLED=.T.
CASE (LEN(ALLT(THISFORM.TEXCO.VALUE))=8).AND.(THISFORM.COSEM.VALUE="IV")
WAIT WIND "... INGRESE BIEN EL CODIGO ..." TIME 1
*THISFORM.TEXCO.SETFOCUS
THISFORM.TEXCO.ENABLED=.T.
CASE (LEN(ALLT(THISFORM.TEXCO.VALUE))=8).AND.(THISFORM.COSEM.VALUE="V")
WAIT WIND "... INGRESE BIEN EL CODIGO ..." TIME 1
*THISFORM.TEXCO.SETFOCUS
THISFORM.TEXCO.ENABLED=.T.
CASE (LEN(ALLT(THISFORM.TEXCO.VALUE))=8).AND.(THISFORM.COSEM.VALUE="VI")
WAIT WIND "... INGRESE BIEN EL CODIGO ..." TIME 1
*THISFORM.TEXCO.SETFOCUS
THISFORM.TEXCO.ENABLED=.T.
CASE LEN(ALLT(THISFORM.TEXCO.VALUE))>=9
WAIT WIND "... INGRESE BIEN EL CODIGO ..." TIME 1
*THISFORM.TEXCO.SETFOCUS
THISFORM.TEXCO.ENABLED=.T.
OTHERWISE
WCO=ALLT(THISFORM.TEXCO.VALUE)
SELE CLIENT
GO TOP
LOCATE FOR (ALLT(CLIENT.COCLI)=ALLT(WCO)).AND.(ALLT(CLIENT.SECLI)=ALLT(THISFORM.COSEM.VALUE))
IF FOUND()
IF MESSAGEBOX ("... DESEA VOLVER A ESCRIBIR EL CODIGO ?...",4+32,".... CDIGO LOCALIZADO !!! ....")=6
THISFORM.TEXCO.ENABLED=.T.
ELSE
THISFORM.COMMAND9.CLICK
ENDIF
ELSE
THISFORM.COMMAND9.CLICK
ENDIF
ENDCASE
ENDIF
ENDIF
TEXAP.LOSTFOCUS
IF LASTKEY()<>13
ELSE
IF EMPTY(THISFORM.TEXAP.VALUE)
ELSE
WAP=ALLT(THISFORM.TEXAP.VALUE)
THISFORM.COESPC.ENABLED=.T.
ENDIF
ENDIF
SPINNER1.LOSTFOCUS
SELE CL_IE
IF THISFORM.SPINNER1.VALUE<=0.OR.THISFORM.SPINNER1.VALUE>RECC()

93

WAIT WIND " ... INGRESO INCORRECTO ... " TIME 1


THISFORM.SPINNER1.VALUE=1
X=THISFORM.SPINNER1.VALUE
ELSE
X=THISFORM.SPINNER1.VALUE
ENDIF
COMMAND12.CLICK
SELEC CL_IE
Y=RECCOUNT()
GO RECORD X
THISFORM.TEXCO.CONTROLSOURCE="CL_IE.COCLI"
THISFORM.TEXAP.CONTROLSOURCE="CL_IE.APCLI"
THISFORM.COSEM.CONTROLSOURCE="CL_IE.OCCLI"
THISFORM.COESPT.CONTROLSOURCE="CL_IE.ESCLI"
THISFORM.COGRU.CONTROLSOURCE="CL_IE.GRCLI"
THISFORM.MENSAJE.VALUE=ALLT(STR(X))+" REGISTRO "
THISFORM.SPINNER1.VALUE=1
IF X=1
THISFORM.COMMAND1.ENABLED=.F.
THISFORM.COMMAND2.ENABLED=.F.
THISFORM.COMMAND3.ENABLED=.T.
THISFORM.COMMAND4.ENABLED=.T.
ELSE
IF X=Y
THISFORM.COMMAND1.ENABLED=.T.
THISFORM.COMMAND2.ENABLED=.T.
THISFORM.COMMAND3.ENABLED=.F.
THISFORM.COMMAND4.ENABLED=.F.
ELSE
THISFORM.COMMAND1.ENABLED=.T.
THISFORM.COMMAND2.ENABLED=.T.
THISFORM.COMMAND3.ENABLED=.T.
THISFORM.COMMAND4.ENABLED=.T.
ENDIF
ENDIF
THISFORM.SPINNER1.VALUE=X

EN EL FORMULARIO 2
FORM2.INIT
THISFORM.COMBO1.ENABLED=.T.
THISFORM.TEXT1.ENABLED=.F.
VGRID=THISFORM.GRID1
THISFORM.MENSAJE.VISIBLE=.F
GRID1.COLUMN1.TEXT1.GOTFOCUS
SELE TEMVI1
SELE CL_IE
LOCATE FOR TEMVI1.COCLI=CL_IE.COCLI
IF FOUND()
R=RECNO()
THISFORM.MENSAJE.VISIBLE=.T.
THISFORM.MENSAJE.VALUE=ALLT(STR(R))+" REGISTRO"
ENDIF
GRID1.COLUMN1.TEXT1.KEYPRESS
LPARAMETERS nKeyCode, nShiftAltCtrl
IF LASTKEY()=13
SELE CL_IE
NRE=RECNO()
THISFORM.COMMAND2.ENABLED=.T.
THISFORM.COMMAND2.SETFOCUS
ENDIF
GRID1.COLUMN2.TEXT1.GOTFOCUS
SELE TEMVI1
SELE CL_IE
LOCATE FOR TEMVI1.COCLI=CL_IE.COCLI
IF FOUND()
R=RECNO()
THISFORM.MENSAJE.VISIBLE=.T.
THISFORM.MENSAJE.VALUE=ALLT(STR(R))+" REGISTRO"
ENDIF
GRID1.COLUMN2.TEXT1.KEYPRESS
LPARAMETERS nKeyCode, nShiftAltCtrl
IF LASTKEY()=13
SELE CL_IE
NRE=RECNO()
THISFORM.COMMAND2.ENABLED=.T.
THISFORM.COMMAND2.SETFOCUS
ENDIF
GRID1.COLUMN1.TEXT3.GOTFOCUS
SELE TEMVI1
SELE CL_IE
LOCATE FOR TEMVI1.COCLI=CL_IE.COCLI
IF FOUND()
R=RECNO()
THISFORM.MENSAJE.VISIBLE=.T.
THISFORM.MENSAJE.VALUE=ALLT(STR(R))+" REGISTRO"

94

ENDIF
GRID1.COLUMN1.TEXT3.KEYPRESS
LPARAMETERS nKeyCode, nShiftAltCtrl
IF LASTKEY()=13
SELE CL_IE
NRE=RECNO()
THISFORM.COMMAND2.ENABLED=.T.
THISFORM.COMMAND2.SETFOCUS
ENDIF
GRID1.COLUMN1.TEXT4.GOTFOCUS
SELE TEMVI1
SELE CL_IE
LOCATE FOR TEMVI1.COCLI=CL_IE.COCLI
IF FOUND()
R=RECNO()
THISFORM.MENSAJE.VISIBLE=.T.
THISFORM.MENSAJE.VALUE=ALLT(STR(R))+" REGISTRO"
ENDIF
GRID1.COLUMN1.TEXT4.KEYPRESS
LPARAMETERS nKeyCode, nShiftAltCtrl
IF LASTKEY()=13
SELE CL_IE
NRE=RECNO()
THISFORM.COMMAND2.ENABLED=.T.
THISFORM.COMMAND2.SETFOCUS
ENDIF
GRID1.COLUMN1.TEXT5.GOTFOCUS
SELE TEMVI1
SELE CL_IE
LOCATE FOR TEMVI1.COCLI=CL_IE.COCLI
IF FOUND()
R=RECNO()
THISFORM.MENSAJE.VISIBLE=.T.
THISFORM.MENSAJE.VALUE=ALLT(STR(R))+" REGISTRO"
ENDIF
GRID1.COLUMN1.TEXT5.KEYPRESS
LPARAMETERS nKeyCode, nShiftAltCtrl
IF LASTKEY()=13
SELE CL_IE
NRE=RECNO()
THISFORM.COMMAND2.ENABLED=.T.
THISFORM.COMMAND2.SETFOCUS
ENDIF
COMBO1.GOTFOCUS
THISFORM.MENSAJE.VALUE=THIS.TOOLTIPTEXT
COMBO1.INTERACTIVECHANGE
SET EXACT ON
THISFORM.GRID1.ENABLED=.F.
DO CASE
CASE ALLT(THIS.VALUE)="CODIGO"
NOMC="COCLI"
CASE ALLT(THIS.VALUE)="APELLIDOS Y NOMBRES"
NOMC="APCLI"
CASE ALLT(THIS.VALUE)="ESPECIALIDAD"
NOMC="ESCLI"
CASE ALLT(THIS.VALUE)="SEMESTRE"
NOMC="SECLI"
OTHERWISE
THISFORM.COMBO1.VALUE=""
THISFORM.REFRESH
ENDCASE
COMBO1.KEYPRESS
LPARAMETERS nKeyCode, nShiftAltCtrl
IF THIS.VALUE=""
ELSE
IF LASTKEY()=13
THISFORM.COMBO1.ENABLED=.F.
THISFORM.TEXT1.ENABLED=.T.
ENDIF
ENDIF
TEXT1.GOTFOCUS
THISFORM.MENSAJE.VALUE=THIS.TOOLTIPTEXT
TEXT1.INTERACTIVECHANGE
THISFORM.GRID1.RECORDSOURCE=""
VGRID=THISFORM.GRID1
THISFORM.GRID1.ENABLED=.T.
VGRID.SETALL("ENABLED",.F.,"COLUMN")
THISFORM.GRID1.TABSTOP=.F.
THISFORM.COMMAND2.ENABLED=.F.
IF LASTKEY()<>13
TEXTO=ALLT(THISFORM.TEXT1.VALUE)

95

N=LEN(TEXTO)
IF N=0
THISFORM.GRID1.RECORDSOURCE=""
ELSE
SELEC COCLI,APCLI,ESCLI,SECLI,FICLI FROM CL_IE WHERE ATLINE(TEXTO,CL_IE.&NOMC)=1 INTO CURSOR TEMVI1
THISFORM.GRID1.RECORDSOURCE="TEMVI1"
ENDIF
ENDIF
THISFORM.REFRESH
TEXT1.KEYPRESS
LPARAMETERS nKeyCode, nShiftAltCtrl
IF LASTKEY()=13
SELE TEMVI1
IF RECC()=0
ELSE
SELE TEMVI1
GO TOP
THISFORM.GRID1.TABSTOP=.T.
THISFORM.GRID1.SETALL("ENABLED",.T.,"COLUMN")
DO CASE
CASE NOMC="COCLI"
THISFORM.GRID1.COLUMN1.TEXT1.SETFOCUS
CASE NOMC="NOCLI"
THISFORM.GRID1.COLUMN2.TEXT1.SETFOCUS
CASE NOMC="ESCLI"
THISFORM.GRID1.COLUMN3.TEXT1.SETFOCUS
CASE NOMC="SECLI"
THISFORM.GRID1.COLUMN4.TEXT1.SETFOCUS
ENDCASE
ENDIF
ENDIF
COMMAND3.GOTFOCUS
THISFORM.MENSAJE.VALUE=THIS.TOOLTIPTEXT
COMMAND3.CLICK
THISFORM.COMBO1.VALUE=""
THISFORM.GRID1.RECORDSOURCE=""
SELE CL_IE
GO RECORD R
THISFORMSET.FORM2.HIDE
THISFORMSET.FORM2.ENABLED=.F.
THISFORMSET.FORM1.SHOW
THISFORMSET.FORM1.ENABLED=.T.
COMMAND1.GOTFOCUS
THISFORM.MENSAJE.VALUE=THIS.TOOLTIPTEXT
COMMAND1.CLICK
NOMC=""
TEXTO=""
N=0
THISFORM.MENSAJE.VISIBLE=.F.
THISFORM.GRID1.RECORDSOURCE=""
THISFORM.COMBO1.VALUE=""
THISFORM.TEXT1.VALUE=""
THISFORM.TEXT1.ENABLED=.F.
THISFORM.COMBO1.ENABLED=.T.
THISFORM.COMBO1.SETFOCUS
COMMAND2.GOTFOCUS
THISFORM.MENSAJE.VALUE=THIS.TOOLTIPTEXT
COMMAND2.CLICK
THISFORM.COMBO1.VALUE=""
THISFORMSET.FORM1.REFRESH
SELE CL_IE
GO RECORD R
THISFORMSET.FORM1.INIT
COMMAND4.GOTFOCUS
THISFORM.MENSAJE.VALUE=THIS.TOOLTIPTEXT
COMMAND4.CLICK
THISFORM.COMBO1.VALUE=""
THISFORM.COMBO1.ENABLED=.F.
THISFORM.GRID1.RECORDSOURCE=""
SELE COCLI,APCLI,ESCLI,SECLI,FICLI, .T. FROM CL_IE INTO CURSOR TEMVI1
THISFORM.GRID1.RECORDSOURCE="TEMVI1"
VGRID=THISFORM.GRID1
THISFORM.GRID1.ENABLED=.T.
THISFORM.GRID1.TABSTOP=.T.
VGRID.SETALL("ENABLED",.T.,"COLUMN")
THISFORM.GRID1.COLUMN1.TEXT1.SETFOCUS
CONJUNTO DE FORMULARIOS MODIFICACIN DE PASSWORD
EN EL FORMULARIO 1
FORM1.INIT

96

SET TALK OFF


SET SYSM TO
SET PATH TO "FO_RM,IC_ON,PR_OG,TA_BL,IN_FO"
SET STAT OFF
SET SAFE OFF
PUBLIC
WLEN,XI,Y,TEX,VTEX,WTEX,WTEX1,WTEX2,XXX,X1,X2,NUM,TEXTO1,TEXTO2,VTEXT1,VTEXT2,WTEXT1,WTEXT2,WTEXTO1,WTEXTO2,VACCOD
WLEN=0
XI=0
Y=3
TEX=""
VTEX=0
TEXTO1=""
TEXTO2=""
VTEXT1=0
VTEXT2=0
WTEXT1=0
WTEXT2=0
THISFORMSET.FORM2.TEXT1.VALUE=""
THISFORMSET.FORM2.TEXT2.VALUE=""
THISFORMSET.FORM2.LABEL1.VISIBLE=.F.
THISFORMSET.FORM2.TEXT2.VISIBLE=.F.
THISFORMSET.FORM2.LABEL4.VISIBLE=.T.
THISFORMSET.FORM3.COMMAND1.ENABLED=.F.
THISFORMSET.FORM3.TEXT1.VALUE=0
THISFORM.TEXT1.VALUE=""
THISFORM.LABEL2.CAPTION="TIENE "+ALLT(STR(Y))+" OPORTUNIDADES"
THISFORMSET.FORM3.VISIBLE=.F.
THISFORMSET.FORM2.VISIBLE=.F.
THISFORMSET.FORM1.VISIBLE=.F.
THISFORMSET.FORM3.ENABLED=.F.
THISFORMSET.FORM2.ENABLED=.F.
THISFORMSET.FORM1.ENABLED=.T.
THISFORMSET.FORM3.HIDE
THISFORMSET.FORM2.HIDE
THISFORMSET.FORM1.SHOW
THISFORMSET.FORM1.MOVABLE=.F.
THISFORMSET.FORM2.MOVABLE=.F.
THISFORMSET.FORM3.MOVABLE=.F.
THISFORM.REFRESH
COMMAND2.CLICK
RELE WLEN,XI,Y,TEX,VTEX,WTEX,WTEX1,WTEX2,XXX,X1,X2,NUM,TEXTO1,TEXTO2,VTEXT1,VTEXT2,WTEXT1,WTEXT2,WTEXTO1,WTEXTO2
SET PATH TO "FO_RM,IC_ON,PR_OG,TA_BL,IN_FO"
DO ME_BI.MPR
THISFORMSET.RELEASE
COMMAND1.CLICK
WITH THISFORM
XI=1
VACCOD=ALLT(UPPE(ALLT(.TEXT1.VALUE)))
TEX=ALLT(.TEXT2.VALUE)
VTEX=LEN(TEX)
WTEX=""
WTEX1=""
WTEX2=""
SELE * FROM CO_DI WHERE VACCOD==UPPE(COD_USE) INTO CURS AZT
SELE AZT
WTEX2=ALLT(AZT.NU1_USE)
WLEN=AZT.NU2_USE
XXX=AZT.NU2_USE
DO CASE
CASE EMPTY(.TEXT1.VALUE).OR.EMPTY(.TEXT2.VALUE)
Y=Y-1
WAIT WIND " ... NO INGRESO VALOR... " TIME 1
WAIT WIND " ... TIENE "+ALLT(STR(Y))+" OPORTUNIDAD(ES) ... " TIME 1
.LABEL2.CAPTION="TIENE "+ALLT(STR(Y))+" OPORTUNIDADES)"
IF Y=0
.LABEL2.CAPTION="TIENE "+ALLT(STR(Y))+" OPORTUNIDADES)"
.TEXT2.VALUE=""
WAIT WIND " ... CONSIGA LA CLAVE E ID USUARIO CORRECTOS ... " TIME 1
WAIT WIND " ... CANCELANDO OPERACIN ... " TIME 1
RELEASE WLEN,XI,Y,TEX,VTEX,WTEX,WTEX1,WTEX2,XXX,X1,X2,NUM,TEXTO1,TEXTO2,VTEXT1,VTEXT2,WTEXT1,WTEXT2,WTEXTO1,WTEXTO2
THISFORMSET.RELEASE
ELSE
.TEXT1.SETFOCUS
.COMMAND2.ENABLED=.T.
ENDIF
OTHERWISE
DO WHILE XI<(VTEX+1)
WTEX=ASC(SUBST(TEX,XI,1))
WTEX1=ALLT(WTEX1)+ALLT(STR(WTEX))
XI=XI+1
ENDDO
SET EXACT ON
IF VAL(WTEX1)<>VAL(WTEX2)
Y=Y-1
TEX=""
VTEX=0
WTEX1=""
WAIT WIND " ... CLAVE INCORRECTA O ID USUARIO NO EXISTE..." TIME 1
WAIT WIND " ... ACCESO DENEGADO ... " TIME 1
WAIT WIND " ... TIENE "+ALLT(STR(Y))+" OPORTUNIDAD(ES) ... " TIME 1.2
.LABEL2.CAPTION="TIENE "+ALLT(STR(Y))+" OPORTUNIDAD(ES)"
IF Y=0
.LABEL2.CAPTION="TIENE "+ALLT(STR(Y))+" OPORTUNIDAD(ES)"
WAIT WIND " ... CANCELANDO OPERACIN ... " TIME 1
.TEXT2.VALUE=""
RELEASE WLEN,XI,Y,TEX,VTEX,WTEX,WTEX1,WTEX2,XXX,X1,X2,NUM,TEXTO1,TEXTO2,VTEXT1,VTEXT2,WTEXT1,WTEXT2,WTEXTO1,WTEXTO2

97

THISFORMSET.RELEASE
ELSE
.TEXT2.VALUE=""
.TEXT1.SETFOCUS
ENDIF
ELSE
SET EXACT ON
IF ALLT(WTEX1)==ALLT(WTEX2)
WAIT WIND" ... PASSWORD CORRECTO ... CONTINUANDO OPERACIN ... " TIME 1
RELEASE XI,Y,TEX,VTEX,WTEX,WTEX1,WTEX2
THISFORMSET.FORM1.ENABLED=.F.
THISFORMSET.FORM1.VISIBLE=.F.
THISFORMSET.FORM1.HIDE
THISFORMSET.FORM2.ENABLED=.T.
THISFORMSET.FORM2.VISIBLE=.T.
THISFORMSET.FORM2.SHOW
THISFORMSET.FORM2.LABEL3.CAPTION="LONGITUD DE PASSWORD "+ALLT(STR(XXX))+" CARACTERES"
ELSE
Y=Y-1
TEX=""
VTEX=0
WTEX1=""
WAIT WIND " ... LOS DATOS NO COINCIDEN ... " TIME 1
WAIT WIND " ... TIENE "+ALLT(STR(Y))+" OPORTUNIDAD(ES) ... " TIME 1
.LABEL2.CAPTION="TIENE "+ALLT(STR(Y))+" OPORTUNIDAD(ES)"
IF Y=0
.LABEL2.CAPTION="TIENE "+ALLT(STR(Y))+" OPORTUNIDAD(ES)"
WAIT WIND " ... CANCELANDO OPERACIN ... " TIME 1
RELEASE WLEN,XI,Y,TEX,VTEX,WTEX,WTEX1,WTEX2,XXX,X1,X2,NUM,TEXTO1,TEXTO2,VTEXT1,VTEXT2,WTEXT1,WTEXT2,WTEXTO1,WTEXTO2
THISFORMSET.RELEASE
ELSE
THISFORM.TEXT1.VALUE=""
THISFORM.COMMAND1.ENABLED=.F.
THISFORM.COMMAND2.ENABLED=.F.
THISFORM.LABEL2.CAPTION="TIENE "+ALLT(STR(Y))+" OPORTUNIDAD(ES)"
THISFORM.TEXT1.SETFOCUS
THISFORM.COMMAND2.ENABLED=.T.
ENDIF
ENDIF
ENDIF
ENDCASE
ENDWITH
TEXT2.LOSTFOCUS
XI=1
TEX=ALLT(THISFORM.TEXT1.VALUE)
VTEX=LEN(TEX)
WTEX=""
WTEX1=""
WTEX2=""
THISFORM.COMMAND1.ENABLED=.T.
THISFORM.COMMAND1.SETFOCUS
THISFORM.REFRESH
EN EL SEGUNDO FORMULARIO
TEXT1.KEYPRESS
LPARAMETERS nKeyCode, nShiftAltCtrl
IF LASTKEY()=13.AND.EMPTY(THISFORM.TEXT1.VALUE)=.F.
X1=1
TEXTO1=ALLT(THISFORM.TEXT1.VALUE)
VTEXT1=LEN(TEXTO1)
WTEXTO1=""
THISFORM.LABEL1.VISIBLE=.T.
THISFORM.TEXT2.VISIBLE=.T.
THISFORM.REFRESH
ENDIF
TEXT2.KEYPRESS
LPARAMETERS nKeyCode, nShiftAltCtrl
IF LASTKEY()=13.AND.EMPTY(THISFORM.TEXT2.VALUE)=.F.
X2=1
TEXTO2=ALLT(THISFORM.TEXT2.VALUE)
VTEXT2=LEN(TEXTO2)
WTEXTO2=""
THISFORM.COMMAND1.ENABLED=.T.
THISFORM.COMMAND1.SETFOCUS
THISFORM.REFRESH
ENDIF
COMMAND1.CLICK
DO CASE
CASE LEN(ALLT(THISFORM.TEXT1.VALUE))<XXX.OR.LEN(ALLT(THISFORM.TEXT1.VALUE))>XXX
WAIT WIND " ... LONGITUD DE PASSWORD "+ ALLT(STR(XXX)) +" CARACTERES ... " TIME 1.2
THISFORM.TEXT1.ENABLED=.T.
THISFORM.TEXT1.SETFOCUS
CASE LEN(ALLT(THISFORM.TEXT2.VALUE))<XXX.OR.LEN(ALLT(THISFORM.TEXT2.VALUE))>XXX
WAIT WIND " ... LONGITUD DE PASSWORD "+ ALLT(STR(XXX)) +" CARACTERES ... " TIME 1.2
THISFORM.TEXT2.ENABLED=.T.
THISFORM.TEXT2.SETFOCUS
CASE EMPTY(THISFORM.TEXT1.VALUE)
WAIT WIND "...NO INGRESO VALOR..." TIME 2
THISFORM.COMMAND1.ENABLED=.F.
THISFORM.COMMAND2.ENABLED=.F.
THISFORM.COMMAND3.ENABLED=.F.
THISFORM.TEXT1.SETFOCUS

98

THISFORM.LABEL1.VISIBLE=.F.
THISFORM.TEXT2.VISIBLE=.F.
THISFORM.COMMAND2.ENABLED=.T.
THISFORM.COMMAND3.ENABLED=.T.
CASE EMPTY(THISFORM.TEXT2.VALUE)
WAIT WINDOW"...NO INGRESO VALOR..." TIME 1.2
THISFORM.COMMAND1.ENABLED=.F.
THISFORM.COMMAND2.ENABLED=.F.
THISFORM.COMMAND3.ENABLED=.F.
THISFORM.TEXT1.SETFOCUS
THISFORM.LABEL1.VISIBLE=.F.
THISFORM.TEXT2.VISIBLE=.F.
THISFORM.COMMAND2.ENABLED=.T.
THISFORM.COMMAND3.ENABLED=.T.
OTHERWISE
DO WHILE X1<(VTEXT1+1)
WTEXT1=ASC(SUBST(TEXTO1,X1,1))
WTEXTO1=ALLT(WTEXTO1)+ALLT(STR(WTEXT1))
X1=X1+1
ENDDO
DO WHILE X2<(VTEXT2+1)
WTEXT2=ASC(SUBST(TEXTO2,X2,1))
WTEXTO2=ALLT(WTEXTO2)+ALLT(STR(WTEXT2))
X2=X2+1
ENDDO
SET EXACT ON
IF ALLT(WTEXTO1)==ALLT(WTEXTO2)
SELE CO_DI
LOCA FOR VACCOD==ALLT(UPPE(COD_USE))
IF FOUND()
REPL CO_DI.NU1_USE WITH WTEXTO2
REPL CO_DI.NU2_USE WITH XXX
WAIT WIND" ... PASSWORD HA SIDO GRABADO ... OPERACIN TERMINADA ... " TIME 1.2
RELE XXX,NUM,X1,X2,TEXTO1,TEXTO2,VTEXT1,VTEXT2,WTEXT1,WTEXT2,WTEXTO1,WTEXTO2
SET PATH TO "FO_RM,IC_ON,PR_OG,TA_BL,IN_FO"
DO ME_BI.MPR
THISFORMSET.RELEASE
ENDIF
ELSE
TEXTO1=""
TEXTO2=""
VTEXT1=0
VTEXT2=0
WTEXT1=0
WTEXT2=0
WAIT WIND " ... LOS DATOS NO COINCIDEN ... " TIME 1
WAIT WIND " ... RETOMANDO OPERACIN ... " TIME 1
THISFORM.TEXT1.VALUE=""
THISFORM.TEXT2.VALUE=""
THISFORM.COMMAND1.ENABLED=.F.
THISFORM.COMMAND2.ENABLED=.F.
THISFORM.COMMAND3.ENABLED=.F.
THISFORM.TEXT1.SETFOCUS
THISFORM.LABEL1.VISIBLE=.F.
THISFORM.TEXT2.VISIBLE=.F.
THISFORM.COMMAND2.ENABLED=.T.
THISFORM.COMMAND3.ENABLED=.T.
ENDIF
ENDCASE
COMMAND2.CLICK
WAIT WIND " ... CANCELANDO OPERACIN ... " TIME 1
RELEASE XXX,NUM,X1,X2,TEXTO1,TEXTO2,VTEXT1,VTEXT2,WTEXT1,WTEXT2,WTEXTO1,WTEXTO2
SET PATH TO "FO_RM,IC_ON,PR_OG,TA_BL,IN_FO"
DO ME_BI.MPR
THISFORMSET.RELEASE
COMMAND3.CLICK
THISFORMSET.FORM3.ENABLED=.T.
THISFORMSET.FORM3.VISIBLE=.T.
THISFORMSET.FORM2.HIDE
THISFORMSET.FORM3.SHOW
EN EL FORMULARIO 3
TEXT1.LOSTFOCUS
THISFORM.COMMAND1.ENABLED=.T.
THISFORM.COMMAND2.ENABLED=.T.
COMMAND1.CLICK
SELEC CO_DI
XXX=THISFORM.TEXT1.VALUE
IF XXX=0
WAIT WIND "INGRESE NMERO ENTRE 4 Y 12...." TIME 1.2
THISFORM.COMMAND1.ENABLED=.F.
THISFORM.COMMAND2.ENABLED=.F.
THISFORM.TEXT1.VALUE=0
THISFORM.TEXT1.SETFOCUS
THISFORM.COMMAND2.ENABLED=.T.
ELSE
IF XXX>3.AND.XXX<13
WAIT WIND " ... LONGITUD DE PASSWORD ES "+ALLT(STR(XXX))+" CARACTERES ... " TIME 1.2
THISFORM.TEXT1.VALUE=0
THISFORMSET.FORM3.HIDE
THISFORMSET.FORM2.SHOW
THISFORMSET.FORM2.TEXT1.SETFOCUS

99

THISFORMSET.FORM2.LABEL3.CAPTION= " ... LONGITUD DE PASSWORD "+ALLT(STR(XXX))+" CARACTERES ... "


ELSE
WAIT WIND "INGRESE NMERO ENTRE 4 Y 12...." TIME 1.2
THISFORM.COMMAND1.ENABLED=.F.
THISFORM.COMMAND2.ENABLED=.F.
THISFORM.TEXT1.VALUE=0
THISFORM.TEXT1.SETFOCUS
THISFORM.COMMAND2.ENABLED=.T.
ENDIF
ENDIF
COMMAND2.CLICK
THISFORM.TEXT1.VALUE=0
THISFORMSET.FORM3.ENABLED=.F.
THISFORMSET.FORM3.VISIBLE=.F.
THISFORMSET.FORM3.HIDE
THISFORMSET.FORM2.TEXT1.VALUE=""
THISFORMSET.FORM2.TEXT2.VALUE=""
THISFORMSET.FORM2.LABEL1.VISIBLE=.F.
THISFORMSET.FORM2.TEXT2.VISIBLE=.F.
THISFORMSET.FORM2.SHOW
FORMULARIO DE PRESENTACIN
FORM1.INIT
SET ESCAPE OFF
SET ECHO OFF
SET TALK OFF
SET SYSMENU TO
SET CENTURY ON
SET CLOCK STATUS
SET DELETE ON
SET DATE TO BRITISH
SET EXCLUSIVE OFF
SET SAFETY OFF
SET REFRESH TO 5
SET STATUS BAR OFF
SET PATH TO "FO_RM,IC_ON,PR_OG,TA_BL,IN_FO"
SELE DA_EN
THISFORM.LABEL1.CAPTION=ALLT(DA_EN.NOM_ENT)
THISFORM.CAPTION="
S O F TWAR E
DE
B I B L I O T E C A"
THISFORM.MOVABLE=.F.
THISFORM.REFRESH
TIMER1.TIMER
WITH THISFORM
IF THISFORM.PICTURE="C:\cetoilbib\ic_on\espiral1.gif"
THISFORM.PICTURE="C:\cetoilbib\ic_on\espiralx.gif"
ELSE
IF THISFORM.PICTURE="C:\cetoilbib\ic_on\espiralx.gif"
THISFORM.PICTURE="C:\cetoilbib\ic_on\espiraly.gif"
ELSE
IF THISFORM.PICTURE="C:\cetoilbib\ic_on\espiraly.gif"
THISFORM.PICTURE="C:\cetoilbib\ic_on\espiralz.gif"
ELSE
IF THISFORM.PICTURE="C:\cetoilbib\ic_on\espiralz.gif"
THISFORM.PICTURE="C:\cetoilbib\ic_on\espiral1.gif"
ENDIF
ENDIF
ENDIF
ENDIF
ENDWITH
COMMAND1.CLICK
SET PATH TO "FO_RM,IC_ON,PR_OG,TA_BL,IN_FO"
DO FORM CL_AV.SCX
THISFORM.RELEASE
FORMULARIO REGISTRO DE SOFTWARE DE GESTIN DE BIBLIOTECA
FORM1.INIT
SET SYSM TO
SET PATH TO "FO_RM,IC_ON,PR_OG,TA_BL,IN_FO"
SET STAT OFF
PUBLIC OPC,XI,YI,TEX1,TEX2,VTEX1,VTEX2,WTEX1,WTEX2,WTEXT1,WTEXT2
OPC=0
XI=0
YI=0
TEX1=""
TEX2=""
VTEX1=0
VTEX2=0
WTEX1=0
WTEX2=0
WTEXT1=""
WTEXT2=""
THISFORM.CAPTION=" SOFTWARE DE GESTIN DE BIBLIOTECA : "+ALLT(DA_EN.NOM_ENT)
SELE DA_EN
IF RECCOUNT()=0
OPC=1
THISFORM.SETALL("ENABLED",.T.,"TEXTBOX")
THISFORM.COMMAND2.ENABLED=.F.
THISFORM.COMMAND4.ENABLED=.T.
THISFORM.COMMAND3.ENABLED=.F.

100

THISFORM.COMMAND1.ENABLED=.T.
THISFORM.TEXT12.VALUE=""
THISFORM.TEXT13.VALUE=""
THISFORM.LABEL14.ENABLED=.F.
THISFORM.LABEL14.VISIBLE=.F.
THISFORM.TEXT1.SETFOCUS
ELSE
OPC=2
THISFORM.COMMAND1.ENABLED=.F.
THISFORM.COMMAND4.ENABLED=.F.
THISFORM.COMMAND2.ENABLED=.T.
THISFORM.COMMAND3.ENABLED=.T.
THISFORM.SETALL("ENABLED",.F.,"TEXTBOX")
THISFORM.TEXT1.VALUE=ALLT(SUBS(DA_EN.NOM_ENT,1))
THISFORM.TEXT2.VALUE=ALLT(SUBS(DA_EN.DIR_ENT,1))
THISFORM.TEXT3.VALUE=ALLT(SUBS(DA_EN.TEL_ENT,1))
THISFORM.TEXT5.VALUE=ALLT(SUBS(DA_EN.DIS_ENT,1))
THISFORM.TEXT6.VALUE=ALLT(SUBS(DA_EN.PRO_ENT,1))
THISFORM.TEXT7.VALUE=ALLT(SUBS(DA_EN.REG_ENT,1))
THISFORM.TEXT8.VALUE=ALLT(SUBS(DA_EN.RUC_ENT,1))
THISFORM.COMMAND2.SETFOCUS
ENDIF
COMMAND1.CLICK
DO CASE
CASE EMPTY(THISFORM.TEXT1.VALUE)
WAIT WIND " ... INGRESO DE DATOS INCORRECTO ... " TIME 1
THISFORM.TEXT1.SETFOCUS
CASE EMPTY(THISFORM.TEXT2.VALUE)
WAIT WIND " ... INGRESO DE DATOS INCORRECTO ... " TIME 1
THISFORM.TEXT2.SETFOCUS
CASE EMPTY(THISFORM.TEXT3.VALUE)
WAIT WIND " ... INGRESO DE DATOS INCORRECTO ... " TIME 1
THISFORM.TEXT3.SETFOCUS
CASE EMPTY(THISFORM.TEXT5.VALUE)
WAIT WIND " ... INGRESO DE DATOS INCORRECTO ... " TIME 1
THISFORM.TEXT5.SETFOCUS
CASE EMPTY(THISFORM.TEXT6.VALUE)
WAIT WIND " ... INGRESO DE DATOS INCORRECTO ... " TIME 1
THISFORM.TEXT6.SETFOCUS
CASE EMPTY(THISFORM.TEXT7.VALUE)
WAIT WIND " ... INGRESO DE DATOS INCORRECTO ... " TIME 1
THISFORM.TEXT7.SETFOCUS
CASE VAL(THISFORM.TEXT8.VALUE)=0.OR.LEN(ALLT(THISFORM.TEXT8.VALUE))<11
WAIT WIND " ... INGRESO DE DATOS INCORRECTO ... " TIME 1
THISFORM.TEXT8.SETFOCUS
OTHERWISE
IF OPC=1
DO CASE
CASE EMPTY(THISFORM.TEXT12.VALUE)
WAIT WIND " ... INGRESO DE DATOS INCORRECTO ... " TIME 1
THISFORM.TEXT12.SETFOCUS
CASE EMPTY(THISFORM.TEXT13.VALUE)
WAIT WIND " ... INGRESO DE DATOS INCORRECTO ... " TIME 1
THISFORM.TEXT13.SETFOCUS
CASE LEN(ALLT(THISFORM.TEXT12.VALUE))<4.OR.LEN(ALLT(THISFORM.TEXT12.VALUE))>12
WAIT WIND " ... LONGITUD MNIMA 4, LONGITUD MXIMA 12 ... " TIME 1
THISFORM.TEXT12.SETFOCUS
CASE LEN(ALLT(THISFORM.TEXT13.VALUE))<4.OR.LEN(ALLT(THISFORM.TEXT13.VALUE))>12
WAIT WIND " ... LONGITUD MNIMA 4, LONGITUD MXIMA 12 ... " TIME 1
THISFORM.TEXT13.SETFOCUS
OTHERWISE
XI=1
TEX1=ALLT(THISFORM.TEXT12.VALUE)
VTEX1=LEN(TEX1)
WTEX1=0
WTEXT1=""
DO WHILE XI<(VTEX1+1)
WTEX1=ASC(SUBST(TEX1,XI,1))
WTEXT1=ALLT(WTEXT1)+ALLT(STR(WTEX1))
XI=XI+1
ENDDO
YI=1
TEX2=ALLT(THISFORM.TEXT13.VALUE)
VTEX2=LEN(TEX2)
WTEX2=0
WTEXT2=""
DO WHILE YI<(VTEX2+1)
WTEX2=ASC(SUBST(TEX2,YI,1))
WTEXT2=ALLT(WTEXT2)+ALLT(STR(WTEX2))
YI=YI+1
ENDDO
IF VAL(ALLT(WTEXT1))=VAL(ALLT(WTEXT2))
SELE CO_DI
APPE BLAN
REPL NU1_USE WITH WTEXT2
REPL NU2_USE WITH VTEX2
REPL COD_USE WITH AD_MIN
SELE DA_EN
APPE BLAN
REPL NOM_ENT WITH ALLT(THISFORM.TEXT1.VALUE)
REPL DIR_ENT WITH ALLT(THISFORM.TEXT2.VALUE)
REPL TEL_ENT WITH ALLT(THISFORM.TEXT3.VALUE)
REPL DIS_ENT WITH ALLT(THISFORM.TEXT5.VALUE)
REPL PRO_ENT WITH ALLT(THISFORM.TEXT6.VALUE)
REPL REG_ENT WITH ALLT(THISFORM.TEXT7.VALUE)
REPL RUC_ENT WITH ALLT(THISFORM.TEXT8.VALUE)
WAIT WIND " ... DATOS REGISTRADOS ... " TIME 1
RELEASE OPC,XI,YI,TEX1,TEX2,VTEX1,VTEX2,WTEX1,WTEX2,WTEXT1,WTEXT2
CLOSE DATA

101

SET PATH TO "FO_RM,IC_ON,PR_OG,TA_BL,IN_FO"


_SCREEN.CONTROLBOX=.T.
_SCREEN.CLOSABLE=.T.
_SCREEN.FONTSIZE=17
_SCREEN.PICTURE=""
_SCREEN.ICON="BOOKS05.ICO"
_SCREEN.WINDOWSTATE=2
USE DA_EN
_SCREEN.CAPTION=" S O F T W A R E D E G E S T I N D E B I B L I O T E C A :
USE
DO ME_BI.MPR
THISFORM.RELEASE
ELSE
WAIT WIND " ... LOS VALORES NO COINCIDEN, VUELVA A INTENTAR ... " TIME 1
THISFORM.TEXT12.VALUE=""
THISFORM.TEXT13.VALUE=""
THISFORM.TEXT13.ENABLED=.F.
THISFORM.TEXT13.VISIBLE=.F.
THISFORM.TEXT12.SETFOCUS
THISFORM.REFRESH
ENDIF
ENDCASE
ELSE
SELE DA_EN
GO TOP
REPL NOM_ENT WITH ALLT(THISFORM.TEXT1.VALUE)
REPL DIR_ENT WITH ALLT(THISFORM.TEXT2.VALUE)
REPL TEL_ENT WITH ALLT(THISFORM.TEXT3.VALUE)
REPL DIS_ENT WITH ALLT(THISFORM.TEXT5.VALUE)
REPL PRO_ENT WITH ALLT(THISFORM.TEXT6.VALUE)
REPL REG_ENT WITH ALLT(THISFORM.TEXT7.VALUE)
REPL RUC_ENT WITH ALLT(THISFORM.TEXT8.VALUE)
WAIT WIND " ... DATOS ACTUALIZADOS ... " TIME 1
THISFORM.REFRESH
THISFORM.INIT
ENDIF
ENDCASE
COMMAND2.CLICK
THISFORM.COMMAND1.ENABLED=.T.
THISFORM.COMMAND2.ENABLED=.F.
THISFORM.COMMAND3.ENABLED=.F.
THISFORM.COMMAND4.ENABLED=.T.
THISFORM.SETALL("ENABLED",.T.,"TEXTBOX")
THISFORM.TEXT12.ENABLED=.F.
THISFORM.TEXT13.ENABLED=.F.
THISFORM.TEXT1.SETFOCUS
COMMAND3.CLICK
RELEASE OPC,XI,YI,TEX1,TEX2,VTEX1,VTEX2,WTEX1,WTEX2,WTEXT1,WTEXT2
SET PATH TO "FO_RM,IC_ON,PR_OG,TA_BL,IN_FO"
DO ME_BI.MPR
THISFORM.RELEASE
TEXT1.KEYPRESS
LPARAMETERS nKeyCode, nShiftAltCtrl
IF LASTKEY()=13
DO CASE
CASE OPC=1
CASE OPC=2
IF EMPTY(THISFORM.TEXT1.VALUE)
ELSE
THISFORM.TEXT2.SETFOCUS
ENDIF
ENDCASE
ENDIF
TEXT2.KEYPRESS
LPARAMETERS nKeyCode, nShiftAltCtrl
IF LASTKEY()=13
DO CASE
CASE OPC=1
CASE OPC=2
IF EMPTY(THISFORM.TEXT2.VALUE)
ELSE
THISFORM.TEXT3.SETFOCUS
ENDIF
ENDCASE
ENDIF
TEXT3.KEYPRESS
LPARAMETERS nKeyCode, nShiftAltCtrl
IF LASTKEY()=13
DO CASE
CASE OPC=1
CASE OPC=2
IF EMPTY(THISFORM.TEXT3.VALUE)
ELSE
THISFORM.TEXT5.SETFOCUS
ENDIF
ENDCASE
ENDIF
TEXT5.KEYPRESS
LPARAMETERS nKeyCode, nShiftAltCtrl

102

"+ALLT(NOM_ENT)

IF LASTKEY()=13
DO CASE
CASE OPC=1
CASE OPC=2
IF EMPTY(THISFORM.TEXT5.VALUE)
ELSE
THISFORM.TEXT6.SETFOCUS
ENDIF
ENDCASE
ENDIF
TEXT6.KEYPRESS
LPARAMETERS nKeyCode, nShiftAltCtrl
IF LASTKEY()=13
DO CASE
CASE OPC=1
CASE OPC=2
IF EMPTY(THISFORM.TEXT6.VALUE)
ELSE
THISFORM.TEXT7.SETFOCUS
ENDIF
ENDCASE
ENDIF
TEXT7.KEYPRESS
LPARAMETERS nKeyCode, nShiftAltCtrl
IF LASTKEY()=13
DO CASE
CASE OPC=1
CASE OPC=2
IF EMPTY(THISFORM.TEXT7.VALUE)
ELSE
THISFORM.TEXT8.SETFOCUS
ENDIF
ENDCASE
ENDIF
TEXT8.KEYPRESS
LPARAMETERS nKeyCode, nShiftAltCtrl
IF LASTKEY()=13
DO CASE
CASE OPC=1
THISFORM.COMMAND1.SETFOCUS
CASE OPC=2
IF EMPTY(THISFORM.TEXT8.VALUE).OR.VAL(THISFORM.TEXT8.VALUE)=0
ELSE
*THISFORM.COMMAND1.SETFOCUS
ENDIF
ENDCASE
ENDIF
TEXT12.KEYPRESS
LPARAMETERS nKeyCode, nShiftAltCtrl
IF LASTKEY()=13
DO CASE
CASE OPC=1
IF EMPTY(THISFORM.TEXT12.VALUE)
ELSE
THISFORM.TEXT13.ENABLED=.T.
THISFORM.TEXT13.VISIBLE=.T.
THISFORM.LABEL14.ENABLED=.T.
THISFORM.LABEL14.VISIBLE=.T.
ENDIF
ENDCASE
ENDIF
COMMAND4.CLICK
IF OPC=1
IF MESSAGEBOX(" DESEA SALIR DEL SISTEMA? ",4+32,"BIBLIOTECA "+ALLT(DA_EN.NOM_ENT))=6
RELEASE OPC,XI,YI,TEX1,TEX2,VTEX1,VTEX2,WTEX1,WTEX2,WTEXT1,WTEXT2
THISFORM.RELEASE
QUIT
ELSE
THISFORM.TEXT1.SETFOCUS
THISFORM.REFRESH
ENDIF
ELSE
THISFORM.INIT
ENDIF
TEXT13.KEYPRESS
LPARAMETERS nKeyCode, nShiftAltCtrl
IF LASTKEY()=13
DO CASE
CASE OPC=1
IF EMPTY(THISFORM.TEXT12.VALUE)
ELSE
THISFORM.COMMAND1.SETFOCUS
ENDIF
ENDCASE
ENDIF
FORMULARIO SALIR
FORM1.INIT

103

SET PATH TO "FO_RM,IC_ON,PR_OG,TA_BL,IN_FO"


SET SYSMENU TO
THISFORM.CAPTION=" SOFTWARE DE BIBLIOTECA "
COMMAND1.CLICK
CLEAR EVENT
CLOSE ALL
RELEASE ALL EXTENDED
_SCREEN.PICTURE=""
_SCREEN.ICON=""
QUIT
THISFORM.RELEASE
COMMAND2.CLICK
SET PATH TO "FO_RM,IC_ON,PR_OG,TA_BL,IN_FO"
DO ME_BI.MPR
THISFORM.RELEASE

104

También podría gustarte