Segun veo el codigo el APPEND FROM se hace siempre, se haya hecho el PACK de la tabla o no, se haya abierto la tabla en forma exclusiva o compartida. De lo cual deduzco que son cosas independientes una de la otra, entonces lo que haria es una funcion o metodo que se encargue del pack y despues el append from debajo. Algo asi:
= PackeaLaTabla("Tabla_Destino")
SELECT Tabla_destino
APPEND FROM DBF("Cursor_Origen)
USE IN Tabla_Destino
De hecho PackeaLaTabla() podria tirar una excepcion, que en el codigo que presente no es atrapada y tenes la posiblidad de hacer algo.
Perdon, pero esto no tiene nada que ver con el Try-Catch, es solo ordenar un cacho el codigo.
Un Gufazo para todos,
Davo.
On 10/18/06,
Pata del Santo <[EMAIL PROTECTED]> wrote:
Yo lo haría más breve:*nos aseguramos de cerrar la tabla si este usuario la tuviera abiertaIF USED("Tabla_destino")USE IN Tabla_destinoENDIF*buscamos una zona libreSELECT 0TRY*si nadie la tiene abierta, entonces la abro exclusiva para hacer un PACKUSE Tabla_destino EXCLUSIVEPACKCATCH*esto sucederá siempre que cualquier otro usuario tenga la tabla abierta (sea EXCLUSIVE o SHARED)*si da un error simplemente no hago nada (aunque no pude hacer el PACK)ENDTRY*ahora la vuelvo a abrir compartida, para que otros usuarios tengan accesoUSE Tabla_destino SHARED*agrego los registrosAPPEND FROM DBF("Cursor_Origen")*cierro la tablaUSEPata.
De: [email protected] [mailto: [email protected]] En nombre de Hernando Ferreira
Enviado el: miércoles, 18 de octubre de 2006 15:15
Para: GUFA List Member
Asunto: [GUFA] Falla Append from en MultiusuarioNecesito 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_destino
SaludosNando
Preguntá. Respondé. Descubrí.
Todo lo que querías saber, y lo que ni imaginabas,
está en Yahoo! Respuestas (Beta).
Probalo ya!
--
=======================
David Brunstein
Java/PB/VFP Developer
Winnipeg, MB
Canada
Before I speak, I have something important to say.
Antes de dar mi discurso, tengo algo importante que decir.
Antes de dar meu discurso, tenho algo importante para dizer.
G.M.
