Ajude o site desativando o bloqueador de anúncio
Cabeçalho

TCGenQry [AS]

Autor: Eurai Criado: 01/01/2016 Atualizado: 25/04/2025 Acesso a Dados
Postagem

Descrição

TCGenQry [AS] - Permite a abertura de uma query diretamente no banco de dados utilizado na conexão atual, mediante uso da RDD TOPCONN..

 

Sintaxe

TCGenQry( <xPar1>, <xPar2>, <cQuery> )

 

Parâmetros


Par Nome Tipo Descrição Default Obg Ref
01
xPar1
Indefinido
Compatibilidade
     
02 xPar2
Indefinido
Compatibilidade
     
03 cQuery
Caracter
Indica a expressão da query que será aberta
X    

 

Retorno

Retorno Tipo Descrição
cRet Caracter
Retorna sempre uma string vazia.

 

Exemplo

#INCLUDE "TOTVS.CH"

Static cCRLF	:= CRLF

User Function TCGenQry()
Local cQuery	:= ""


If Select("Qry1") > 0//Verifica se ja existe alias criado
	Qry1->( dbCloseArea() )
Endif

cQuery := cCRLF + "	SELECT  "
cQuery += cCRLF + "		A1_NOME "
cQuery += cCRLF + "	FROM "
cQuery += cCRLF + RetSqlName("SA1") + " SA1 "
cQuery += cCRLF + "	WHERE "
cQuery += cCRLF + " 	SA1.D_E_L_E_T_ <> '*' "

DbUseArea(.T.,"TOPCONN",TcGenQry(,,ChangeQuery(cQuery)),"Qry1",.T.,.T.)


If Qry1->( !EOF() )
	
	MsgInfo( 'Query Dados', 'UniversoADVPL' )
	
Endif



Return( Nil )Resultado

tcgenqry_-_resultado_01                                       

 

 

Informações adicionais

Essa função determina que a próxima chamada à função DBuseArea() será a abertura de uma query na conexão atual com um SGBD, e não de uma tabela física, quando utilizada a RDD "TOPCONN". Devido à dependência direta da chamada subsequente da função DbUseArea() para a abertura efetifva daquery, foi adotada a convenção de chamar a função TCGenQry() como terceiro parâmetro para a função DbUseArea() .A string contendo a query a ser aberta é enviada diretamente ao DBAccess, que por sua vez fará a execução do statement diretamente no SGBD em uso pela conexão, fará um "describe" das colunas de retorno do statement, e retornará em caso de sucesso a definição de colunas retornadas pela query. O Application Server, por sua vez, ao receber a confirmação de sucesso da operação e a definição de colunas, vai abrir a query como se fosse uma tabela física normal, sob o alias especificado como parâmetro para a função DbUseArea(), onde a estrutura de dados dessa tabela  "virtual" corresponde a uma definição similar à retornada pela função DBStruct().Logo, ao abrirmos uma query no AdvPL, podemos retornar diretamente apenas campos  "caractere" (Char ou VarChar do SGBD) e numéricos (INT e/ou FLOAT). Caso alguma coluna selecionada não atenda estes quesitos, ela será removida da estrutura de retorno no momento da abertura da query

O retorno desta função deve ser passado como o 3° parâmetro da função DbUseArea() — que corresponderia ao nome da tabela.

 

 

 

 

 

Gostou? Compartilhe com seus amigos e deixe um comentário! 😎  

 

 

 

 

 

 

 

ASSINE A NEWSLETTER

Cadastrando...

PIX uDesenv

PIX QR Code para depósito

Clique para doar

Parceiros

Tudo em ADVPL - Blog parceiro

Blog ADVPL