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
 
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

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 < 0
TRY
 USE IN Tabla_destino
 SELECT 0
 USE Tabla_destino IN 0 EXCLUSIVE
CATCH 
 IF !USED("Tabla_destino")
      USE Tabla_destino IN 0 AGAIN
 ENDIF
ENDTRY
 
IF ISEXCLUSIVE("Tabla_destino")
     SELECT Tabla_destino
     PACK
ENDIF
 
SELECT Tabla_destino
APPEND FROM DBF("Cursor_Origen")

USE IN Tabla_destino
Saludos
Nando



--
Martín Salías
www.Salias.com.ar
Agile Alliance Member - Microsoft MVP

Responder a