Append from

Hola experto tengo serios inconvenientes tengo dos tablas una borrador y otra principal ambas tablas tienen la misma estructura con campos codigo_cliente y condición la historia es esta tengo que trasladar la información de Borrador a Principal, Borrador tiene más o menos 1000 registros y Principal ya tiene al rededor de 3000 registros, la única condición es esta antes de agregar los registros y por medio del codigo_cliente verifica si el cliente existe en la tabla principal si existiera coloca "C" y si no existe coloco "N" para la siguiente vez si es el mismo codigo_cliente ya serian todas "C" después de colocar estas condiciones en la tabla borrador previamente buscado en la tabla principal recién agrego todos los registros a la tabla principal gracias experto

1 Respuesta

Respuesta
1
Pues no entiendo muy bien tu pregunta, pero te explico como puedes saber si un registro ya esta repetido en la otra tabla.
Supongo que tienes un índice en la Tabla Principal, uno para el campo Codigo_Cliente, suponiendo que es índice se llamara Codigo_Cliente, podrías hacer algo así:
SELECT Principal
    SET ORDER TO Codigo_Cliente
SELECT Borrador
FOR nCont = 1 TO RECCOUNT()
    GO nCont
    SELECT Principal
    IF SEEK(Borrador.Codigo_Cliente)
        REPLACE Borrador.Condicion WITH "C"
    ELSE
        REPLACE Borrador.Condicion WITH "N"
    ENDIF
    SELECT Borrador
ENDFOR
Pero mejor explicame un poco más de tu situación para decirte como lo puedes hacer.
Hola gracias ya verifique los resultados y si son lo correctos bueno solo hay registros que envía campos vacíos que corresponde a las "N" pero los voy a tomar como si fueran "N" pero si hay un pequeño problema, en el option1 tengo este código
use "c:\informes\borrador.dbf"
Y en el entorno de datos tengo las tablas "Borrador" y "principal" de las cuales llamo con la sentencia selec de acuerdo al código que me enviaste y causa conflicto cuando presiono el option1 muestra un mensaje de error que dice que el "archivo esta en uso" y cuando quito las tablas del entorno de datos no ejecuta el código que me enviaste muestra este mensaje "no se encuentra el alias "principal", como puedo hacer para que no salga este error
Si eso es porque para que funcione el código que te envié, ambas tablas tienen que estar abiertas, es decir, las debes ver en la ventana de Sesión de Datos. El primer error que te manda es debido a que quieres abrir una tabla que ya esta abierta. Ahí lo que puedes hacer es, o bien cerrar la tabla Borrador una vez que se ejecute el código antes mencionado, o abrirla desde el principio del programa y cambiar el código del "Option1" para quitarle la instrucción de que abra esa tabla ya que ya estaría abierta.
Gracias amigo ya no sale error y si lo cambia correctamente, pero estuve revisando la tabla borrador y en los registros que están en blanco que me suponía serian los Nuevos ("N") ubique dos codigo_cliente iguales pero en blanco debería ser uno "N" y el otro "C". En la tabla borrador el campo condición esta en blanco así debería de quedar como en este ejemplo después de ejecutar el código:
borrador                                             principal
codigo_cliente  condicion                    codigo_cliente   condicion    
01 01
01 01
02 03
02 03
02
03
La tabla principal debería de quedar así
codigo_cliente          condicion
01 N
01 C
01 C
01 C
02 N
02 C
03 N
03 C
03 C
Es que me parece que en ese caso, cada vez que encuentres un registro en la tabla Borrador que no este en la tabla Principal, debes agregarlo a ésta última, así la próxima vez que lo busque ya lo va a encontrar y por tanto, va a marcar todos los demás con la letra "C".
...
ELSE
    REPLACE Borrador.Condicion WITH "N"
    SELECT Borrador
        SCATTER TO aVar
    SELECT Principal
        GATHER FROM aVar
ENDIF
...
Aunque no entiendo muy bien tu situación, no entiendo que es lo que tratas de hacer, tal vez si me explicas un poco más para que haces todo esto te pueda ayudar con otro tipo de soluciones más convenientes.

Añade tu respuesta

Haz clic para o