Clipper/FiveWin - Append From sin duplicar

 
Vista:
Imágen de perfil de Alejandro
Val: 4
Ha mantenido su posición en Clipper/FiveWin (en relación al último mes)
Gráfica de Clipper/FiveWin

Append From sin duplicar

Publicado por Alejandro (30 intervenciones) el 24/03/2016 02:16:52
  • Alejandro se encuentra ahora conectado en el
  • chat de PHP
Quiero hacer un append from pero sin que agregue los registros ya existentes. ¿Es posible?
Hice este código pero es mas lento que hacer un append from
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
Select 2
Use Destino
 
Select 1
Use Origen
 
aRow := Array(FCount(),2)
For i:=1 To FCount()
    aRow[i.1] := Field(i)
Next i
 
Do While !Eof()
    Select 1
    For :=i To Len(aRow)
        aRow[i,2] := &(Field(i))
    Next i
    nFactura        = Factura
    nDocumento = Documento
 
    Select 2
    Locate For Factura = nFactura .And. Documento = nDocumento
    If !Found()
        Append Blank
        For i:=1 to Len(aRow)
            Replace &(aRow[i,1]) With aRow[i,2]
        Next i
    EndIf
 
    Select 1
    Skip
EndDo
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: 4
Ha mantenido su posición en Clipper/FiveWin (en relación al último mes)
Gráfica de Clipper/FiveWin

Append From sin duplicar

Publicado por Yamil Bracho (94 intervenciones) el 24/03/2016 07:04:22
Aunque no lo probe , mas o menos así va ;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
USE Destino
INDEX ON (LTRIM( STR( Destino->Factura )) + LTRIM( STR( Destino->Documento)) ) TO NyIndex
Destino->(dbSetIndex("MyIndex"))
 
USE Origen
Origen->(dbGoTop())
nFieldCount = Origen->(FCOUNT())
DO WHILE !(Origen->(EOF()))
  nFactura = Origen->Factura
  nDocumento = Origen->Documento
  cIndex = LTRIM( STR( nFactura )) + LTRIM( STR( nDocumento ))
 
  // Busca Si existe en Destino
  IF (Destino->(dbSeek( cIndex ))) == .F.
     // Lo Inserta 
     Destino->(dbAppend())
     FOR n:=1 to nFieldCount
        Destino->(FieldPut( n, Origen->(FieldGet( n ))))
     NEXT
     Destino->(dbCommit())
  END IF
  Origen->(dbSkip(1))
END DO
CLOSE ALL
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