Comparar código indexado en otra tabla

Hola experto necesito de su ayuda tengo dos tablas por ejemplo 2012 y 2013 necesito comparar el código del cliente de la tabla 2013 con 2012.

La idea es la siguiente:

Si el cliente lo registro en el 2013 y no se encuentra en el año 2012 entonces será Nuevo
Si el cliente se encuentra en el 2012 registrado, entonces para el 2013 será Reingresante
Si el cliente en el 2013 ya tiene un primer registro como Reingresante entonces la siguiente atención será Consultante.

Mi código es el siguiente pero no funciona

USE c:\2008
GO TOP
DO WHILE !EOF()
USE c:\2009
SET ORDER TO código && así se llama mi indice
SEEK código
IF FOUND()
USE c:\2009
REPLACE condición WITH "R"
ELSE
REPLACE condición WITH "N"
IF condición = "R"
REPLACE condición WITH "C"
ENDIF
ENDIF
Skip
ENDDO

2 Respuestas

Respuesta
1

Me parece que ese code es básico pero si funciona aunque esto de consultante no creo que este correcto por directamente le pondrías C daría lo mismo en vez de poner R

Hola la verdad ya intente de todo y nada que difícil es poner en la tabla actual si la condicion tiene una "N" la siguiente debe ser "R" y luego todas "C" no se que mas hacer ayuda por favor

SET safety off
SELECT 1
USE S2012
INDEX on CÓDIGO to CODI12
SET order to CODI12
GO TOP
SELECT 2
USE S2013
INDEX on CÓDIGO to CODI13
SET order to CODI13
GO TOP
SCAN
CÓDIGO=alltrim(S2013.CODIGO)
IF !seek(CÓDIGO, "s2012", "código")
REPLACE condición WITH "N"
ELSE
REPLACE condición WITH "R"
ENDIF
ENDSCAN

Tal vez si me explicas el objetivo de estos campos

Hola te explico amigo, es para realizar indicadores de atención, puedo verificar si un cliente en Nuevo, Reingresante o Consultante, por tal motivo, necesito evaluar si el cliente que ingresa atenderse este año ya se atendió en años anteriores por ejemplo.

Si el cliente se atendió en años anteriores le coloco en la tabla actual en condición la "R" de lo contrario si no lo encuentra es "N", ahora si el cliente ya tiene una "R" la siguiente sera "C" de este modo debería quedar.

Tabla2013 "cliente tiene 5 atenciones en diferente fechas y una atención en el 2012"

código=123456

condición=1"R" la siguiente son 4"C"

Siguiente ejemplo

Tabla2013 "cliente tiene 5 atenciones en diferente fechas pero es su primera atención "

Código=789

Condición=1"N", 1"R" las siguiente son 3"C"

Gracias amigo espero se pueda hacer algo

Me perdí disculpa

Respuesta
1

Prueba con este código, modifícalo a tu gusto y agrega lo que quieras, no lo he probado por falta de tiempo.

If !Used("2012")
Use 2012 In 0
EndIf
If !Used("2013")
Use 2013 In 0
EndIf
Select 2012
Go Top
Do While !Eof()
Select 2013
Locate For 2013.cliente = 2012.cliente
If Found()
REPLACE condición WITH "R"
else
REPLACE condición WITH "N"
EndIf
Select 2012
Skip
EndDo

Hola ya probé el código pero todos a todos los registros le pone "R" a pesar que existe códigos en el 2013 que están en el 2012

Mandame comprimido los archivos y veré que puedo hacer, este es mi email

[email protected]

Te los daré hasta el lunes, ahorita me voy de vacaciones de 3 días.

Hola ya envíe la información a tu correo y muchas gracias por tu tiempo

Ya te envio el codigo.

Código para comenzar tu día, ya probado con las bases que enviaste.

Select 1
USE S2012
Index on CÓDIGO to CODI12
set order to CODI12
GO TOP
Select 2
USE S2013
GO TOP
scan
código=alltrim(s2013.código)
if !seek(código, "s2012", "código")
REPLACE condición WITH "N"
else
REPLACE condición WITH "R"
Endif
Endscan
**** En una segunda vuelta haremos el reemplazo del Consultante
Select 2
go top
Do whil .not. eof()
m = código
d = fecha
skip
If m = código and d <> fecha
REPLACE condición WITH "C"
skip -1
else
loop
Endif
Skip
Enddo

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas