Escolar Documentos
Profissional Documentos
Cultura Documentos
Disponibilidade do recurso
Este recurso est disponvel apenas no produto Microsiga Protheus 8.11.
dbUseArea(.T.,'TOPCONN',TcGenQry(,,cQuery),'E2TEMP',.T.,.T.)
TCSetField('E2TEMP','E2_EMISSAO','D',8,0)
Partes do cdigo fonte que devem ser substitudos aparecem entre os sinais de %
(porcentagem). Essas expresses possuem tratamentos especiais em momento de execuo.
Qualquer instruo colocada entre BeginSQL ... EndSQL, que no seja uma expresso %...%,
ser inserida na query que ser enviada para o banco de dados, de forma literal.
Variveis, expresses e funes aparecem iniciando com %exp:%.
Em column deve-se especificar campos da query que so do tipo de dado data, lgico ou
numrico (DATE, LOGIC, NUMBER). Esta linha trocada por chamadas funo TCSetField().
%noparser% indica que a query no deve passar pela funo ChangeQuery() antes de ser
enviada ao banco de dados. Caso no especificado, o padro a string da query ser passada
automaticamente pela funo ChangeQuery().
%table:% substituda por RetSqlName().
%notDel% substituda por D_E_L_E_T_=' '.
%Order:% substituda por SqlOrder (->(IndexKey())).
1 Opo:
2 Opo:
3 Opo:
Limitao
No permitido incluir funes no meio do cdigo embedded. Se precisar, o valor deve ser
guardado em uma varivel antes do incio do BeginSQL.
Exemplo:
tam_cp := GetE2ValorSize()
BeginSql alias 'E2TEMP'
column E2_EMISSAO as Date, E2_VALOR as Numeric(tam_cp,2)
...
EndSql
Erros de compilao
Caso seja utilizado algum argumento invlido para especificar as colunas ou erros de sintaxe
nas expresses que sero transformadas para montagem da query, a compilao do cdigo
fonte interrompida com a ocorrncia Syntax Error, informando a linha em que a primeira
ocorrncia foi encontrada.
Erros de execuo
Query Argument Error: Alias [XXX] already in suse.
Caso a instruo BeginSQL especifique um alias que j esteja aberto (em uso), a aplicao
abortada com ocorrncia de erro fatal, informando em XXX o alias utilizado.
Type Mismach on +
Esta ocorrncia, se reproduzida, informar na pilha de chamadas o nmero da linha do cdigo
fonte correspondente instruo EndSQL. Essa ocorrncia ocorre caso alguma funo
intermediria do engine do Embedded SQL, exclundo-se as funes especificadas na query
com a sintaxe %exp:...%, retornar um contedo no caractere que ser acrescentado na query.
Esta ocorrncia mais dificil de localizar, sendo til nestes casos a anlise do arquivo
temporrio gerado pelo Protheus IDE, no momento da compilao.
%noparser%
SELECT SE2.E2_PREFIXO,SE2.E2_NUM, SE2.E2_FORNECE, SE2.E2_LOJA,SE2.E2_VALOR,
SE2.D_E_L_E_T_ DEL1, QEK.D_E_L_E_T_ DEL2 , QEK.QEK_SKLDOC, SE2.R_E_C_N_O_
SE2RECNO
FROM %table:SE2% SE2,%table:qeK% QEK
WHERE SE2.E2_FILIAL= %xfilial:SE2% AND
qek.%notDel% and
SE2.E2_PREFIXO<> %exp:cPrefixo% AND
SE2.E2_NUM<> %exp:(cAlias)->M0_CODIGO% AND
SE2.E2_NUM<>45
AND
SE2.E2_FORNECE=%exp:Space(Len(SE2->E2_FORNECE))% AND
SE2.E2_EMISSAO<>%exp:MV_PAR06% AND
SE2.E2_LOJA<>%exp:MV_PAR05% AND
SE2.E2_VALOR<>%exp:MV_PAR04% AND
qek.QEK_SKLDOC<>%exp:MV_PAR03% And
SE2.%notDel%
ORDER BY %Order:SE2,1%
EndSql