Problema para cambiar registros en una aplicación creada con el programa Visual FoxPro

Hola experto tengo un problema que no puedo resolver solo se trata de colocar "N" a los clientes Nuevos que se atienden en este año solo para el 2008 y "C" a los clientes que se atienden más de una vez osea por primera vez en el año N y por segunda vez el mismo cliente es "C" gracias por su atención.

1 Respuesta

Respuesta
1
No explicas bien tu problema o tus requrimientos, pero por lo quedices puedes inetntar lo sig.
Agregas un campo nuevo en la tabla clientes de tipo carácter longitud1
luego cuando se atiena al cliente comprasa, haces:
if empty(tabla.campo_nuevo)
      replace tabla.campo_nuevo with 'N' in tabla
else
      replace tabla.campo_nuevo with 'C' in tabla
endif
solo ten cuidado que al agregar al cliente no agreges valor a el campo nuevo asi con el if, si esta bacio eso indica que se acaba de crear qy por lotanto es la primeraves que se atiende, si no esta bacio es que tiene una letra ya sea la N o la C , y por lo tanto ya se a atendido porlomenos una ves.
Espero eso te ayude, si no responde eso tu pregunta enviame más información y la estructura de tus tablas... sale suerte by
Hola experto gracias por contestar, tratare de explicarme mejor tengo dos tablas una borrador y otra principal con columnas (campos) iguales como "codigo_cliente" y "condicion", en la tabla borrador me están entregando con 1000 registros y en la tabla principal ya tengo alrededor de 2500 registros, lo que necesito es agregar los 1000 registros a la tabla principal, entonces verificar por medio del codigo_cliente si hay un codigo_cliente igual si fuera así entonces en condición coloco "C" de lo contrario serian "N" un ejemplo creo que así me dejare entender mejor, en la tabla borrador la columna condición esta vacía
tabla borrador tabla principal
codigo_cliente condición codigo_cliente condición
01 01 N
02 01 C
03 02 N
04 05 N
04 06 N
05 06 C
05 07 N
El resultado final en la tabla Principal agregando los registros seria así :
codigo_cliente              Condicion
01 N
01 C
01 C
02 N
02 C
03 N
04 N
04 C
05 N
05 C
05 C
06 N
06 C
07 N
Gracias amigo
Disculpa por contestar demasiado tarde.
Ojala te siva aun la respuesta
intenta esto , si el cursor resultante es lo que realmente quieres entonces  solo quedara guardar los cursores auxiliares y parte del recultado
SELECT codigo,RECNO() num_reg FROM borrador INTO CURSOR auxiliar
SELECT codigo, MAX(num_reg) num_reg FROM auxiliar GROUP BY 1 HAVING COUNT(codigo)>1 INTO CURSOR auxiliar
SELECT b.codigo, IIF(b.codigo = a.codigo AND RECNO() <> a.num_reg , 'C','N') obs FROM borrador b LEFT JOIN ;
auxiliar a ON b.codigo=a.codigo INTO CURSOR borrador2
** con lo anterior  creamos un cursor que nos muestra el codigo y que letra debe llevar (C o N) para ello me base en saber  que registro es el mas reciente y entonces a ese se le pone N los demas C
SELECT o.codigo, IIF(EMPTY((SELECT COUNT(codigo) FROM borrador b WHERE o.codigo = b.codigo)), o.obs, 'C') obs FROM original o;
UNION ALL ;
select * FROM borrador2
** con este select creamos el recultado final.che calo si asi es como lo quieres entonces solo has lo siguiente
SELECT o.codigo, IIF(EMPTY((SELECT COUNT(codigo) FROM borrador b WHERE o.codigo = b.codigo)), o.obs, 'C') obs , ;
RECNO() num_reg FROM original o INTO CURSOR ori2
UPDATE original SET original.obs = ori2.obs from ori2 WHERE RECNO() = ori2.num_reg
INSERT INTO original (codigo, obs) SELECT * FROM borrador2
prueba esto....... aunque te soy cincero, nose cuales sean tus requerimientos en el sistema, pero deberias checarlos, porque este metodo puede ser mas simple..............  checalo.......... cualquier duda estoy para ayudarte.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas