Cursores y tablas que quedan abiertas

27/04/2005 - 10:53 por Ana María Bisbé York | Informe spam
Hola:

Esto debe ser de primaria; pero la verdad es que no lo veo. A ver si alguien
encuentra el fallo. VFP 6.0.
Intento que todo esté cerrado y que el INSERT INTO se realice en el cursor
CurTodasCuentas; pero se hace en CuenNue.
Casi todas las instrucciones USE IN las he puesto luego para forzar que todo
este bien cerrado.

*!* Cargamos el cursor con las cuentas nuevas definidas en CuenNue
USE IN SELECT ('CurTemporal')
SELECT cuenta ,cuennueiD FROM 'CuenNue' INTO CURSOR curTemporal
USE IN SELECT ('CuenNue')

****** Si pregunto por dbf() me devuelve CueNue !!!!

*!* Añadir la cuenta predeterminada
IF _TALLY <> 0
USE IN SELECT ('CurTodasCuentas')
****** Si pregunto por dbf() me devuelve cadena vacía

USE DBF("curtemporal") IN 0 AGAIN ALIAS curTodasCuentas
USE IN SELECT ('CurTemporal')

****** Si pregunto por dbf() me devuelve CueNue !!!!

IF USED("curTodasCuentas")
SELECT ('CurTodasCuentas')
INSERT INTO 'CurTodasCuentas' (cuenta, cuennueiD) VALUES
('Predeterminada', 0)

****** Si pregunto por dbf() me devuelve CueNue !!!! Se agrega al cursor y a
la tabla CuenNue !!!!!

endif
*etc etc
ENDIF


Este código lo tengo en otro lugar de la aplicación y funciona bien; pero
ahora que me he detenido a ver resulta que DBF() está apuntando a un TMP por
tanto no me afecta.

Debe haber algún problema de tratamiento de cursores y sus tablas de origen,
¿alguien lo ve?


Saludos,

Ana
www.amby.net

Preguntas similare

Leer las respuestas

#1 Carlos Yohn Zubiria
27/04/2005 - 13:29 | Informe spam
Ana,
Se te ha olvidado la importancia del modificador 'nofilter'. Si no lo pones
y la consulta es sencilla, no crea un cursor temporal sino que filtra la
tabla origen.
Añade ese modificador y todo ok.

Saludos,
A.G.P. (Aplicaciones de Gestión y Productividad)
Las Arenas - Vizcaya - España

"Ana María Bisbé York" escribió en el mensaje
news:
Hola:

Esto debe ser de primaria; pero la verdad es que no lo veo. A ver si


alguien
encuentra el fallo. VFP 6.0.
Intento que todo esté cerrado y que el INSERT INTO se realice en el cursor
CurTodasCuentas; pero se hace en CuenNue.
Casi todas las instrucciones USE IN las he puesto luego para forzar que


todo
este bien cerrado.

*!* Cargamos el cursor con las cuentas nuevas definidas en CuenNue
USE IN SELECT ('CurTemporal')
SELECT cuenta ,cuennueiD FROM 'CuenNue' INTO CURSOR curTemporal
USE IN SELECT ('CuenNue')

****** Si pregunto por dbf() me devuelve CueNue !!!!

*!* Añadir la cuenta predeterminada
IF _TALLY <> 0
USE IN SELECT ('CurTodasCuentas')
****** Si pregunto por dbf() me devuelve cadena vacía

USE DBF("curtemporal") IN 0 AGAIN ALIAS curTodasCuentas
USE IN SELECT ('CurTemporal')

****** Si pregunto por dbf() me devuelve CueNue !!!!

IF USED("curTodasCuentas")
SELECT ('CurTodasCuentas')
INSERT INTO 'CurTodasCuentas' (cuenta, cuennueiD) VALUES
('Predeterminada', 0)

****** Si pregunto por dbf() me devuelve CueNue !!!! Se agrega al cursor y


a
la tabla CuenNue !!!!!

endif
*etc etc
ENDIF


Este código lo tengo en otro lugar de la aplicación y funciona bien; pero
ahora que me he detenido a ver resulta que DBF() está apuntando a un TMP


por
tanto no me afecta.

Debe haber algún problema de tratamiento de cursores y sus tablas de


origen,
¿alguien lo ve?


Saludos,

Ana
www.amby.net



Respuesta Responder a este mensaje
#2 Luis María Guayán
27/04/2005 - 14:04 | Informe spam
Ana, como te indica Carlos con VFP6 puedes utilizar NOFILTER para forzar un
archivo físico. Otro truco es añadir una columna adicional al SELECT como
por ejemplo:

SELECT MiTabla.*, .T. AS Nada FROM MiTabla

Mas info en la MSKB (aparte de que esta especificado en la ayuda de VFP):

http://support.microsoft.com/kb/155928

Luis María Guayán
Tucumán, Argentina
________________________________
SysOp de www.PortalFox.com
Microsoft Visual FoxPro MVP
________________________________
La palabra imposible solo figura
en el diccionario de los tontos

