Clipper/FiveWin - Eliminar registros coincidentes en dos bases diferentes con la misma estructura

 
Vista:

Eliminar registros coincidentes en dos bases diferentes con la misma estructura

Publicado por Koldo (10 intervenciones) el 22/06/2018 17:25:03
Hola, foreros.
Mi caso es el siguiente:
Tengo dos bases con diferente nombre, aunque con la misma estructura. Por ejemplo, BASE1 y BASE2. El campo principal en ambas bases se llama CODIGO.
Lo que quiero es eliminar de la BASE2 todos los registros que coincidan EXACTAMENTE con los de la BASE 1, es decir, si selecciono el primer registro de la BASE1 y existe el mismo CODIGO en la BASE2 (1ª condición) y además los contenidos de los diferentes campos son EXACTAMENTE IGUALES, marco para borrado el registro de la BASE2. Y así sucesivamente hasta llegar al último registro de la BASE1. Al finalizar bastaría con aplicar un PACK a la BASE2.
No sé si lo he explicado bien. Espero que lo hayáis entendido.
Gracias por anticipado. Koldo. ([email protected]).
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
Imágen de perfil de Milton
Val: 4
Ha mantenido su posición en Clipper/FiveWin (en relación al último mes)
Gráfica de Clipper/FiveWin

Eliminar registros coincidentes en dos bases diferentes con la misma estructura

Publicado por Milton (3 intervenciones) el 31/07/2018 15:22:17
Saludos, para un mejor repuesta siempre poner código para que todos los de la comunidad se beneficien.
Como no sé cómo esta estructurado, tú acomodas el código o lo mejoras:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
Sele 1
Use base1 shared
index on codigo to codigo
Sele 2
Use Base2 shared
index on codigo to codigo
 
 
//de aqui en adelante no se si mandas a buscar el código o estas sobre él.
Sele 1
 
 
//pregunto si quiero eliminarlo y doy 10 segundos para enllavar en modo exclusivo mi tabla
if bien='S'
    code := Codigo
    //Si vas a eliminar el registro de la tabla1, si no omiti este if
    If Registro(10)  //uso la función registro para enllavar tabla
       Delete   //marcamos el registro 
    EndIf
 
    //Elimnar registro de la tabla2
    Sele 2
     If Registro(10)   //uso la función registro para enllavar tabla
        delete all for codigo = code   //marcamos los regisros tabal 2
     EndIf
     Do aplicarborrado    //aplicamos el borrado estando en tabla 2
 
     Sele 1
     Do Aplicarborrado  //aplicamos borrado en tabla 1
 
EndIf
//Despues lo demás
 
 
 
// Esta función es para enllavar la tabla
Function Registro(nEspera)
Local lSiempre
 
nEspera:=Iif(nEspera==Nil,2,nEspera)
 
If Flock()
   Return .T.
EndIf
lSiempre:=(nEspera==0)
Do While (lSiempre .Or. (nEspera>0))
   If Flock()
      Return(.T.)
   EndIf
   Inkey(.5)
   nEspera-=.5
EndDo
Return(.F.)
 
 
//procedimiento aplicar borrado
Procedure Aplicarborrado
locate for delete()      //localizamos todos los registros marcados
if found()       //Si encuentra aplicacmos el pack
   segund=10
   do while segund>0
      if .not. neterr()
         set exclusive on
         pack
         exit
      endif
      inkey(.5)
      segund=segund-.5
   enddo
endif


Puedes visitar mi canal donde estoy desarrollando un Sistema de facturación e Inventario desde Cero, con C#2015.
Link de mi canal:
https://www.youtube.com/user/MiltonIzaguirreMoral
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