La Web del Programador: Comunidad de Programadores
 
    Pregunta:  17581 - PROBLEMAS AL ACTUALIZAR UNA VISTA REMOTA
Autor:  Raúl Antonio Mercado García
Tengo un formulario que tiene sesión privada de datos. En dicha sesión incluyo una vista remota cuyo origen de datos es a SQL SERVER 7.0, los campos claves de la vista remota para la actualización funcionan puesto que cuando abro dicha vista desde el Diseñador de Base de Datos en el modo examinar y agrego un registro, y luego lo cierro, este registro se añade en la Base de Datos del SQL Server. En mi formulario esta con Sistema de almacenamiento en bufer 5 (optimista a nivel de tabla). En el código del formulario agrego un registro a esta tabla con INSERT INTO, antes de emitir un tableupdate yo hago un brow para ver si se ha añadido realmente, y asi es, puesto que lo veo, luego cuando emito un tableupdate, el valor que me devuelve esta función es falso (es decir no guardó los datos). Me voy al SQL y no lo veo, no entiendo porque si todo está bien. Incluso desde el entorno de datos del formulario, yo pruebo con añadir un registro a dicha vista, y llega a actualizar a la base de datos de SQL. SI alguien me ayuda, estaré muy agradecido.

  Respuesta:  Jose Samper
Lo primero que te recomiendo es que uses el buffers adecuado, Ej: buffers 3 para tablas de encabezados y buffers 5 para tablas de renglones, me explico en un sistema de facturación usa buffers 3 para el encabezado de la factura y buffers 5 para la tabla de los renglones.
lo segundo SQL no acepta campòs nulos, verifica bien esa parte
lo tercero, cuando hagas el tableupdate halz de la siguiente manera

if !tableupdate(**,.f.,'tabla')
IF AERROR(terror) > 0
IF (terror[1] = 1526 .AND. terror[5] = 2627)
todos los errores que reporta sql en fox tienen esta estructura (cuando manejas sql terror[1] tiene el numero 1526 y en terror[5] reportan el error de sql, en terror[2] tienes la causa

eNDIF
endif
donde ** es .t. para tablas buffers 5 y .f. para tablas buffers 3