FoxPro/Visual FoxPro - evitar duplicados

   
Vista:

evitar duplicados

Publicado por miguel (25 intervenciones) el 13/01/2009 17:05:04
hola atodos disculpen las molestias , necesito codigo para evitar ingresar a mi bd datos duplicados,

mi tabla se llama "planilla_asistencias" y quiero controlar mediante los campos fecha_planilla y id_func , en caso que encuentre que ya existen estos datos antes de hacer un insert que me salga un mensage de ya se registro, les agradezco de antemano su ayuda.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:evitar duplicados

Publicado por HELDER MARTINEZ (COUNDY)  (710 intervenciones) el 13/01/2009 21:47:39
Puedes crear una busqueda

public cId_func
cId_func = thisform.txtId.value

locate for alltrim(cId_func)==alltr(campoId_func)
if found()
messagebox("El dato ya existe", 0+16, "Error")
return .f.
else
insert y todo lo demas
endif

saludes
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:evitar duplicados

Publicado por alexcoinc (449 intervenciones) el 13/01/2009 22:28:14
Es mas eficiente con un indice y buscarlo con SEEK
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:evitar duplicados

Publicado por ANDRES CORTEZ M (162 intervenciones) el 14/01/2009 02:52:23
Hola Amigo

Es mas eficiente con select de sql y asi te olvidas de los indices, de esta manera te olvidas de los cortes de luz que corrompne los inidices, y los archivos y tener que reindexsar.

ejemplo.

vamos a suponer que la llave es el codigo y el archivo se llama maestro

select codigo,recno() from maestro;
where alltrim(thisform,text1.value)==codigo;
into cursor c_mae
select c_mae
go top
if bof()
SELECT MAESTRO
appen blank
REPLACE CODIGO WITH THISFORM.TEXT1.VALUE
else
wait windows "REGISTRO EXISTE"
SELECT MAESTRO
go c_mae.exp_2
ednif
REPLACE CAMPO1 WITH THISFORM.TEXT2.VALUE
REPLACE CAMPO2 WITH THISFORM.TEXT3.VALUE

espero te sirva.

ACM
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Mauricio Gonzalez

evitar duplicados

Publicado por Mauricio Gonzalez (1368 intervenciones) el 14/01/2009 13:43:02
estoy seguro que es mas seguro y con pocas lineas de codigo por esto es mejor usar el SEEK.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:evitar duplicados

Publicado por Ernesto Hernandez (4632 intervenciones) el 14/01/2009 18:06:04
probablemente mas practico como dice ANdres
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:evitar duplicados

Publicado por HELDER MARTINEZ (COUNDY)  (710 intervenciones) el 14/01/2009 16:08:42
PUEDES USAR SEEK TAMBIEN

public cId_func
cId_func = thisform.txtId.value

select tabla
seek alltrim(cId_func) order tag id_func
if found()
messagebox("El dato ya existe", 0+16, "Error")
return .f.
else
insert y todo lo demas
o
select tabla
append blank
replace campo with cId_func
endif

A veces en la vida es bueno hacer las cosas mas dificiles para aprender mas, pero en algunas circunstancias las cosas faciles nos ahorran tiempo y dinero.

Saludes
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar