No vídeo de hoje vamos exemplificar qual é a diferença entre o comando Count To e a função RecCount.
Hoje a dúvida veio de alguns alunos que perguntaram se havia alguma diferença entre contar registros com Count To e com RecCount.
Então foi demonstrado nesse vídeo quais situações que geram diferenças entre os dois recursos.
E abaixo o código fonte desenvolvido para exemplificar:
//Bibliotecas #Include "TOTVS.ch" #Include "TopConn.ch" /*/{Protheus.doc} User Function zVid0051 Função para comparar o Count To e RecCount @type Function @author Atilio @since 24/08/2022 /*/ User Function zVid0051() Local aArea := FWGetArea() Local cQryAux := "" Local nTotalCou := 0 Local nTotalRec := 0 Local nSB1Count := 0 Local nSB1Recno := 0 Local cMensagem := "" //Busca todos os produtos que não estejam bloqueados cQryAux := " SELECT " + CRLF cQryAux += " B1_COD, " + CRLF cQryAux += " B1_DESC, " + CRLF cQryAux += " SB1.R_E_C_N_O_ AS SB1REC " + CRLF cQryAux += " FROM " + CRLF cQryAux += " " + RetSQLName("SB1") + " SB1 " + CRLF cQryAux += " WHERE " + CRLF cQryAux += " B1_FILIAL = '" + FWxFilial("SB1") + "' " + CRLF cQryAux += " AND B1_MSBLQL != '1' " + CRLF cQryAux += " AND SB1.D_E_L_E_T_ = ' ' " + CRLF TCQuery cQryAux New Alias "QRY_AUX" DbSelectArea("QRY_AUX") //Pega o total via RecCount da Query nTotalRec := QRY_AUX->(RecCount()) QRY_AUX->(DbGoTop()) //Pega o total via Count To da Query Count To nTotalCou QRY_AUX->(DbGoTop()) QRY_AUX->(DbCloseArea()) //Pega o total via RecCount da SB1 DbSelectArea("SB1") nSB1Recno := SB1->(RecCount()) SB1->(DbGoTop()) //Pega o total via Count To da SB1 Count To nSB1Count SB1->(DbGoTop()) //Monta a mensagem e exibe cMensagem += "Query da SB1:" + CRLF cMensagem += "Total do <strong>RecCount</strong>: " + cValToChar(nTotalRec) + CRLF cMensagem += "Total do <strong>Count To</strong>: " + cValToChar(nTotalCou) + CRLF cMensagem += CRLF cMensagem += "SB1 padrão:" + CRLF cMensagem += "Total do <strong>RecCount</strong>: " + cValToChar(nSB1Recno) + CRLF cMensagem += "Total do <strong>Count To</strong>: " + cValToChar(nSB1Count) + CRLF MsgInfo(cMensagem, "Atenção") FWRestArea(aArea) Return
Bom pessoal, por hoje é só.
Abraços e até a próxima.