Page 1 of 1

O.T. velocidad de ADS LOCAL con archivos ADT

PostPosted: Fri Feb 10, 2006 4:31 pm
by Marcelo Via Giglio
Holas,

una duda pero hoy realmente me quede preocupado al hacer un ciclo sobre un archivos ADT y este tardo minutos sobre 10000 registros, un ejemplo tan simple como este

dbf -> ( DBGoTop() )
DO WHILE ! dbf -> ( EOF() )
dbf -> fielld1 := dbf -> field2
dbf -> ( DBSkip() )
ENDDO

nada mas que eso y me ponia a dormir, sera que esto es normal o estoy haciendo algo mal, o hay alguna alternativa para que esto vuele como con los DBFCDX nativos
comentarios?? Rene?

saludos

Marcelo

PostPosted: Fri Feb 10, 2006 5:42 pm
by R.F.
Como esta tu archivo de configuracion ADSLOC32.CFG ?

PostPosted: Fri Feb 10, 2006 6:37 pm
by Marcelo Via Giglio
Rene,

gracias por el interes, abajo adjunto el mencionado archivo de configuracion que esta en el mismo directorio de la aplicacion (le quite parte de los comentarios para bajar el peso del mensaje)

No se que podria ser, espero tengas alguna idea

saludos y gracias

Marcelo


[SETTINGS]
; Advantage Local Server configuration file

; Number of Connections
; Default = 20; Range = 1 - No upper limit
CONNECTIONS=20
;
; Number of Tables
; Default = 50; Range = 1 - No upper limit
TABLES=50
;
; Number of Index Files
; Default = 75; Range = 1 - No upper limit
INDEXES=75
;
; Number of Data Locks
; Default = 500; Range = 1 - No upper limit
LOCKS=500
;
; Maximum Size of Error Log (in KBytes)
; Default = 1000 KBytes; Range = 1 KByte - No upper limit
ERROR_LOG_MAX=1000
;
; Error Log and Assert Log Path
; Default = C:\
ERROR_ASSERT_LOGS=
;
ANSI_CHAR_SET=
;
OEM_CHAR_SET=
;
; Local File Flush Frequency (in milliseconds)
; Default = 20000 ms (20 seconds); Range = 0 ms - No upper limit
FLUSH_FREQUENCY=20000
;
LOWERCASE_ALL_PATHS=

PostPosted: Fri Feb 10, 2006 7:14 pm
by Marcelo Via Giglio
Mas pistas,

si utilizo SQL, y creo primero una tabla temporal la cosa va mucho mas rapido, esto es un ejemplo

AdsConnect( ".\data\" ,1)
adsRightsCheck( .F. )

Select 100
ADSCreateSQLStatement("SQLarea",3)

AdsExecuteSqlDirect( " select * into #temo from dbf " )
sqlarea -> ( DBCLOSEAREA() )
ADSCreateSQLStatement("SQLarea",3)
AdsExecuteSqlDirect( " update #temp set field1=field2" )


esto va miles que digo millones de veces mas rapido

que raro?????????? creo que debere escribir al foro de xHarbour, solo que mi problema sera que no podre actualizarme con el ultimo xHarbour creo ya que utilizo FWH 2.6 de abril 2005

saludos

PostPosted: Mon Feb 13, 2006 3:09 pm
by Marcelo Via Giglio
Holas,

he solucionado el problema, para la gente que le interese, el problema se ocasiona cuando uno hace uso de ARC para importar tablas DBF a CDX, ya tuve prioblemas con campos que tenian espacios al final, la importacion trunca esta informacion.

Conclusion, no utilizar ARC para importar tablas, mejor hacerlo a mano

saludos y gracias

Marcelo