Validar datos en tabla
Hola
Quiero que no me acepte registros duplicados con el mismo año lectivo. Por ejemplo
Numero Año Lectivo
00000001 2012
00000001 2012
1 Respuesta
Debes crear un indice único o principal en la tabla que seria un indice compuesto año+código, y antes de adicionar el registro y si al indice le pusiste el nombre anocodigo buscas así:
Si el año el carácter:
lcCadena=año+código
si es numerico
lcCadena=ALLT(STR(año))+codigo
nFind=Seek(lcCadena,"mitabla","anocodigo")
If nFind
=MessageBox("Registro ya existe",64,"Error")
Return
Endif
Tengo en la tabla Inscripción un indice normal y con nombre de indice numero y
resulta que la tabla debe de aceptar código repetidos, pero no debe de aceptar años lectivos repetidos.
Supongo que el código sería diferente.
Debes crear un indice principal o único compuesto por año+código:
USE inscripción
Si es caracter
INDEX ON añolectivo+código TAG anolec UNIQUE
Si es numérico
INDEX ON ALLTRIM(STR(añolectivo, 4))+código TAG anolec UNIQUE
Y de allí si aplicas el algoritmo de arriba.
DEbe de aceptar los registros siguientes:
Numero Año Lectivo
00000001 2012
00000002 2012
00000003 2012
No debe de Aceptar registros:
Numero Año LEctivo
00000001 2011
00000001 2011
00000002 2012
00000002 2012
Debe de Aceptar:
00000001 2009
00000002 2009
00000001 2010
00000002 2010
00000001 2011
00000002 2011
00000001 2012
00000002 2012
1. El indices lo debes crear por fuera del formulario, en una rutina reindexar o en la ventana de comandos.
2. Ya te había dicho que el cursor lo cierras con USE IN micursor.
Pues obviamente debes declarar esa variable antes de usarla en tu búsqueda, porque no miras todo lo que yo te he dicho arriba, se un poco mas recursivo.
Pero estas buscando en el indice NIE, debes crear un indice aparte compuesto y único con el INDEX que se llame LECNIE por ejemplo, buscar en este indice
nFind=Seek(cCadena,"Inscripción","LECNIE")
ESte es es el código que tengo
LOCAL cCadena
cCadena = 0
SELECT Inscripción
cCadena=ALLTRIM(STR(Lec))+ Nie
nFind=Seek(cCadena,"Inscripción","Nie")
If nFind
=MessageBox("Registro ya existe",64,"Error")
Return
Endif
Pero siempre me lo acepta.
LOCAL cCadena
cCadena = 0
SELECT Inscripción
cCadena=ALLTRIM(STR(Lec))+ Nie
nFind=Seek(cCadena,"Inscripción","anolec")
If nFind
=MessageBox("Registro ya existe",64,"Error")
Return
Endif
anolec: Es el indice compuesto que he creado con las instrucciones que me diste.
No me muestra el mensaje cuando lo pruebo.
- Compartir respuesta