"Count To nRecCount" não funciona ao utilizar a função MPSysOpenQuery. Como posso obter a qtde de registros ao utilizar a função MPSysOpenQuery ou FWTemporyTable?
"Count To nRecCount" não funciona ao utilizar a função MPSysOpenQuery. Como posso obter a qtde de registros ao utilizar a função MPSysOpenQuery ou FWTemporyTable?
Olá,
Para utilizar Count To
, você precisa estar com a workarea corrente com o alias que deseja.
A função MPSysOpenQuery
foi desenhada para não sobrescrever a workarea corrente, para evitando assim a necessidade de GetArea/RestArea
.
Caso queira utilizar o Count To
, basta fazer um dbSelectArea
do alias que deseja antes de fazer o mesmo.
Só tenha cuidado com a performance, pois o Count To
fará um DBEval
de toda a sua query, logo fazer isso não é performático, basicamente você faz um while de BOF a EOF só para contar registros.
cAlias := MPSysOpenQuery("SELECT * FROM TABELA_FICTICIA")
dbSelectArea(cAlias)
Count To nRecCoun
Caso você possua uma tabela com a FWTemporaryTable
e queira saber quantos registros tem, basta fazer uma query com COUNT
do SQL.
nRecCount := MPSysExecScalar("SELECT COUNT(*) QTD FROM " + oFWTemporaryTable:getRealName() + " WHERE D_E_L_E_T_ = ' '", "QTD")
Documentações:
https://tdn.totvs.com/display/tec/DBEval
https://tdn.totvs.com/display/tec/DBSelectArea
https://tdn.totvs.com.br/display/public/framework/MPSysOpenQuery
https://tdn.totvs.com.br/display/public/framework/FWTemporaryTable
https://www.postgresql.org/docs/8.2/functions-aggregate.html
https://learn.microsoft.com/pt-br/sql/t-sql/functions/count-transact-sql
https://docs.oracle.com/en/database/oracle/oracle-database/19/sqlrf/COUNT.html
https://www.w3schools.com/sql/sql_count.asp
https://tdn.totvs.com.br/display/public/framework/MPSysExecScalar