FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour TXBROWSE: Problema con vScroll
Posts: 128
Joined: Wed Oct 26, 2005 12:18 PM
TXBROWSE: Problema con vScroll
Posted: Sat Nov 21, 2009 12:05 AM

La posición de la barra vertical se actualiza si cambio la fila activa usando el teclado (UP, DOWN, PAGE_UP, etc), pero no se actualiza si hago click sobre una fila dada.

¿Alguien ha notado esto y tiene alguna solución?

Gracias.

Agrego: Al hacer click sobre una fila, oVScroll va a la posición inicial y ya no se mueve más con los clicks posteriores.
oHScroll responde perfectamente.

Posts: 128
Joined: Wed Oct 26, 2005 12:18 PM
Re: TXBROWSE: Problema con vScroll
Posted: Sat Nov 21, 2009 12:42 AM

Ya entendí mi problema:

Estoy usando SQLRDD y para este driver OrdKeyNo() siempre devuelve 0.

Tendré que seguir averiguando...

Gracias.

Posts: 128
Joined: Wed Oct 26, 2005 12:18 PM
Re: TXBROWSE: Problema con vScroll
Posted: Sat Nov 21, 2009 04:50 AM

UNA SOLUCION PARA EL PROBLEMA de OrdKeyNo() (devuelve 0)y OrdKeyCount() (devuelve RecCount()) para tablas SQLRDD (al menos para tablas con unos pocos miles de registros ordenadas y/o filtradas):

1) Efectuar el query SELECT sr_recno,@npos:=@npos+1 FROM <mi_tabla>, (SELECT @npos:=0) _t _ [WHERE <mi_filtro>] [ORDER BY <mi_orden>]
Esto devuelve una matriz aSqlQuery:={{RecNo,OrdKeyNo},....}

2) Convertir el array aSqlQuery en un hash hSqlQuery:={RecNo=>OrdKeyNo,......}: hSqlQuery:=Hash(); aEval(aSqlQuery,{|u| hSqlQuery(u[1]) := u[2] })

Ahora  (mi_tabla)-&gt;(OrdKeyNo()) equivale a hSqlQuery[ RecNo() ] y (mi_tabla)-&gt;(OrdKeyCount()) equivale a Len(hSqlQuery)

3) Para trabajar con xBrowse basta que le indique:

::bKeyNo:={|| if(HHasKey(hSqlQuery,(::cAlias)->(RecNo())),hSqlQuery[(::cAlias)->(RecNo())],0) }
::bKeyCount:={|| Len(hSqlQuery)}

Continue the discussion