CDX TO NTX y duplicación de registros

CDX TO NTX y duplicación de registros

Postby riesrovi » Sun Mar 26, 2006 8:22 pm

Me ocurre algo extraño y se lo otorgo al uso de dbfcdx.
Tengo duplicación de registros idénticos y correlativos en una base de datos, la chequeo en forma externa al programa así elimino el problema de los índices. El código no tiene forma de duplicar el registro ya que no tengo pérdida de datos y si duplicación. Ahora también me ocurre este otro caso, cuando intento abrir una base de datos, ctactev.dbf la cual fue creada con dbfntx tengo este error:

**********************************************************
Application
===========
Path and name: C:\DATASOL\Datasol.Exe (32 bits)
Size: 2,131,456 bytes
Time from start: 0 hours 0 mins 6 secs
Error occurred at: 26/03/2006, 17:10:32
Error description: Error DBFNTX/1001 Open error: E:\PROGRAMA\DATASOL\XHARBOUR\ACTDBF\CTACTEV.fpt
************************************************************

Desde xHarbour no he podido hacer la conversión de cdx a ntx, siempre obtengo bases de datos con formato dbfcdx, o sea nunca veo los archivos de memo dbt y si me sigue creando los fpt.
El mismo código lo hice con clipper y me funcionó de maravillas.
Estoy usando esto dentro de la aplicación de xharbour

*************CODIGO***********************

ANNOUNCE RDDSYS
INIT PROCEDURE INICIO
***********************
REQUEST DBFNTX
REQUEST DBFCDX
REQUEST DBFFPT
RDDSETDEFAULT("DBFCDX")
RETURN

************FIN DE CODIGO**********************

Pero pretendo dejarla a DBFNTX por la duplicación de registros.

****************CODIGO****************************

Local cPath:="\"+CURDIR()+"\",I
Local aBases:=directory(cPath+"DBF\*.dbf"),x,aEst

For x:=1 to len(aBases)
use (cPath+"DBF\"+aBases[x,1]) alias vieja
aEst:=Dbstruct()

//Aquí no me respeta el "DBFNTX" con xharbour y si con clipper
Dbcreate(cPath+"ACTDBF\"+aBases[x,1],aEst,"DBFNTX")

use (cPath+"ACTDBF\"+aBases[x,1]) via "DBFNTX" alias nueva new

DO WHILE VIEJA->( ! EOF () )

NUEVA->( DBAPPEND () )

FOR i := 1 TO VIEJA->( FCOUNT () )
NUEVA->( FIELDPUT ( i, VIEJA->( FIELDGET ( i ) ) ) )
NEXT i

VIEJA->( DBSKIP () )
ENDDO
vieja->(dbclosearea())
nueva->(dbcloseara())

Next
*******************FIN DE CODIGO*************************

Les agradecería su ayuda porque estoy bastante ciego a esta altura y creo que le estoy pasando por arriba al error.
Gracias.

Ricardo.-
Last edited by riesrovi on Mon Mar 27, 2006 11:40 am, edited 1 time in total.
riesrovi
 
Posts: 18
Joined: Mon Oct 24, 2005 4:36 pm

CDX TO NTX y duplicación de registros

Postby riesrovi » Sun Mar 26, 2006 8:36 pm

Me faltó anexar que noté que la duplicación se me hizo luego de hacer un pack, por lo que estoy haciendo una función propia de pack en donde copio a otra base de datos auxiliar todos los registros que no estan marcados para borra y después hago un zap a la base, luego le importo los campos de la base de datos auxiliar.
riesrovi
 
Posts: 18
Joined: Mon Oct 24, 2005 4:36 pm


Return to FiveWin for Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 73 guests