En este grupo En todos

Foro de Visual FoxPro

Modificar Registro desde Formulario

Luis
Licenciatura en informática universida...
Escrito por Luis Estrella
el 25/03/2011

Saludos Cordiales...


Estoy practicando con un pequeño Sistema de Registro de Estudiantes, todo funciona bien en su almacenamiento en la tabla, pero al intentar modificar un registro crea otro registro con la misma clave principal y me muestra solo el primer registro creado.


Para mejor entendimiento:

1ro. - Introducimos el codigo de estudiante: 001 y el nombre: Luis Estrella, Clic en Guardar.


2do. - Consultamos: 001, nos aparece los datos correctamente, modificamos Luis Estrella por Juan Perez y damos a guardar.


3ro. - Al consultar nuevamente con el codigo 001 nos visualiza a Luis Estrella, cuando voy a la tabla existen dos registros con el codigo 001 = Luis Estrella y Juan Perez.


El evento INIT del Formulario es este:


SET MULTILOCKS ON
SET TALK OFF
SET SAFETY OFF
SET EXCLUSIVE ON

USE estudiantes

SELECT estudiantes
IF FILE("estudiantes. Idx")
SET INDEX TO estudiantes
ELSE
INDEX ON matricula TO estudiantes
ENDIF


Si necesitan algo mas... Avisarme!

Luis Daniel Franco Perez
Analista de sistemas centro occidental...
Escrito por Luis Daniel Franco Perez
el 28/03/2011

Hola Luis, Si la tabla no tiene clave primaria debes crearla ( ejemplo codigo de estudiante como clave primaria ) luego al crear modificar o eliminar capturar posibles errores de actualizaciones, para que no te deje introducir un codigo duplicado. Eso por una parte la otra es necesario ver codigo de actualizacion.

1. Que haces cuando incluyes, modificas o eliminas y por favor dime si estas empezando con visual foxpro, te puedo dar informaciòn al respecto y codigo de ayuda que incluso trae visual foxpro solo hasta la version 5. 0 que es ideal para todo el mundo es decir para princiapiantes, intermedios y expertos. Luego de las otras versiones eliminaron esas ayudas, se que con la informacion que te estoy dando no resuelves, porque hace falta mas informacion.

Luis Franco

Luis Estrella
Licenciatura en informática universida...
Escrito por Luis Estrella
el 06/04/2011

Saludos Sr. Luis Daniel Franco Pérez


He hecho lo que me dice y con esto no se resolvió lo que deseaba solucionar.


Para solucionar esto, hice lo siguiente:


PRIMERO: En el evento "init" del formulario, inicialicé o declaré una variable como pública llamada "existe".


SEGUNDO: En el evento "lost focus" del código de estudiante, escribí:

SEEK thisform.matricula.Value
IF FOUND()
existe = 1
ELSE
existe = 0
ENDIF
thisform=txtnombre.Value.nombre
thisform=txtedad.value.edad



TERCERO: En el evento "click" del botón guardar, agregué:

IF existe = 0
APPEND BLANK
ENDIF


Si usted desea luego subo el archivo comprimido del programita.

Reynaldo Bustillos
Programacion de sistemas cenh-tecnico
Escrito por Reynaldo Bustillos
el 25/04/2011

Hola Luis

Por la descripcion que haces de tu proceso de guardar nuevo registro y guardar los cambios imagino que quizas estes usuando el mismo boton para ambos casos...

Cuando se añade un registro nuevo se utiliza Append Blank para crear un nuevo registro en blanco y luego el Replace para almacenar datos en cada campo...

Cuando deseas guardar los cambios modificados, ya no debes usar Appen Blank esto crearia un nuevo registro (imagino que eso es lo que te ocurre), solo usa Replace para reemplazar los datos antiguos por los nuevos.

Espero haber comprendido tu problema y que mi aporte te ayude.

Luis Estrella
Licenciatura en informática universida...
Escrito por Luis Estrella
el 26/04/2011

Reynaldo como dije anteriormente, resolví, haciendo lo siguiente:


PRIMERO: En el evento "init" del formulario, inicialicé o declaré una variable como pública llamada "existe".


SEGUNDO: En el evento "lost focus" del código de estudiante, escribí:

SEEK thisform.matricula.Value
IF FOUND()
existe = 1
ELSE
existe = 0
ENDIF
thisform=txtnombre.Value.nombre
thisform=txtedad.value.edad



TERCERO: En el evento "click" del botón guardar, agregué:

IF existe = 0
APPEND BLANK
ENDIF