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 _ 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
Algun ejemplo con ADO y TXBrowse ?
Algun ejemplo con ADO y TXBrowse ?
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
- Biel EA6DD
- Posts: 680
- Joined: Tue Feb 14, 2006 9:48 am
- Location: Mallorca
- Contact:
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.
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.
Code: Select all
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 )
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
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
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
- Biel EA6DD
- Posts: 680
- Joined: Tue Feb 14, 2006 9:48 am
- Location: Mallorca
- Contact:
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.
Prueba a compilar con el codigo que te puse en el mensaje anterior, sin definir ningun codeblock, para ver que resultado obtienes.
Last edited by Biel EA6DD on Thu Sep 20, 2007 1:22 pm, edited 1 time in total.
Biel:
EXCELENTE !, ahora todo funciona muy bien.
Grande Maestro.
Un Abrazo
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
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero