Hola Luis Mejia! Un placer saludarte. Espero poder ayudarte. Recorda siempre dirigir las preguntas a un experto en visual foxpro. A veces las preguntas quedan diassss en el tablon general y nadie las mira.
Segun leo y lo que logro comprender... haces una consulta de tus datos y los cargas en un cursor temporal "clientes". Luego insertas un nuevo registro y deseas ver ese registro recien ingresado. ¿Es asi? Corrigeme si me equivoco.
De ser asi, el problema radica en que una vez insertado el registro, debes regenerar la consulta otra vez para que el cursor clientes "levante" el nuevo dato.
En mi caso, yo utilizo el motor de BD de FIREBIRD. Y es igual.
En mi humilde opinion, yo t aconsejaria algunas cositas... que no creo que esten de mas mencionar:
1 - Para realizar tus procesos (dentro de un form) yo te aconsejaria crear tus propios metodos personalizados. Por ejemplo, cuando yo voy a hacer una consulta y voy a mostrar en un grid los datos de una tabla... voy al menu FORM (en modo de diseño del formulario) y escojo NEW METHOD y ahi creo un metodo llamado "cargardatos". Luego voy al metodo, en la pestaña method de la ventana de propiedades y al final esta cargardatos. Ahi escribo la consulta y el enlace al control grid. Si deseo regenerar 100 veces la consulta solo basta con llamar al metodo asi:
THISFORM. Cargardatos
Desde cualquier parte del form y se dispara el proceso.
Un tip extra: recorda que cada vez que se regenera una consulta, si usas un control grid para mostrar los datos... el control tiende a perder todo su formato y conexion con los campos del cursor. ¿Por qué? Al regenerar una consulta, la consulta actual se destruye y se crea inmediatamente una nueva, con el mismo nombre, pero con otros datos y volumen. Por tanto, el grid enlazado a dicho cursor o consulta, pierde su RecordSource o fuente de datos/registros y por tanto conlleva a este comportamiento. Para corregirlo, basta con agregar, antes de hacer la consulta, una linea que desprenda el grid de su fuente de datos...
THISFORM.Grid1.Recordsource = " "
**--Aca cargas la consulta
**--Aca volves a enlazar el grid con el cursor
THISFORM.Grid1.Recordsource = "tmpclientes"
**--Aca enlazas las columnas
THISFORM.Grid1.Refresh()
**--//
2 - Una vez, si te decides o no, por usar un metodo para cada proceso... t aconsejo que generes la consulta mejor en el evento INIT() del form. Si deseas usar un metodo, solo lo llamas asi:
THISFORM. Cargardatos
Desde el evento init y listo. Luego de insertar el registro... volves solo a llamar al metodo cargardatos y ya regeneras la consulta.
3 - Veo que usas "Select * from"! ¿Necesitas levantar todos los datos de la tabla? De ser asi.. ps ni modo. A veces a mi me toca! Pero en la medida de lo posible, trata de ejecutar tus consultas al servidor con la menor cantidad de datos posibles para que el transito de red no sea pesado y tu aplicacion no se atasque por largos periodos para generar consultas o actualizar datos.
4 - Los cursores donde se cargan los datos, en tu caso "clientes".. en mi humilde opinion, no deberian tener exactamente el mismo nombre de la tabla. Pueede que se de algun momento en que tengas un conflicto porque la tabla y el cursor se llaman igual. No obstante.. esto es mas concurrente cuando usas el motor nativo de VFP... pero ps para prevenir...! Yo acostumbro anteponer el prefijo temp o tmp o tp y luego el nombre de la fuente (tabla) para asi saber que datos se cargan.. quedaria asi: tmpclientes y ya se que es un cursor temporal.
5 - Por ultimo... segun leo, no se si usas forms ABM! Son realmente utiles y t aconsejo usarlos. Optimizan mejor los procesos y el trafico de datos en las redes. Asi.. designas que un form sea solo para consultass y otro para altas y bajas. Y otro para modificaciones. Cada proceso bien ordenado.
Bien.. solo son algunos tips que te pueden servir.
Proba insertar el registro e inmediatamente regenera la consulta y si el registro se grabo correctamente, debe aparecer cargado en el cursor clientes.
Un abrazo, desde Managua, capital de Nicaragua!
Ravenn :D :D