estructura de datos
estructura de datos
Hola nuevamente a todos en el foro,
Tengo un problema actualmente estoy trabajando en una aplicacion que tiene el siguiente segmento de programación.
DEFINE STRUCT oServi
STRUCT FIELD "nofactura" INIT 0
STRUCT FIELD "fecha" INIT Space(10)
STRUCT FIELD "vendedor" INIT 0
STRUCT FIELD "marcav" INIT space(30)
STRUCT FIELD "idplaca" INIT space(30)
STRUCT FIELD "color" INIT space(30)
STRUCT FIELD "obs" INIT space(100)
STRUCT FIELD "agencia" INIT 0
STRUCT FIELD "serie" INIT space(2)
END STRUCT
Lo que me permite es trabajar una estructura de datos como si fuera una dbf por ejemplo
oServicios := TMsTable():New( oDb, "ordenserv" )
cSql := "select no_factura,fecha,id_vendedor,marcav,id_placa,color,obs,id_agencia,serie from ordenserv where "
cSql += "nit = '"+oBase:FieldGet(1)+"'"
cSql += "order by fecha desc"
if !oServicios:Open( cSql )
return( nil )
endif
oServicios:GoTop:Read()
While !oServicios:Eof()
oServi:Blank()
oServi:nofactura := oServicios:Fieldget(1)
oServi:fecha := oServicios:Fieldget(2)
oServi:vendedor := oServicios:Fieldget(3)
oServi:marcav := oServicios:Fieldget(4)
oServi:idplaca := oServicios:Fieldget(5)
oServi:color := oServicios:Fieldget(6)
oServi:obs := oServicios:Fieldget(7)
oServi:agencia := oServicios:Fieldget(
oServi:serie := oServicios:Fieldget(9)
oServi:Insert()
oServicios:Fetch()
end
oServi:GoTop()
y siquiero modificar
while !oServi:Eof()
if oServi:noFactura = 12345
oServi:marcav := "Mazda"
oServi:Save()
endif
oServi:Skip()
End
con esto lo que hago es llenra la estructura con una consulta, la cuestion es que quite varias librerias del archivo de compilacion hasta que encontre una libreria que es la que contiene esta clase para poder trabajar de esta forma, el problema es que no tengo los fuentes de esa libreria y necesito separar la aplicacion para otro segmento y no quiero compilar esta libreria.
Alguien conoce esta forma de hacer estructuras?
de antemano muy agradecido
Atentamente,
Julio Ponce
Tengo un problema actualmente estoy trabajando en una aplicacion que tiene el siguiente segmento de programación.
DEFINE STRUCT oServi
STRUCT FIELD "nofactura" INIT 0
STRUCT FIELD "fecha" INIT Space(10)
STRUCT FIELD "vendedor" INIT 0
STRUCT FIELD "marcav" INIT space(30)
STRUCT FIELD "idplaca" INIT space(30)
STRUCT FIELD "color" INIT space(30)
STRUCT FIELD "obs" INIT space(100)
STRUCT FIELD "agencia" INIT 0
STRUCT FIELD "serie" INIT space(2)
END STRUCT
Lo que me permite es trabajar una estructura de datos como si fuera una dbf por ejemplo
oServicios := TMsTable():New( oDb, "ordenserv" )
cSql := "select no_factura,fecha,id_vendedor,marcav,id_placa,color,obs,id_agencia,serie from ordenserv where "
cSql += "nit = '"+oBase:FieldGet(1)+"'"
cSql += "order by fecha desc"
if !oServicios:Open( cSql )
return( nil )
endif
oServicios:GoTop:Read()
While !oServicios:Eof()
oServi:Blank()
oServi:nofactura := oServicios:Fieldget(1)
oServi:fecha := oServicios:Fieldget(2)
oServi:vendedor := oServicios:Fieldget(3)
oServi:marcav := oServicios:Fieldget(4)
oServi:idplaca := oServicios:Fieldget(5)
oServi:color := oServicios:Fieldget(6)
oServi:obs := oServicios:Fieldget(7)
oServi:agencia := oServicios:Fieldget(
oServi:serie := oServicios:Fieldget(9)
oServi:Insert()
oServicios:Fetch()
end
oServi:GoTop()
y siquiero modificar
while !oServi:Eof()
if oServi:noFactura = 12345
oServi:marcav := "Mazda"
oServi:Save()
endif
oServi:Skip()
End
con esto lo que hago es llenra la estructura con una consulta, la cuestion es que quite varias librerias del archivo de compilacion hasta que encontre una libreria que es la que contiene esta clase para poder trabajar de esta forma, el problema es que no tengo los fuentes de esa libreria y necesito separar la aplicacion para otro segmento y no quiero compilar esta libreria.
Alguien conoce esta forma de hacer estructuras?
de antemano muy agradecido
Atentamente,
Julio Ponce
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Julio,
xHarbour te proporciona soporte de estructuras, parecidas a las que usas. Aqui tienes un ejemplo:
FWH tambien proporciona soporte de estructuras pero está orientado a construir estructuras para pasarlas como parámetros a funciones en C:
De todas formas, como me comentastes, si necesitas que esas estructuras hagan más cosas, lo idóneo es que te construyas una Clase propia, salvo que encuentres los CH y PRGs que usabas.
xHarbour te proporciona soporte de estructuras, parecidas a las que usas. Aqui tienes un ejemplo:
Code: Select all
#include "hbstruct.ch"
function Main()
local oServi
STRUCTURE oServi
MEMBER "nofactura" INIT 0
MEMBER "fecha" INIT Space(10)
MEMBER "vendedor" INIT 0
MEMBER "marcav" INIT space(30)
MEMBER "idplaca" INIT space(30)
MEMBER "color" INIT space(30)
MEMBER "obs" INIT space(100)
MEMBER "agencia" INIT 0
MEMBER "serie" INIT space(2)
ENDSTRUCTURE
MsgInfo( "ok" )
return nil
Code: Select all
#include "FiveWin.ch"
#include "struct.ch"
function Main()
local oStruct
STRUCT oRect
MEMBER nLeft AS LONG
MEMBER nTop AS LONG
MEMBER nRight AS LONG
MEMBER nBottom AS LONG
ENDSTRUCT
MsgInfo( oRect:ClassName() )
return nil
Estructura de Datos
Gracias solo con una consulta mas, me parece bien la idea de utilizar la estructura de xHarbour, pero como hago para insertar,modificar y recorrer la estructura.
de Antemano muy agradecido
de Antemano muy agradecido
Antonio Linares wrote:Julio,
xHarbour te proporciona soporte de estructuras, parecidas a las que usas. Aqui tienes un ejemplo:FWH tambien proporciona soporte de estructuras pero está orientado a construir estructuras para pasarlas como parámetros a funciones en C:Code: Select all
#include "hbstruct.ch" function Main() local oServi STRUCTURE oServi MEMBER "nofactura" INIT 0 MEMBER "fecha" INIT Space(10) MEMBER "vendedor" INIT 0 MEMBER "marcav" INIT space(30) MEMBER "idplaca" INIT space(30) MEMBER "color" INIT space(30) MEMBER "obs" INIT space(100) MEMBER "agencia" INIT 0 MEMBER "serie" INIT space(2) ENDSTRUCTURE MsgInfo( "ok" ) return nil
De todas formas, como me comentastes, si necesitas que esas estructuras hagan más cosas, lo idóneo es que te construyas una Clase propia, salvo que encuentres los CH y PRGs que usabas.Code: Select all
#include "FiveWin.ch" #include "struct.ch" function Main() local oStruct STRUCT oRect MEMBER nLeft AS LONG MEMBER nTop AS LONG MEMBER nRight AS LONG MEMBER nBottom AS LONG ENDSTRUCT MsgInfo( oRect:ClassName() ) return nil
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Julio,
Entiendo que cuando te refieres a "insertar,modificar y recorrer la estructura" de alguna forma tienes asociada esa estructura a una base de datos ó a un recordset de ADO, si ?
Una estructura no tiene ninguna relación con una base de datos. Es una forma de organizar la información.
Por eso te indico que lo idóneo es crearte la Clase que necesites en el caso de que no localices el código fuente que de la Clase que estás usando.
Has podido encontrar "DEFINE STRUCT" en alguno de tus ficheros CH ? Tiene que estar ó no podrias compilarlo. Otra opción, como te indiqué, es que compiles con /p para que genere un fichero .ppo y dentro veamos en que se traduce ese comando.
Entiendo que cuando te refieres a "insertar,modificar y recorrer la estructura" de alguna forma tienes asociada esa estructura a una base de datos ó a un recordset de ADO, si ?
Una estructura no tiene ninguna relación con una base de datos. Es una forma de organizar la información.
Por eso te indico que lo idóneo es crearte la Clase que necesites en el caso de que no localices el código fuente que de la Clase que estás usando.
Has podido encontrar "DEFINE STRUCT" en alguno de tus ficheros CH ? Tiene que estar ó no podrias compilarlo. Otra opción, como te indiqué, es que compiles con /p para que genere un fichero .ppo y dentro veamos en que se traduce ese comando.
La clase se llama TArray
Hola, esa clase de la que hablas se llama TArray, si gustas mandame un correo y te la hago llegar..
Saludos
Saludos
Luis Fernando Rubio Rubio
Liga de Descarga TArray
Hola no se quien sea el creador de esta clase, ni me acuerdo de donde la saque, asi que solo aclaro que no es mia..
Saludos
http://www.4shared.com/file/64476829/2 ... =f7cf9d59
Saludos
http://www.4shared.com/file/64476829/2 ... =f7cf9d59
Luis Fernando Rubio Rubio
With xHarbour you cann use HASH
aDati := TAssociativeArray()
aDati:c1 := "WWWW"
aDati:c2 := "eeeeee"
You cann simulate Scatter and gather of the record
//-------------------------------------------------------------------------
FUNCtion Scatter()
Local aVars := {=>}
LOcal nField := FCount()
LOcal nX := 1
FOR nX := 1 TO nField
aVars[FIELDNAME(nX)] := FieldGet(nX)
NEXT
RETURN aVars
Function Gather(aVars)
lOCAL Nx := 1
FOR Nx := 1 TO LEN(aVars)
FieldPut(nX,aVArs[FIELDNAME(nX)] )
NEXT
RETUrn TRUE
Maurizio
aDati := TAssociativeArray()
aDati:c1 := "WWWW"
aDati:c2 := "eeeeee"
You cann simulate Scatter and gather of the record
//-------------------------------------------------------------------------
FUNCtion Scatter()
Local aVars := {=>}
LOcal nField := FCount()
LOcal nX := 1
FOR nX := 1 TO nField
aVars[FIELDNAME(nX)] := FieldGet(nX)
NEXT
RETURN aVars
Function Gather(aVars)
lOCAL Nx := 1
FOR Nx := 1 TO LEN(aVars)
FieldPut(nX,aVArs[FIELDNAME(nX)] )
NEXT
RETUrn TRUE
Maurizio
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Bueno, ya que ha aparecido, guardémosla bien para que no se pierda
www.fivetechsoft.com/files/utilities/tarray.rar
www.fivetechsoft.com/files/utilities/tarray.rar
-
- Posts: 161
- Joined: Tue Oct 18, 2005 10:01 am
Olá Antonio.xHarbour te proporciona soporte de estructuras, parecidas a las que usas.
Added to Harbour (Adicionado ao Harbour ):
2008-09-29 13:11 UTC-0300 Antonio Carlos Pantaglione
<toninho@fwi.com.br>
* contrib/xhb/common.mak
* contrib/xhb/makefile
+ contrib/xhb/hbstruct.ch
+ contrib/xhb/hbstruct.prg
+ STRUCTURE / MEMBER / ENDSTRUCTURE support
Regards,
Toninho.
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Re: Liga de Descarga TArray
Gracias Luis fernando,
Esta clase tiene lo que necesito, y gracias tambien Antonio y por supuesto ya la tengo guardada para que no se pierda.
Atentamente,
Julio Rodrigo Ponce Hinestroza
www.suproye.com
Esta clase tiene lo que necesito, y gracias tambien Antonio y por supuesto ya la tengo guardada para que no se pierda.
Atentamente,
Julio Rodrigo Ponce Hinestroza
www.suproye.com
derpipu wrote:Hola no se quien sea el creador de esta clase, ni me acuerdo de donde la saque, asi que solo aclaro que no es mia..
Saludos
http://www.4shared.com/file/64476829/2 ... =f7cf9d59
JPonce:
Por ahí tambien existe una clase TPUblic(), Desconozco quien sea el autor aunque se mencionan varios nombres, _ CHACON, RAY ISLAS, EDUARDO RIZZOLO, DANIEL ANDRADE, tal vez tambien te pueda servir.
Saludos
Por ahí tambien existe una clase TPUblic(), Desconozco quien sea el autor aunque se mencionan varios nombres, _ CHACON, RAY ISLAS, EDUARDO RIZZOLO, DANIEL ANDRADE, tal vez tambien te pueda servir.
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