FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Algun ejemplo con ADO y TXBrowse ?
Posts: 3358
Joined: Fri Oct 07, 2005 08:20 PM
Algun ejemplo con ADO y TXBrowse ?
Posted: Wed Sep 19, 2007 01:24 PM

Amigos del foro:

Estoy intentando mis primeros pasos con ADO y pretendo hacer un browse con TXBrowse, esto es parte de mi c贸digo

oBrw := TXBrowse():New( oWnd )

oBrw:nMarqueeStyle := MARQSTYLE_HIGHLROW
oBrw:lColDividerComplete := (.T.)
oBrw:nRowDividerStyle := LINESTYLE_LIGHTGRAY
oBrw:nColDividerStyle := LINESTYLE_LIGHTGRAY
oBrw:nHeaderLines := 1
oBrw:nFooterLines:= 1
oBrw:nDataLines := 1
oBrw:lFooter:= (.T.)
oBrw:lHScroll:= (.F.)
oBrw:SetAdo(oDatos)

oBrw:bGoTop:= {|| oDatos:MoveFirst() }
oBrw:bGoBottom:= {|| oDatos:MoveLast() }
oBrw:bBof:= {|| oDatos:Bof() }
oBrw:bEof:= {|| oDatos:Eof() }
oBrw:bSkip:= { | nSkip | Skipper( oDatos, nSkip ) }
oBrw:bKeyCount:= {|| oDatos:RecordCount() }

aCol[ 1]:= oBrw:AddCol()
aCol[ 1]:bStrData := { || oDatos:Fields(0):Value}
aCol[ 1]:cHeader := "ESTILO"
aCol[ 1]:nHeadStrAlign:= AL_LEFT
aCol[ 1]:nDataStrAlign:= AL_LEFT
aCol[ 1]:nWidth:= 249

oBrw:CreateFromCode()

oWnd:SetControl( oBrw )

Como se puede apreciar solo estoy creando el browse con una sola columna a pesar de que el recordset esta creado con 2 campos, pues bien el browse se muestra con tres columnas, los dos campos del recordset m谩s la columna que estoy creando, por qu茅 ?, ademas el browse pinta solo el primer rengl贸n, debo ir avanzando haca abajo del browse para que se muestren el resto de los renglones.

Seguramente hay algo que me esta faltando, pero que es ?, alguien que tenga un peque帽o ejemplo para crear el browse con TXbrowse y RECORDSET ???

Muy agradecido por su apoyo

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
Posts: 682
Joined: Tue Feb 14, 2006 09:48 AM
Algun ejemplo con ADO y TXBrowse ?
Posted: Wed Sep 19, 2007 03:50 PM
Hola Armando,
lo primero que veo es que utilizas SetAdo antes de definir las columnas. SetAdo debieras colocarlo al final antes del CreateFromCode.

En el metodo SetAdo, si el Browse no tiene definido columnas, le a帽ade todas las columnas del recordset que recibe de parametro. Ademas tambien define los codeblocks de movimiento si no estan definidos.

Pruebalo de la siguiente manera.
oBrw := TXBrowse():New( oWnd ) 

oBrw:nMarqueeStyle := MARQSTYLE_HIGHLROW 
oBrw:lColDividerComplete := (.T.) 
oBrw:nRowDividerStyle := LINESTYLE_LIGHTGRAY 
oBrw:nColDividerStyle := LINESTYLE_LIGHTGRAY 
oBrw:nHeaderLines := 1 
oBrw:nFooterLines:= 1 
oBrw:nDataLines := 1 
oBrw:lFooter:= (.T.) 
oBrw:lHScroll:= (.F.) 

aCol[ 1]:= oBrw:AddCol() 
aCol[ 1]:bStrData := { || oDatos:Fields(0):Value} 
aCol[ 1]:cHeader := "ESTILO" 
aCol[ 1]:nHeadStrAlign:= AL_LEFT 
aCol[ 1]:nDataStrAlign:= AL_LEFT 
aCol[ 1]:nWidth:= 249 

oBrw:SetAdo(oDatos)
oBrw:CreateFromCode() 

oWnd:SetControl( oBrw )
Saludos desde Mallorca
Biel Maim贸
http://bielsys.blogspot.com/
Posts: 3358
Joined: Fri Oct 07, 2005 08:20 PM
Algun ejemplo con ADO y TXBrowse ?
Posted: Wed Sep 19, 2007 04:31 PM

Biel:

Excelente explicaci贸n, el primer problema se ha solucionado, muchas gracias.

Tengo definida la funci贸n Skipper() as铆

STATIC FUNCTION Skipper( oDatos, nSkip )
LOCAL nRec := oDatos:AbsolutePosition
oDatos:Move( nSkip )
IF oDatos:EOF()
oDatos:MoveLast()
ENDIF
IF oDatos:BOF()
oDatos:MoveFirst()
ENDIF
RETURN(oDatos:AbsolutePosition - nRec)

Pero a煤n as铆 me sigue mostrando solo el primer registro del recordset cuando tiene 5423 registros y al ir avanzando hacia abajo los va pintando. Que ser谩 ?

Saludos y muchas gracias nuevamente

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
Posts: 682
Joined: Tue Feb 14, 2006 09:48 AM
Algun ejemplo con ADO y TXBrowse ?
Posted: Thu Sep 20, 2007 07:17 AM

La funcion skipper, parece correcta. De todas formas si utilizas el metodo SetAdo, no hace falta definas ning煤n codeblock de movimiento ni funcion skipper. tXBrowse ya lleva definida la funcion para salto de registros, y si no estan definidos, define todos los codeblock para movimiento dentro del cursor (bGoTop,bGoBottom,bSkip,bBof,bEof,bBookMark,bKeyno, bKeyCount).
Prueba a compilar con el codigo que te puse en el mensaje anterior, sin definir ningun codeblock, para ver que resultado obtienes.

Saludos desde Mallorca
Biel Maim贸
http://bielsys.blogspot.com/
Posts: 3358
Joined: Fri Oct 07, 2005 08:20 PM
Algun ejemplo con ADO y TXBrowse ?
Posted: Thu Sep 20, 2007 01:15 PM

Biel:

EXCELENTE !, ahora todo funciona muy bien.

Grande Maestro.

Un Abrazo

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

Continue the discussion