"Ana María Bisbé York" escribió en el mensaje
news:
Hola:

Esto debe ser de primaria; pero la verdad es que no lo veo. A ver si


alguien
encuentra el fallo. VFP 6.0.
Intento que todo esté cerrado y que el INSERT INTO se realice en el cursor
CurTodasCuentas; pero se hace en CuenNue.
Casi todas las instrucciones USE IN las he puesto luego para forzar que


todo
este bien cerrado.

*!* Cargamos el cursor con las cuentas nuevas definidas en CuenNue
USE IN SELECT ('CurTemporal')
SELECT cuenta ,cuennueiD FROM 'CuenNue' INTO CURSOR curTemporal
USE IN SELECT ('CuenNue')

****** Si pregunto por dbf() me devuelve CueNue !!!!

*!* Añadir la cuenta predeterminada
IF _TALLY <> 0
USE IN SELECT ('CurTodasCuentas')
****** Si pregunto por dbf() me devuelve cadena vacía

USE DBF("curtemporal") IN 0 AGAIN ALIAS curTodasCuentas
USE IN SELECT ('CurTemporal')

****** Si pregunto por dbf() me devuelve CueNue !!!!

IF USED("curTodasCuentas")
SELECT ('CurTodasCuentas')
INSERT INTO 'CurTodasCuentas' (cuenta, cuennueiD) VALUES
('Predeterminada', 0)

****** Si pregunto por dbf() me devuelve CueNue !!!! Se agrega al cursor y


a
la tabla CuenNue !!!!!

endif
*etc etc
ENDIF


Este código lo tengo en otro lugar de la aplicación y funciona bien; pero
ahora que me he detenido a ver resulta que DBF() está apuntando a un TMP


por
tanto no me afecta.

Debe haber algún problema de tratamiento de cursores y sus tablas de


origen,
¿alguien lo ve?


Saludos,

Ana
www.amby.net


Respuesta Responder a este mensaje
#3 Nacho
27/04/2005 - 14:22 | Informe spam
Ana, no sabia que esa cláusula estaba en la versión 6, por lo cual me uno a
lo que comenta Carlos, como la solución mas "limpia".

Salu2
Nacho

"Ana María Bisbé York" escribió en el mensaje
news:
Hola:

Esto debe ser de primaria; pero la verdad es que no lo veo. A ver si
alguien
encuentra el fallo. VFP 6.0.
Intento que todo esté cerrado y que el INSERT INTO se realice en el cursor
CurTodasCuentas; pero se hace en CuenNue.
Casi todas las instrucciones USE IN las he puesto luego para forzar que
todo
este bien cerrado.

*!* Cargamos el cursor con las cuentas nuevas definidas en CuenNue
USE IN SELECT ('CurTemporal')
SELECT cuenta ,cuennueiD FROM 'CuenNue' INTO CURSOR curTemporal
USE IN SELECT ('CuenNue')

****** Si pregunto por dbf() me devuelve CueNue !!!!

*!* Añadir la cuenta predeterminada
IF _TALLY <> 0
USE IN SELECT ('CurTodasCuentas')
****** Si pregunto por dbf() me devuelve cadena vacía

USE DBF("curtemporal") IN 0 AGAIN ALIAS curTodasCuentas
USE IN SELECT ('CurTemporal')

****** Si pregunto por dbf() me devuelve CueNue !!!!

IF USED("curTodasCuentas")
SELECT ('CurTodasCuentas')
INSERT INTO 'CurTodasCuentas' (cuenta, cuennueiD) VALUES
('Predeterminada', 0)

****** Si pregunto por dbf() me devuelve CueNue !!!! Se agrega al cursor y
a
la tabla CuenNue !!!!!

endif
*etc etc
ENDIF


Este código lo tengo en otro lugar de la aplicación y funciona bien; pero
ahora que me he detenido a ver resulta que DBF() está apuntando a un TMP
por
tanto no me afecta.

Debe haber algún problema de tratamiento de cursores y sus tablas de
origen,
¿alguien lo ve?


Saludos,

Ana
www.amby.net


Respuesta Responder a este mensaje
#4 Ana María Bisbé York
28/04/2005 - 07:45 | Informe spam
Hola Carlos:

Pues nunca he utilizado este modificador :$.

Aquí, de lo que se trata es de no tocar ni afectar la tabla original, que no
se actualice. Y se logra con NOFILTER porque crea una temporal y "trabaja"
sobre ella y no sobre la original. ¡¡ Qué bien !! Y qué limpio.

Muchísimas gracias Carlos !!!!!!!


Saludos,

Ana
www.amby.net

"Carlos Yohn Zubiria" escribió en el
mensaje news:
Ana,
Se te ha olvidado la importancia del modificador 'nofilter'. Si no lo


pones
y la consulta es sencilla, no crea un cursor temporal sino que filtra la
tabla origen.
Añade ese modificador y todo ok.

Saludos,
A.G.P. (Aplicaciones de Gestión y Productividad)
Las Arenas - Vizcaya - España

