Hola, Nando.
¿Para qué te sirve este Try/Catch? Si falla el Try lo que hacés en el Catch no cierra.
Estás abriendo con AGAIN la tabla si no estaba abierta (caso en que el AGAIN está de más).
Además estás siguiendo la ejecución con la tabla abierta en modo Shared (asumo que el Set Exclusive está en OFF), o sea que tu requisito del Try no lo estás cumpliendo.
Para mi lo que deberías hacer es algo como:
Try
Use Tabla_destino IN 0 EXCLUSIVE
Use Tabla_destino IN 0 EXCLUSIVE
Catch to oEx
local oTuExcepcion as Exception
oTuExcepcion = NewObject( "Exception" )
oTuExcepcion.ErrorNo = 9999
oTuExcepcion.Message = "No se pudo acceder a la tabla para importar datos"
oTuExcepcion.UserValue = oEx
Throw oTuExcepcion
Endtry
Select Tabla_destino
PACK
APPEND FROM DBF("Cursor_Origen ")
Use in Tabla_destino
return
PACK
APPEND FROM DBF("Cursor_Origen ")
Use in Tabla_destino
return
O sea que si no lográs abrir la tabla en modo exclusivo, te vas (en este caso tirando la excepción para arriba, pero sino podrías prender un flag, al menos). La idea de un Try/Catch es que el Try es un contrato de precondición para el código que pueda haber debajo del EndTry. Si por alguna razón entrás al catch, salvo que puedas reestablecer esta precondición, no deberías seguir la ejecución.
Saludos,
MS
On 10/13/06, Nando <[EMAIL PROTECTED]> wrote:
Necesito anexar registros de un cursor, previo borrado de los ya existente en la tabla de destino por medio de una condicion, el tema es que funciona bien cuando nadie mas esta usando la tabla, pero en cuanto alguien tiene el uso de la tabla no agrega los registros, ni da error ni nada. De paso revean este trozo de codigo para sacarle un mejor fruto al try.. catch, que es la 1ra vez que lo uso...SELECT Tabla_destino
DELETE FOR num < 0TRY
USE IN Tabla_destino
SELECT 0
USE Tabla_destino IN 0 EXCLUSIVECATCHIF !USED("Tabla_destino")
USE Tabla_destino IN 0 AGAIN
ENDIFENDTRYIF ISEXCLUSIVE("Tabla_destino")
SELECT Tabla_destino
PACK
ENDIFSELECT Tabla_destino
APPEND FROM DBF("Cursor_Origen")
USE IN Tabla_destinoSaludosNando
--
Martín Salías
www.Salias.com.ar
Agile Alliance Member - Microsoft MVP
