FoxPro/Visual FoxPro - Eliminar datos con que coincidan en otra tabla

 
Vista:
sin imagen de perfil
Val: 15
Ha disminuido 1 puesto en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

Eliminar datos con que coincidan en otra tabla

Publicado por Arturo (7 intervenciones) el 23/10/2018 15:31:38
Buenos dias, espero me puedan ayudar con esta consulta.

Tengo dos tablas, la principal se llama scanlist y la segunda curcheck, estas tienen en comun dos culumnas llamadas ponumber y line. quisiera saber si hay forma de marcar los datos para su eliminacion en la tabla scanlist con la condicion de que el ponumber y line existan en la tabla curcheck.

De antemano muchas gracias, espero puedan ayudarme.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 62
Ha aumentado su posición en 2 puestos en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

Eliminar datos con que coincidan en otra tabla

Publicado por Jose (129 intervenciones) el 23/10/2018 19:37:16
Buenas

sin son dbf indexalos por el campo pornumber luego en scanlist pones

dele for !seek(pornumber,'curcheck')

o replace (campo marca) for !seek(pornumber,'curcheck')
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 46
Ha aumentado 1 puesto en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

Eliminar datos con que coincidan en otra tabla

Publicado por Henry (16 intervenciones) el 24/10/2018 02:47:14
Hola Arturo:
Lo que yo hago es lo siguiente:
indexo la tabla scanlist por la suma de los campos ponnumber y line (asumo que son de tipo caracter) , en caso no lo sean, al indexar lo conviertes (usando str)
luego recorres la tabla curcheck
vas asignando a una variable la suma de los campos ponnumber y line
la buscas en la otra tabla (scanlist)
en caso la encuentre marcas la tabla scanlist
en caso no la encuentre sigues recorriendo al tabla curcheck hasta terminar

Lo que te indico llevado a codigo seria:

sele curcheck
scan
busca=ponnumber+line
sele scanlist
set order to ordenado
seek busca
if found()
delete
endif
sele curcheck
endscan

cualquier duda me avisas
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Leonardo Daniel A.
Val: 1.115
Oro
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

Eliminar datos con que coincidan en otra tabla

Publicado por Leonardo Daniel A. (499 intervenciones) el 24/10/2018 22:51:16
Hola, es mucho mas facil con SQL

1
2
3
DELETE scanlist ;
FROM scanlist ;
INNER JOIN curcheck ON scanlist.ponumber = curcheck.ponumber AND scanlist.line = curcheck.line


o puedes usar

1
2
DELETE FROM scanlist ;
WHERE EXISTS( SELECT 1 FROM curcheck Where scanlist.ponumber = curcheck.ponumber AND scanlist.line = curcheck.line)


esta otra es para cuando solo buscas un campo

1
2
DELETE FROM Table1 ;
WHERE id IN (SELECT id FROM Table2)


no se si funcione haciendo un

1
2
DELETE FROM Table1 ;
WHERE campo1+campo2 IN (SELECT campo1+campo2 FROM Table2)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar