Nesse vídeo demonstraremos a utilização da função DbUseArea que serve para abrir um alias de uma tabela ou de uma query.
Abaixo o código fonte desenvolvido para o exemplo em vídeo acima:
//Bibliotecas
#Include "TOTVS.ch"
/*/{Protheus.doc} User Function zExe135
Abre uma tabela ou uma query
@type Function
@author Atilio
@since 15/12/2022
@see https://tdn.totvs.com/display/tec/DBUseArea
@obs
Função DbUseArea
Parâmetros
+ lNewArea , Lógico , .T. se será um novo alias na memória ou .F. se já irá utilizar um que já esta aberto
+ cDriver , Caractere , Informa o RDD de conexão
+ cFile , Caractere , Arquivo/Tabela/Query a ser aberta
+ cAlias , Caractere , Nome do alias que será atribuído
+ lShared , Lógico , Se .T. outras threads vão poder usar essa tabela senão se for .F. somente a thread que abriu
+ lReadOnly , Lógico , Se .T. é apenas para leitura de dados e não aceitará locks senão se for .F. permitirá manipulação de dados
Retorno
Não possui retorno
**** Apoie nosso projeto, se inscreva em https://www.youtube.com/TerminalDeInformacao ****
/*/
User Function zExe135()
Local aArea := FWGetArea()
Local cQrySBM := ""
//Monta uma query para buscar um grupo de produto com o código 0002
cQrySBM := " SELECT " + CRLF
cQrySBM += " BM_GRUPO, BM_DESC " + CRLF
cQrySBM += " FROM " + CRLF
cQrySBM += " " + RetSQLName("SBM") + " SBM " + CRLF
cQrySBM += " WHERE " + CRLF
cQrySBM += " BM_FILIAL = '" + FWxFilial("SBM") + "' " + CRLF
cQrySBM += " AND BM_GRUPO = '0002' " + CRLF
cQrySBM += " AND SBM.D_E_L_E_T_ = ' ' " + CRLF
//Abre um novo alias conforme a query passada
DbUseArea(.T., "TOPCONN", TCGenQry( , , cQrySBM), "QRY_TST", .F., .T.)
//Caso haja dados, exibe uma mensagem
If ! QRY_TST->(EoF())
FWAlertInfo("Descrição do grupo: " + QRY_TST->BM_DESC, "Teste DbUseArea")
EndIf
QRY_TST->(DbCloseArea())
FWRestArea(aArea)
Return
Bom pessoal, por hoje é só.
Abraços e até a próxima.