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
 

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



Preguntas similares