La Web del Programador: Comunidad de Programadores
 
    Pregunta:  54767 - USO DEL BUFFERING
Autor:  Antonio Gutierrez
hola lei en la web del programador, un favor me puede ayudar en lo siguiente:
Tengo tablas nuevas sin registro alguno (0 registro)

form INI
CLOSE DATABASES
DO directorio
SET MULTILOCKS ON
OPEN DATABASE distro shared
USE vendedor shared
=CURSORSETPROP(\'buffering\',5)

BOTON NUEVO
APPEND BLANK
with thisform
.setall(\'enabled\',.t.,\'xtexto\')
.setall(\'enabled\',.t.,\'xspinner\')
.txtvendedor.setfocus
.edtdireccion.enabled=.t.
.txtfecha.value=DATE()
.text1.enabled=.f.
.list1.enabled=.f.
.command1.enabled=.f.
.command2.enabled=.t.
.command3.enabled=.t.
ENDWITH

BOTON GRABAR
=TABLEUPDATE(.t.)
******************************************************************
Los controles que estan en el formulario lo arrastre mediante entorno de datos:
TXTIDEN
propiedades
controlsource= vendedor.idven

Y asi sucesivo todos los controles, lo que sucede cuando aplico nuevo los controles siguen bloqueado, por que no tiene ningun registro Por favor una me envias un ejemplo del uso correcto de los buffer. Espero tu ayuda pronto.

  Respuesta:  Misael Rocha
mira tienes que hacer la tabla y que tenga un indice ya sea principal o candidato asi me funciono

select "aqui va el nombre de la tabla"
set order to "nombre del valor indice"
go bottom "va al final de la tabla seleccionada"
Insert Into "tabla(nombre del indice ejemplo ---> datos(id_clave)";
value(id_clave + 1) donde id_clave es el campo indice + 1, para esto el valor de id_clave debe de ser numerico

thisform.refresh
eso es para agregar un nuevo dato
y para guardarlo en otro boton seria

TABLEUPDATE(.T.)
thisform.refresh

para esto en el formulario en el init debes de poner
SET MULTILOCKS ON
CURSORSETPROP("Buffering", 5,"datos")

SET DELETED ON
SET EXACT ON

bueno y para cancelar en otro boton pones
TABLEREVERT(.T.)
THISFORM.REFRESH

espero que esto te halla ayudado en algo

ya tu habilitas o deshabilitas lo textbox o command button pero el codigo a mi me funciona bien
si tienes alguna duda comunicate conmigo