FoxPro/Visual FoxPro - Problema con claves duplicadas

 
Vista:

Problema con claves duplicadas

Publicado por Ángel Isorna (135 intervenciones) el 08/05/2005 12:49:44
Hola a todos:

Tengo una tabla con una clave principal compuesta, str(numero,8)+dtos(fecha).
Tengo tb. un grid donde dejo cambiar la fecha. Es la columna 1. Intento en el text1 de la columna que tiene la fecha hacer cambios pero controlando no resulte del cambio una clave principal duplicada.
Lo he intentado en el evento valid y en otros. El problema es que intento capturar el error que debería soltar el gestor de la base de datos y con este error programar si dejo hacer el cambio o no, pero siempre devuelve error 0 (cero) y sin embargo después de dar error cero muestra el mensaje del gestor de la bbdd que se infringe la unicidad de índice.
¿Cómo puedo hacer para controlar que no cambien la fecha a una fecha que me genere una clave duplicada?

Muchas gracias por adelantado.
Ángel.
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:Problema con claves duplicadas

Publicado por Plinio (7841 intervenciones) el 08/05/2005 15:11:03
Puedes intentar buscarlo en la tabla con otra area abierta

USE tutabla AGAIN ALIAS otra_alias
SET EXAC ON
SET ORDER TO indice
SEEK str(numero,8)+dtos(fecha) &&Yo usaria ALLTRIM(STR(

IF FOUND()
****MENSAJE
NODEFAULT
RETURN .F.
ENDIF
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

no me funciona

Publicado por Ángel I. (135 intervenciones) el 08/05/2005 16:19:38
Hola Plinio:

Gracias por contestar. Lo que me dices lo he probado y no me va.
lo he probado en los eventos InteractiveChange, Valid, LosTfocus...de una manera u otra siempre ocurre que si te situas sobre un registro aunque no hagas modificaciones este siempre se encuentra a si mismo, está continuamente diciendo que clave duplicada.
¿No se te ocurre otra forma de solucionarlo?

Gracias por adelantado.
Ángel.
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:no me funciona

Publicado por Plinio (7841 intervenciones) el 08/05/2005 16:45:33
Si te fijas bien te dije que lo busques en la misma tabla pero que este abierta en otra alias para que no te mueva el puntero del area actual.
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:no me funciona

Publicado por Ángel I. (135 intervenciones) el 08/05/2005 17:20:58
Te explico un poco como lo tengo:

Evento load del form:

OPEN DATABASE &rutaa\controlp
USE &rutaa\produc IN 1 ALIAS produc &&tabla de produccion
USE &rutaa\modelos IN 2 ALIAS modelos
USE &rutaa\produc IN 3 AGAIN ALIAS produc2 &&tabla de producción2
*********************************************
Evento Valid del grid, column1-text1:

LOCAL wmodelo,wfecha

wmodelo=produc.modelo
wfecha=produc.fecha

SELECT produc2
SET ORDER TO modfecha
busca=(STR(wmodelo,8)+DTOS(wfecha))
SEEK(busca)
IF FOUND()
MESSAGEBOX("Error: Clave duplicada","Aviso")
NODEFAULT
RETURN .f.
ENDIF

SELECT produc
thisform.refresh

*******************************
Con este código al abrir el form se bloquea dando continuamente el mensage clave duplicada.Tengo que forzar cierrre con control+alt+sup
Gracias.
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:no me funciona

Publicado por Roman Suazo (2723 intervenciones) el 08/05/2005 18:46:17
No necesitas abrir la tabla en otra area ni usar el SEEK y FOUND con el INDEXSEEK te basta ya que no te mueve el puntero...todo esto si por lo menos tienes la version 6. Ojo, checa el SET EXACT que puede ser que este afectando tu busqueda...por lo demas no deben haber problemas.
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