Clipper/FiveWin - Pregunta de "Kinder"...

 
Vista:

Pregunta de "Kinder"...

Publicado por Jorge Glez. (39 intervenciones) el 19/04/2001 19:45:28
Hola:

Tengo el siguiente problema, espero de favor me puedan ayudar. De antemano, gracias:
Tengo un procedimiento llamado Catalogo(), el cual se activa mediante un SET KEY y lo puedo mandar llamar cuantas veces se necesite desde cualquier parte del programa (procedimientos y/o funciones). Este Catalogo() abre una base (USE BASE DE DATOS Alias BASETMP) y, al terminar de ejecutarse, se cierra dicha base (CLOSE BASETMP). Ahora bien, si estoy en un procedimiento y/o función determinada, en donde tengo una base (que la llamaremos Base1.DBF) y mando llamar al Catalogo(), cuando dejo de usar este Catalogo(), me cierra todas las áreas o bases que ya tenía abiertas antes de usar el Catalogo(). Luego entonces, la pregunta es si el CLOSE alias está bien su sintaxis o necesito ocupar otro mandato o función?

OJO.- No me gustaría usar el SELECT, pues tendría que escribirlo en todos y cada uno de los proc() o func() donde manejo bases. Se me haría mas cómodo modificar la función de Catalogo()

En resumen: ¿Cómo abro una primera base, luego abro una segunda, cierro esta segunda y que se queda abierta la primera...y ¡claro! con sus respectivos índices?

Espero respuesta, gracias.
Jorge Glez.
P.D.-Espero que me haya explicado...
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Pregunta de

Publicado por Martin Gamez (13 intervenciones) el 19/04/2001 23:58:59
mira la solucion es muy sencilla.

al inicio de tu funcion catalogo usa el comando select para abrir una nueva area de trabajo lo que pasa es que al abrir sin select cierras la base que abriste primero, ok

mira es mas o menos asi

func catalogo()
select 25
use basededatos alias basetemp
tu codigo

select 25
use
return

esto hace que en el area de trabajo 25 se coloque la base de datos temporal y no cierres la primera al terminar la funcion cierras el area 25 y seleccionas el area 1 y ya esta.

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Pregunta de

Publicado por Martin Gamez (13 intervenciones) el 20/04/2001 00:06:05
mira la solucion es muy sencilla.

al inicio de tu funcion catalogo usa el comando select para abrir una nueva area de trabajo lo que pasa es que al abrir sin select cierras la base que abriste primero, ok

mira es mas o menos asi

func catalogo()
select 25
use basededatos alias basetemp
tu codigo

select 25
use
return

esto hace que en el area de trabajo 25 se coloque la base de datos temporal y no cierres la primera al terminar la funcion cierras el area 25 y seleccionas el area 1 y ya esta.

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Pregunta de

Publicado por Armando Estrada Bucio (95 intervenciones) el 20/04/2001 02:37:10
Hola Jorge:

Ahora por aquí ?

Probablemente lo que te esta pasando es que cuando abres la segunda base de datos, esta te cierra la primera, me explico con un ejemplo:

USE BASE1 INDEX INDEX1 ALIAS BASE1
USE BASE2 INDEX INDEX2 ALIAS BASE2

La segunda base te cierra la primera, como evitarlo ?, sencillo:

USE BASE1 INDEX INDEX1 ALIAS BASE1
USE BASE2 INDEX INDEX2 ALIAS BASE2 NEW <-OJO

Cual es la razon ?, Siempre que abres una base se abre en el area mas baja (1) a menos que le especifiques el parámetro NEW para que se abra en el area mas baja DISPONIBLE (no usada, o se la 2 en este ejemplo)

Por otro lado, puedes cerrar cualquier base sin usar el SELECT, basta especificarlo así:

BaseACerrar->(DBCLOSEAREA())

Suerte


Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Pregunta de Ki

Publicado por Manuel Rivera Peru (3 intervenciones) el 22/04/2001 02:18:29
Espero te sirva de algo :

Procedure Catalogo()
set key to K_F1 // evita la recursividad
use tubase index tubase1 alias BaseTmp new

*- tu codigo...
*- tu codigoh...

BaseTmp->(Dbclosearea())
set key K_F1 to Catalogo()



Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Muchas gracias...

Publicado por Jorge Glez (39 intervenciones) el 22/04/2001 05:35:20
Martin, Armando, Manuel:

Les agradezco muchísimo sus comentarios, me servió de mucho...

Saludos

Jorge Glez.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar