Goosfancito...
recordcount solo funciona si se cumplen estas 2 condiciones
If ::Supports(adApproxPosition) .and. ::Supports(adBookmark)
nLastRec:= ::RecordCount
Endif
Si no tendras un -1, o un 0... porque ?
Para un cursor FORWARD-ONLY el valor es -1, Si el cursor es ESTATICO o KEYSET, recordcount() te entrega el total de los registros del Recordset. En cambio si es dinamico, ahi tenemos 1 problema, puede devolver - 1 o el total de registros, pero eso depende SOLO DEL "DATA SOURCE", en este caso, ORACLE.
Como solucionas el problema.... ?
SIMPLE..
Create una funcion a la que le pases 1 parametro, el mismo cSelect con el que creas el recordset, esta funcion es muy muy rapida pues es solo un comando, o sea son solo 2 milisegundos
Function Contar(cSelect)
Local nCount:=0
Local oCmd
Local oRsCmd
oCmd:=TOleAuto():New("ADODB.Command")
oCmd:CommandText := "select count(*) from " + (cSelect)
oCmd:CommandType := adCmdText
oCmd:ActiveConnection:=oCon
oRsCmd:=oCmd:Execute()
nCount:=oRsCmd:Fields( 0 ):value
oRsCmd:Close()
Return nCount
Espero que te sirva..
Saludos desde Chile
Adolfo
;-) Ji,ji,ji... buena la cosa... "all you need is code"
http://www.xdata.cl - Desarrollo Inteligente
----------
Asus TUF F15, 32GB Ram, 2 * 1 TB NVME M.2, GTX 1650