Manipulação de Base de Dados
RetSqlName(cAlias); xFilial(cAlias); ChangeQuery(cSQL)Separa leitura, escrita e contexto de acesso no Protheus.
Visão geral
O acesso via DBAccess mantém particularidades do Protheus: nome físico obtido por RetSqlName, filial calculada por tabela com xFilial e exclusão lógica por D_E_L_E_T_. Consultas SQL exigem seleção explícita de campos, ajuste de tipos quando necessário e fechamento do cursor. Escrita deve seguir regras, permissões e APIs do processo; UPDATE direto não equivale à execução da regra de negócio. O exemplo apenas monta SQL, sem abrir cursor nem alterar dados. (Fontes: refs. 1–1.)
Sintaxe
RetSqlName(cAlias); xFilial(cAlias); ChangeQuery(cSQL)Exemplo comentado
#Include "Protheus.ch"
User Function Ed516()
Local cSQL := "SELECT A1_COD,A1_LOJA FROM "+RetSqlName("SA1")
// Somente construir; nenhum acesso ou escrita e executado.
cSQL += " WHERE A1_FILIAL = '"+xFilial("SA1")+"'"
cSQL += " AND D_E_L_E_T_ = ' '"
ConOut(ValType(cSQL))
Return NilImprime C. A consulta precisa de execução controlada e tratamento de cursor para ler dados. Em revisão: exemplo editorial não compilado nem executado em Protheus. Conferir includes, release, RDD e contexto antes de homologar.
- Não concatenar entrada livre em SQL. Validar permissões, escopo de filial, transações e erros de gravação. Guardar e restaurar áreas de trabalho.
- Em revisão: exemplo editorial não compilado nem executado em Protheus. Conferir includes, release, RDD e contexto antes de homologar.

Comentários
Ainda não há comentários aprovados.
Entre com Google ou Microsoft para comentar.