"Ana María Bisbé York" escribió en el mensaje
news:
> Hola:
>
> Esto debe ser de primaria; pero la verdad es que no lo veo. A ver si
alguien
> encuentra el fallo. VFP 6.0.
> Intento que todo esté cerrado y que el INSERT INTO se realice en el


cursor
> CurTodasCuentas; pero se hace en CuenNue.
> Casi todas las instrucciones USE IN las he puesto luego para forzar que
todo
> este bien cerrado.
>
> *!* Cargamos el cursor con las cuentas nuevas definidas en CuenNue
> USE IN SELECT ('CurTemporal')
> SELECT cuenta ,cuennueiD FROM 'CuenNue' INTO CURSOR curTemporal
> USE IN SELECT ('CuenNue')
>
> ****** Si pregunto por dbf() me devuelve CueNue !!!!
>
> *!* Añadir la cuenta predeterminada
> IF _TALLY <> 0
> USE IN SELECT ('CurTodasCuentas')
> ****** Si pregunto por dbf() me devuelve cadena vacía
>
> USE DBF("curtemporal") IN 0 AGAIN ALIAS curTodasCuentas
> USE IN SELECT ('CurTemporal')
>
> ****** Si pregunto por dbf() me devuelve CueNue !!!!
>
> IF USED("curTodasCuentas")
> SELECT ('CurTodasCuentas')
> INSERT INTO 'CurTodasCuentas' (cuenta, cuennueiD) VALUES
> ('Predeterminada', 0)
>
> ****** Si pregunto por dbf() me devuelve CueNue !!!! Se agrega al cursor


y
a
> la tabla CuenNue !!!!!
>
> endif
> *etc etc
> ENDIF
>
>
> Este código lo tengo en otro lugar de la aplicación y funciona bien;


pero
> ahora que me he detenido a ver resulta que DBF() está apuntando a un TMP
por
> tanto no me afecta.
>
> Debe haber algún problema de tratamiento de cursores y sus tablas de
origen,
> ¿alguien lo ve?
>
>
> Saludos,
>
> Ana
> www.amby.net
>
>
>



Respuesta Responder a este mensaje
#5 Ana María Bisbé York
28/04/2005 - 07:46 | Informe spam
Sí LuisMa, Gracias, nunca me había fijado en esa claúsula, muy útil y muy
sencillo de solucionar.


Saludos,

Ana
www.amby.net


"Luis María Guayán" escribió en el mensaje
news:
Ana, como te indica Carlos con VFP6 puedes utilizar NOFILTER para forzar


un
archivo físico. Otro truco es añadir una columna adicional al SELECT como
por ejemplo:

SELECT MiTabla.*, .T. AS Nada FROM MiTabla

Mas info en la MSKB (aparte de que esta especificado en la ayuda de VFP):

http://support.microsoft.com/kb/155928

Luis María Guayán
Tucumán, Argentina
________________________________
SysOp de www.PortalFox.com
Microsoft Visual FoxPro MVP
________________________________
La palabra imposible solo figura
en el diccionario de los tontos

"Ana María Bisbé York" escribió en el mensaje
news:
> Hola:
>
> Esto debe ser de primaria; pero la verdad es que no lo veo. A ver si
alguien
> encuentra el fallo. VFP 6.0.
> Intento que todo esté cerrado y que el INSERT INTO se realice en el


cursor
> CurTodasCuentas; pero se hace en CuenNue.
> Casi todas las instrucciones USE IN las he puesto luego para forzar que
todo
> este bien cerrado.
>
> *!* Cargamos el cursor con las cuentas nuevas definidas en CuenNue
> USE IN SELECT ('CurTemporal')
> SELECT cuenta ,cuennueiD FROM 'CuenNue' INTO CURSOR curTemporal
> USE IN SELECT ('CuenNue')
>
> ****** Si pregunto por dbf() me devuelve CueNue !!!!
>
> *!* Añadir la cuenta predeterminada
> IF _TALLY <> 0
> USE IN SELECT ('CurTodasCuentas')
> ****** Si pregunto por dbf() me devuelve cadena vacía
>
> USE DBF("curtemporal") IN 0 AGAIN ALIAS curTodasCuentas
> USE IN SELECT ('CurTemporal')
>
> ****** Si pregunto por dbf() me devuelve CueNue !!!!
>
> IF USED("curTodasCuentas")
> SELECT ('CurTodasCuentas')
> INSERT INTO 'CurTodasCuentas' (cuenta, cuennueiD) VALUES
> ('Predeterminada', 0)
>
> ****** Si pregunto por dbf() me devuelve CueNue !!!! Se agrega al cursor


y
a
> la tabla CuenNue !!!!!
>
> endif
> *etc etc
> ENDIF
>
>
> Este código lo tengo en otro lugar de la aplicación y funciona bien;


pero
> ahora que me he detenido a ver resulta que DBF() está apuntando a un TMP
por
> tanto no me afecta.
>
> Debe haber algún problema de tratamiento de cursores y sus tablas de
origen,
> ¿alguien lo ve?
>
>
> Saludos,
>
> Ana
> www.amby.net
>
>


Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida