estructura de datos

estructura de datos

Postby jponce » Wed Sep 24, 2008 7:59 pm

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
jponce
 
Posts: 197
Joined: Fri Apr 18, 2008 4:21 pm
Location: Guatemala

Postby Antonio Linares » Thu Sep 25, 2008 4:05 pm

Julio,

xHarbour te proporciona soporte de estructuras, parecidas a las que usas. Aqui tienes un ejemplo:
Code: Select all  Expand view  RUN
#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

FWH tambien proporciona soporte de estructuras pero está orientado a construir estructuras para pasarlas como parámetros a funciones en C:
Code: Select all  Expand view  RUN
#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

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.
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42161
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Estructura de Datos

Postby jponce » Thu Sep 25, 2008 6:35 pm

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

Antonio Linares wrote:Julio,

xHarbour te proporciona soporte de estructuras, parecidas a las que usas. Aqui tienes un ejemplo:
Code: Select all  Expand view  RUN
#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

FWH tambien proporciona soporte de estructuras pero está orientado a construir estructuras para pasarlas como parámetros a funciones en C:
Code: Select all  Expand view  RUN
#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

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.
jponce
 
Posts: 197
Joined: Fri Apr 18, 2008 4:21 pm
Location: Guatemala

Postby Antonio Linares » Thu Sep 25, 2008 8:24 pm

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.
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42161
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

La clase se llama TArray

Postby derpipu » Thu Sep 25, 2008 9:34 pm

Hola, esa clase de la que hablas se llama TArray, si gustas mandame un correo y te la hago llegar..

Saludos
Luis Fernando Rubio Rubio
derpipu
 
Posts: 94
Joined: Tue Mar 28, 2006 4:09 pm
Location: Tequila, Jalisco Mexico

Liga de Descarga TArray

Postby derpipu » Thu Sep 25, 2008 9:44 pm

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

[url]
http://www.4shared.com/file/64476829/2a ... d=f7cf9d59
[/url]
Luis Fernando Rubio Rubio
derpipu
 
Posts: 94
Joined: Tue Mar 28, 2006 4:09 pm
Location: Tequila, Jalisco Mexico

Postby Maurizio » Fri Sep 26, 2008 6:36 am

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
User avatar
Maurizio
 
Posts: 825
Joined: Mon Oct 10, 2005 1:29 pm

Postby Antonio Linares » Fri Sep 26, 2008 8:09 am

Bueno, ya que ha aparecido, guardémosla bien para que no se pierda :-)

www.fivetechsoft.com/files/utilities/tarray.rar
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42161
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Postby toninhofwi » Mon Sep 29, 2008 7:31 pm

xHarbour te proporciona soporte de estructuras, parecidas a las que usas.


Olá Antonio.

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.
toninhofwi
 
Posts: 172
Joined: Tue Oct 18, 2005 10:01 am

Postby Antonio Linares » Mon Sep 29, 2008 9:09 pm

Toninho,

Bien! :-)

gracias,
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42161
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Liga de Descarga TArray

Postby jponce » Tue Sep 30, 2008 7:00 pm

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



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

[url]
http://www.4shared.com/file/64476829/2a ... d=f7cf9d59
[/url]
jponce
 
Posts: 197
Joined: Fri Apr 18, 2008 4:21 pm
Location: Guatemala

Postby Armando » Tue Sep 30, 2008 7:18 pm

JPonce:

Por ahí tambien existe una clase TPUblic(), Desconozco quien sea el autor aunque se mencionan varios nombres, OSCAR 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
User avatar
Armando
 
Posts: 3239
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México


Return to FiveWin para Harbour/xHarbour

Who is online

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