Programación en castellano
Inicio > Foros > Visual FoxPro > Validar datos con tablas recorriendo registros
-Foros de debate

Visual FoxPro
Lista de foros | Lista de mensajes de este foro

Privacidad: Recuerde que la información escrita en los foros de programación es 100% pública y que su ip será registrada asociada a su mensaje. Si encuentra un mensaje fuera de lugar, por favor, notifiquelo para su revisión y eliminación.

Validar datos con tablas recorriendo registros
Enviado por difenbachia el día 11 de julio de 2008

Hola amigos, tengo una rutina en una aplicacion que es la que tiene que validar los datos ingresados. Estos son definidos por NUMEROBO
y los campos son lot,num1,num2,num3
todo es texto y los num son de dos cifras: 01 02 03 87 54 etc...
el campo lot son letras: pueden ser desde 1 hasta 9 letras

Tengo ademas dos bases dbf: GUARDABO Y FADABO
CADA UNA CON CAMPOS lotes,num1,num2,num3

LA RUTINA SERIA, UNA VEZ INGRESADOS LOS DATOS LA SIGUIENTE
es para controlar repeticiones teniendo en cuenta que en numeros por ejemplo: num1=01 num2=02 num3=01
si ingreso num1=02 num2=01 num3=01 eso es repetido...

primero reviso en GUARDABO y luego en FADABO

Comparo el campo lot con el mismo campo en la primer tabla, recorro los registros hasta que encuentro una repeticion es decir, si ingrese en NUMEROBO.lot AB y encuentro un registro que contiene alguna de esas letras continuo, de lo contrario busco en el siguiente registro.

Si continuo reviso los numeros, es decir num1 num2 y num3
Si hay repeticion salgo e informo que no se puede ingresar.
si no hay repeticion continuo con la segunda tabla FADABO y hago lo mismo, si hay repeticion informo y si no entonces si dejo ingresar el dato.

Ya puedo cargar e ingresar el dato, pero en la rutina de control de repeticiones me sale error. Yo hice esto, a ver si me pueden decir cual es el problema que tiene mi rutina o como hacerla mejor.
GRACIAS AL QUE PUEDA AYUDARME SE LO AGRADECERE MUCHO!!!!


PROCEDURE verirepe1
SELECT numerobo
IF RECCOUNT() > 0
GOTO TOP
proceso = 0
ON ERROR GOTO BOTTOM
SELECT 9
USE GUARDABO
GOTO TOP
IF RECCOUNT('GUARDABO') = 0
DO verirepe2
ENDIF
IF proceso = 1
RETURN
ENDIF


DO WHILE .NOT. EOF()

igual = 0

IF punto <> '1'
SKIP
LOOP
ENDIF

*IF LEN(ALLTRIM(lotes))<> LEN(ALLTRIM(lote))
*SKIP
*ENDIF


FOR L1 = 1 TO LEN(ALLTRIM(lote))

FOR L2 = 1 TO LEN(ALLTRIM(lotes))
IF SUBSTR(lote, L1, 1) = SUBSTR(loterias, L2, 1)
igual = igual + 1
ELSE
ENDIF
ENDFOR

ENDFOR

ENDIF


IF igual > 0

numin = 0

nba1 = GUARDABO.num1
nba2 = GUARDABO.num2
nba3 = GUARDABO.num3

IF numerobo.num1 = nba1
nba1 = '**'
numin = numin + 1
ENDIF
IF numerobo.num1 = nba2 .AND. numin = 0
nba2 = '**'
numin = numin + 1
ENDIF
IF numerobo.num1 = nba3 .AND. numin = 0
nba3 = '**'
numin = numin + 1
ENDIF

IF numin < 1
SKIP
LOOP
ENDIF

IF numerobo.num2 = nba1 .AND. numin = 1
nba1 = '**'
numin = numin + 1
ENDIF
IF numerobo.num2 = nba2 .AND. numin = 1
nba2 = '**'
numin = numin + 1
ENDIF
IF numerobo.num2 = nba3 .AND. numin = 1
nba3 = '**'
numin = numin + 1
ENDIF

IF numin < 2
SKIP
ENDIF

IF numerobo.num3 = nba1 .AND. numin = 2
nba1 = '**'
numin = numin + 1
ENDIF
IF numerobo.num3 = nba2 .AND. numin = 2
nba2 = '**'
numin = numin + 1
ENDIF
IF numerobo.num3 = nba3 .AND. numin = 2
nba3 = '**'
numin = numin + 1
ENDIF

IF numin = 3
WAIT WINDOW ' NO PUEDE CARGAR REPETIDAS.'
SELECT 9
USE
RETURN TO cargabo1
ENDIF

ELSE
SKIP
ENDIF
ENDDO

DO verirepe2
RETURN
*

PROCEDURE verirepe2
SELECT 9
USE
ON ERROR GOTO BOTTOM
SELECT 3
USE 'FADABO'
GOTO TOP
proceso = 1
IF RECCOUNT('FADABO') = 0
SELECT 3
USE
RETURN
ENDIF


DO WHILE .NOT. EOF()

igual = 0

IF punto <> '1'
SKIP
ENDIF

*IF LEN(ALLTRIM(lotes))<> LEN(ALLTRIM(lote))
*SKIP
*ENDIF


FOR L1 = 1 TO LEN(ALLTRIM(lote))

FOR L2 = 1 TO LEN(ALLTRIM(lotes))
IF SUBSTR(lote, L1, 1) = SUBSTR(lotes, L2, 1)
igual = igual + 1
ELSE
ENDIF
ENDFOR

ENDFOR

ENDIF


IF igual > 0

numin = 0

nba1 = FADABO.num1
nba2 = FADABO.num2
nba3 = FADABO.num3

IF numerobo.num1 = nba1
nba1 = '**'
numin = numin + 1
ENDIF
IF numerobo.num1 = nba2 .AND. numin = 0
nba2 = '**'
numin = numin + 1
ENDIF
IF numerobo.num1 = nba3 .AND. numin = 0
nba3 = '**'
numin = numin + 1
ENDIF

IF numin < 1
SKIP
ENDIF

IF numerobo.num2 = nba1 .AND. numin = 1
nba1 = '**'
numin = numin + 1
ENDIF
IF numerobo.num2 = nba2 .AND. numin = 1
nba2 = '**'
numin = numin + 1
ENDIF
IF numerobo.num2 = nba3 .AND. numin = 1
nba3 = '**'
numin = numin + 1
ENDIF

IF numin < 2
SKIP
ENDIF

IF numerobo.num3 = nba1 .AND. numin = 2
nba1 = '**'
numin = numin + 1
ENDIF
IF numerobo.num3 = nba2 .AND. numin = 2
nba2 = '**'
numin = numin + 1
ENDIF
IF numerobo.num3 = nba3 .AND. numin = 2
nba3 = '**'
numin = numin + 1
ENDIF

IF numin = 3

WAIT WINDOW ' NO PUEDE CARGAR REPETIDAS.'
SELECT 3
USE
RETURN TO cargabo1
ENDIF

ELSE
SKIP
ENDIF

ENDDO
SELECT 3
USE
RETURN
*

 

Tienda
Patrocinados
 

Copyright © 1999-2007 Programación en castellano. Todos los derechos reservados.
Formulario de Contacto - Datos legales - Publicidad
Mantenida por: Claudio y Dani.

Hospedaje web y servidores dedicados linux por Ferca Network

red internet: musica mp3 | amor | hospedaje web linux | registro de dominios | servidores dedicados
más internet: comprar | gratis | posicionamiento en buscadores | decoración libre | gifs animados