Sigo con xBrowse - Por favor

Sigo con xBrowse - Por favor

Postby Ruben D. Fernandez » Fri Sep 07, 2007 3:08 pm

Amigos:

Base de datos de 30 registros
Los debo mostrar de a 3
cargo los primeros 3 y los restantes con un for pero me muestra
solamente los datos del ultimo registro.

Este es el código
Los datos que conozco de la BD son los 3 primeros campos los otros no

acTituBrw:=DBStruct() estructura de la base de datos

oBrw := TXBrowse():New( oDlg )

oCol:=oBrw:AddCol()
oCol:cHeader:= "Mesa" +CRLF+"Apertura"+""
oCol:bStrData:= {|| DToC((base1)->sesi)+CRLF+(base1)->MESA_1+CRLF+(base1)->MESA_2 }
i :=4
nCampito1:=""
nCampito2:=""
nCampito3:=""
nI1:=0
nI2:=0
nI3:=0

for i := 4 to Len(acTituBrw)
oCol:=oBrw:AddCol()
oCol:cHeader:= "Hora:"+CRLF+SubStr(FieldName(i),2,2 )
//Las cabeceras las carga bien, son los caracteres 3y4 del campo
nCampito1 := (base1)->(FieldName(i) )
nCampito2 := (base1)->(FieldName(i+1) )
nCampito3 := (base1)->(FieldName(i+2) )
* MsgInfo(nCampito1) // muestra bien
* MsgInfo(nCampito2) // muestra bien
* MsgInfo(nCampito3) // muestra bien
nI1:=(base1)->(FIELDGET(FieldPos(nCampito1)))
nI2:=(base1)->(FIELDGET(FieldPos(nCampito2)))
nI3:=(base1)->(FIELDGET(FieldPos(nCampito3)))
* MsgInfo(ni1) // muestra bien
* MsgInfo(ni2) // muestra bien
* MsgInfo(ni3) // muestra bien
oCol:bStrData:= {|| Str(ni1)+CRLF+Str(ni2)+CRLF+Str(ni3) }
oCol:nWidth:= 120
i+=3

next

oBrw:CreateFromResource( 110 )
oBrw:nMarqueeStyle := MARQSTYLE_HIGHLCELL
oBrw:nColDividerStyle := LINESTYLE_BLACK
oBrw:nRowDividerStyle := LINESTYLE_BLACK
oBrw:lColDividerComplete := .t.
oBrw:nHeaderLines := 3
oBrw:nFooterLines := 1
oBrw:nDataLines := 3
oBrw:lFooter := .t.
oBrw:SetRDD()
oBrw:GoTop()

oBrw:Refresh(.t.)

Muchas gracias.

Saludos

Ruben Fernandez.
La estructura es
Mesa1,mesa2,mesa3,;
H00A1,H00A2,H00A3,;
...
H15A1,H15A2,H15A3...
Ruben D. Fernandez
 
Posts: 189
Joined: Sun Jul 08, 2007 1:46 am
Location: Uruguay

Postby Carlos Mora » Sun Sep 09, 2007 6:01 pm

Ruben,

Ruben D. Fernandez wrote:Amigos:

Base de datos de 30 registros
Los debo mostrar de a 3
cargo los primeros 3 y los restantes con un for pero me muestra
solamente los datos del ultimo registro.

oCol:bStrData:= {|| Str(ni1)+CRLF+Str(ni2)+CRLF+Str(ni3) }



creo que no tienes en claro que estas poniendo en los codeblocks. Lo que hace harbour es correcto, responde a lo que le pides.
Tienes que crear un codeblock que traiga los valores. Tú en tu código , traes los valores y los pones dentro del codeblock, es decir *siempre* te va a mostrar los valores de las ni1, ni2 y ni3 que tengan en el momento del pintado, no cuando estas declarando las columnas.


cambia esa línea por
Code: Select all  Expand view
       oCol:bStrData:= &("{|| FieldGet("+Str( i ) + ")+CRLF+FieldGet("+ Str(i+1)+")+CRLF+FieldGet("+Str(i+2)+") }  " )



Saludos,

Carlos
Carlos Mora
 
Posts: 988
Joined: Thu Nov 24, 2005 3:01 pm
Location: Madrid, España

Postby Ruben D. Fernandez » Thu Sep 13, 2007 4:39 pm

Gracias Carlos...

No logre hacerlo funcionar.

Vere como lo hago.

Saludos

Ruben Fernandez.
Ruben D. Fernandez
 
Posts: 189
Joined: Sun Jul 08, 2007 1:46 am
Location: Uruguay


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 127 guests