dudas con Arrays
dudas con Arrays
Hola:
Tengo dos dudillas, a ver si por favor me podéis ayudar.
Primera, ¿hay alguna función rápida, mejor en C, que carge en un Array el contenido de un campo de una base de datos, para evitar hacer un DO while !eof()?.
Segunda, ¿hay alguna función que elimine los elementos duplicados de un Array?.
Mil gracias.
Tengo dos dudillas, a ver si por favor me podéis ayudar.
Primera, ¿hay alguna función rápida, mejor en C, que carge en un Array el contenido de un campo de una base de datos, para evitar hacer un DO while !eof()?.
Segunda, ¿hay alguna función que elimine los elementos duplicados de un Array?.
Mil gracias.
Saludos,
Eduardo
Eduardo
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Re: dudas con Arrays
Antonio:
Gracias por responder, pero no veo de qué forma.
igualmente, ¿Hay alguna función para cargar el contenido de todo un campo de la DBF en el Array, para evitar esto (por lentitud)?
do while !eof()
aadd (array, FIELD->NOMBRE)
DBSKIP()
ENDDO
Muchas gracias
Gracias por responder, pero no veo de qué forma.
igualmente, ¿Hay alguna función para cargar el contenido de todo un campo de la DBF en el Array, para evitar esto (por lentitud)?
do while !eof()
aadd (array, FIELD->NOMBRE)
DBSKIP()
ENDDO
Muchas gracias
Saludos,
Eduardo
Eduardo
Re: dudas con Arrays
mgsoft:
Disculpa mi ignorancia, cual es la utilidad de cargar toda una DBF (10m 20m o 50m regs) a un array ?
Saludos
Disculpa mi ignorancia, cual es la utilidad de cargar toda una DBF (10m 20m o 50m regs) a un array ?
Saludos
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Re: dudas con Arrays
DbEval( { || AAdd( array, FIELD->NOMBRE ) } )
recorre toda la DBF y añade el campo al array. Lo mismo que quieres hacer pero desde nivel C.
recorre toda la DBF y añade el campo al array. Lo mismo que quieres hacer pero desde nivel C.
Re: dudas con Arrays
Muchas gracias Antonio!!!.
Armando, lo que quiero es usar la clase TAutoGet, y por ejemplo que el programa complete automáticamente los conceptos, los apellidos, la localidad, etc. De ahí la necesidad de tener en un Array el contenido de algunas bases de datos.
El tener un array de varios megas, ¿ralentiza la aplicación?.
Gracias.
Armando, lo que quiero es usar la clase TAutoGet, y por ejemplo que el programa complete automáticamente los conceptos, los apellidos, la localidad, etc. De ahí la necesidad de tener en un Array el contenido de algunas bases de datos.
El tener un array de varios megas, ¿ralentiza la aplicación?.
Gracias.
Saludos,
Eduardo
Eduardo
-
- Posts: 1033
- Joined: Fri Oct 07, 2005 3:33 pm
- Location: Cochabamba - Bolivia
Re: dudas con Arrays
Mgsoft,
perdon por lo entrometido, pero no creo que ganes mucha velocidad, si tienes las tablas DBF con los indices adecuados, el TAutoGet funcionara bastante rapido. Ademas, imagina que tienes frecuentes actualizaciones de esa informacion, deberas tambien actualizar los arrays, y si estuvieras comportiendo la informacion, seria aun mas complejo.
Disculpa el atrevimiento
saludos
Marcelo
perdon por lo entrometido, pero no creo que ganes mucha velocidad, si tienes las tablas DBF con los indices adecuados, el TAutoGet funcionara bastante rapido. Ademas, imagina que tienes frecuentes actualizaciones de esa informacion, deberas tambien actualizar los arrays, y si estuvieras comportiendo la informacion, seria aun mas complejo.
Disculpa el atrevimiento
saludos
Marcelo
Re: dudas con Arrays
Marcelo:
Por favor, ningún problema en tu comentario, al contrario, pues me queda mucho que aprender.
La clase TAutoGet, hasta donde yo se, únicamente acepta un Array con los valores.
Creo que es muy útil que el programa autocomplete un campo (p. ej. apellidos, localidad, etc). No sé de qué otro modo se puede hacer.
Cualquier comentario será bienvenido. Gracias
Por favor, ningún problema en tu comentario, al contrario, pues me queda mucho que aprender.
La clase TAutoGet, hasta donde yo se, únicamente acepta un Array con los valores.
Creo que es muy útil que el programa autocomplete un campo (p. ej. apellidos, localidad, etc). No sé de qué otro modo se puede hacer.
Cualquier comentario será bienvenido. Gracias
Saludos,
Eduardo
Eduardo
-
- Posts: 1033
- Joined: Fri Oct 07, 2005 3:33 pm
- Location: Cochabamba - Bolivia
Re: dudas con Arrays
MgSoft,
dejame buscar, yo tengo eso funcionando con base de datos, talvez, no la clase en si, pero de otra forma, por ultimo se modifica la clase.
busco y lo que encuentre lo publico
saludos
Marcelo
dejame buscar, yo tengo eso funcionando con base de datos, talvez, no la clase en si, pero de otra forma, por ultimo se modifica la clase.
busco y lo que encuentre lo publico
saludos
Marcelo
Re: dudas con Arrays
Hola compañero me parece que lo que quieres hacer lo puedes lograr usando el DBCOMBO que hace un combobox con campos de una tabla, busca el ejemplo dbctest.prg o el testdbc1.prg.
ojala te sirva..
ojala te sirva..
-
- Posts: 1033
- Joined: Fri Oct 07, 2005 3:33 pm
- Location: Cochabamba - Bolivia
Re: dudas con Arrays
Hola,
mira este codigo, de esta manera lo hice
El DBEXIST es una funcion propia, pudes reemplazarla por un DBSEEK. Si te das cuenta esto es parte de la clase de Maurilio, entonces esa misma clase podrias modificarla para que en lugar de utilizar arrays puedas utilizar una tabla, claro que la idea es que se parametrice para generalizar
Espero te ayude.
saludos
Marcelo
mira este codigo, de esta manera lo hice
Code: Select all
REDEFINE BMPGET oGet VAR cResponsable ID 102 OF oDlg BCOLOR CLR_BLACK, CLR_YELLOW ;
UPDATE WHEN ! job $ "anul,del,view,anul";
PICTURE "@!"
oGet:bPostKey := {|oGet, cBuffer| setResponsable( oget ) }
//------------------------------------------------------------------------------
FUNCTION setResponsable( oGet )
//------------------------------------------------------------------------------
LOCAL nPosItem := 0 // Text position into ::aItems
LOCAL nPosCursor := oGet:nPos // Current cursor position
LOCAL nLength := LEN(oGet:cText) // Text length
LOCAL cStartTxt := LEFT(oGet:cText, nPosCursor-1) // Start text (position 1 to cursor position -1)
LOCAL cItem := ""
LOCAL nKey := 0
nKey := oGet:nLastKey
DO CASE
CASE nKey == VK_TAB .or. ;
nKey == VK_RETURN .or. ;
nKey == VK_DELETE
oGet:Assign() // Assign typed text
CASE nKey >= 32 .And. nKey <= 256
responsables -> ( DBEXIST( cStartTxt, "nombre", .T. ) )
cItem := responsables -> nombre
IF LEFT( cItem, LEN(cStartTxt) ) = cStartTxt
nLength := LEN( RTRIM( cItem ) )
cItem += SPACE( nLength - LEN(cItem) )
oGet:SetText( cItem )
oGet:SetSel( nPosCursor -1, nLength) // Select found text
oGet:oGet:Buffer = PAD( cItem, LEN( oGet:oGet:Buffer ))
RETURN(.t.)
ENDIF
oGet:HideSel() // Text not found -> Undo selected text
ENDCASE
RETURN( .T. )
Espero te ayude.
saludos
Marcelo