Página 1 de 1

Duda com Mysql

Publicado: Lun Ene 03, 2011 9:40 pm
por Andres Hocevar
Primero que todo Feliz 2011 a todos!!!!
Mi duda es con respecto al uso de los datasets con Mysql, entiendo que
el metodo KeyCount() devuelve el nro de filas en el dataset, al ejecutar
el siguiente codigo:
mTotal := 9096 // SELECT COUNT(*) FROM sinv
mHasta := 20
mDESDE := 0
mTXT := ' SELECT DE SQL Reg Total KeyCount'
FOR i := 1 TO 100
IF ::oDataSet:KeyNo = mHasta
IF mDesde+mHasta < mTotal
mDesde += mHasta
::oDataSet:lOpen := .F.
::oDataSet:Cargo:SetLimit( mDesde, mHasta )
mSQL := ::oDataSet:Cargo:BuildSql()
::oDataSet:cSelect := mSQL
::oDataSet:lOpen := .T.
ENDIF
ELSE
::oDataSet:nSkip()
ENDIF
mTXT+=mSQL+STR(::oDataSet:RecNo())+STR(mDESDE)+STR(mTOTAL)+S TR(::oDataSet:KeyCount())
SLEEP(90)
NEXT
MEMOWRIT('salida.txt',mTXT)
No se supone que ::oDataSet:KeyCount deberia ser simpre 20 (LIMIT nnn,
20) lo mismo pasa con ::oDataSet:RecCount()
salida.txt
----------------------------------------------- ------ -------- --------
SELECT DE SQL Reg Total KeyCount
----------------------------------------------- ------ -------- --------
SELECT * FROM sinv ORDER BY codigo LIMIT 0, 20 1 9,096 20
SELECT * FROM sinv ORDER BY codigo LIMIT 0, 20 2 9,096 20
. . . . . . . . .
. . . . . . . . .
SELECT * FROM sinv ORDER BY codigo LIMIT 0, 20 20 9,096 20
SELECT * FROM sinv ORDER BY codigo LIMIT 20, 20 21 9,096 20
. . . . . . . . .
. . . . . . . . .
SELECT * FROM sinv ORDER BY codigo LIMIT 20, 20 39 9,096 20
SELECT * FROM sinv ORDER BY codigo LIMIT 20, 20 40 9,096 20
SELECT * FROM sinv ORDER BY codigo LIMIT 40, 20 41 9,096 40
SELECT * FROM sinv ORDER BY codigo LIMIT 40, 20 42 9,096 40
. . . . . . . . .
. . . . . . . . .
SELECT * FROM sinv ORDER BY codigo LIMIT 40, 20 60 9,096 40
SELECT * FROM sinv ORDER BY codigo LIMIT 60, 20 61 9,096 60
. . . . . . . . .
. . . . . . . . .
SELECT * FROM sinv ORDER BY codigo LIMIT 80, 20 81 9,096 80
. . . . . . . . .
. . . . . . . . .
SELECT * FROM sinv ORDER BY codigo LIMIT 80, 20 100 9,096 80
SELECT * FROM sinv ORDER BY codigo LIMIT 100, 20 101 9,096 100