Pregunta: | 27242 - CONTROLAR REGISTRO UNICO CON BUFER |
Autor: | Anibal Vega Diaz |
Saludos a todos y de antemano gracias por su colaboracion:
Estoy tratando de controlar, en un formulario, que el usuario no pueda ingresar registros repetidos, no puedo colocarle al campo un indice unico porque hay registros viejos, digitados antes de realizar la aplicacion que no se pueden eliminar y que estan repetidos, ademas no puedo utilizar un seek como normalmente lo hago porque en el momento de correrlo siempre encuentra el mismo registro que estoy ingresando, no se que hacer. Valga la aclaracion que soy un programador empirico y que hasta haora estoy comenzando y se muy poco. me pueden escribir a: [email protected] gracias. Anibal Vega. |
Respuesta: | joherick Nuñez |
mira yo tenia ese mismo problema pero lo solucione con lo siguiente
LOCAL gnRecno, gcName *// cargamos variable cuando damos click en guardar IF this.CardarVar=.T. gnRecno=recno() gcName=tabla.campo this.CardarVar=.F. ENDIF *// realizo busqueda lbuscar=SEEK(ALLTRIM(expresion a buscar)) *// regreso donde comense para no perdenos en la tabla GO gnRecno IF lbuscar=.T. && encontrado mostrar msg messagebox('Existe') this.CardarVarr=.T. RETURN .F. ELSE && no encontrado que deseas hacer ENDIF |
Respuesta: | Jaime Galarza |
BINGO, acabas de hacer la pregunta del millon, la busqueda, siempre en la busqueda de validación te va a dar positivo,PORQUE?, porque el VFP trabaja sobre buffers directos de la tabla, es decir que al poner el valor es como que ya estuviese en la tabla, que hacer?, almacenar el numero de registro en una variable, y mandarla a buscar, como la va a encontrar, hay que que comparar el numero de registro encontrado, si es igual a buscar el siguiente, y si no es el dato que estabas buscando, espero que te haya servido esta explicacion, chau |
Respuesta: | Jose Rolando Quintero Paz |
Mira
Por un lado quieres evitar los registros repetidos pero, por otro lado ya tienes muchos con esa caracteristica. en mi opinion debes usar la funcion Seek pero colocas el indice como Normal, posteriormente cuando la busqueda te de positiva, es decir que ya existe el registro, que lo muestre y te pregunte si quieres ingresar uno nuevo o no. Ej. select mitabla set order to vcod store 0 to codigo go top seek vcod if found() "mensaje" else append blank "grabar" |
Respuesta: | Jose Rolando Quintero Paz |
Mira
Por un lado quieres evitar los registros repetidos pero, por otro lado ya tienes muchos con esa caracteristica. en mi opinion debes usar la funcion Seek pero colocas el indice como Normal, posteriormente cuando la busqueda te de positiva, es decir que ya existe el registro, que lo muestre y te pregunte si quieres ingresar uno nuevo o no. Ej. select mitabla set order to vcod store 0 to codigo go top seek vcod if found() "mensaje" else append blank "grabar" |
Respuesta: | Jose Rolando Quintero Paz |
Mira
Por un lado quieres evitar los registros repetidos pero, por otro lado ya tienes muchos con esa caracteristica. en mi opinion debes usar la funcion Seek pero colocas el indice como Normal, posteriormente cuando la busqueda te de positiva, es decir que ya existe el registro, que lo muestre y te pregunte si quieres ingresar uno nuevo o no. Ej. select mitabla set order to vcod store 0 to codigo go top seek vcod if found() "mensaje" else append blank "grabar" |
Respuesta: | Jose Rolando Quintero Paz |
Mira
Por un lado quieres evitar los registros repetidos pero, por otro lado ya tienes muchos con esa caracteristica. en mi opinion debes usar la funcion Seek pero colocas el indice como Normal, posteriormente cuando la busqueda te de positiva, es decir que ya existe el registro, que lo muestre y te pregunte si quieres ingresar uno nuevo con el mismo numero o no. Ej. select mitabla set order to vcod store 0 to codigo go top seek vcod if found() "mensaje" else append blank "grabar" Endif |