Posicione
Atalho que faz DBSeek + retorno do campo solicitado em uma chamada. Preserva area corrente. Padrao em consultas pontuais.
Assinatura: Posicione(cAlias, nOrdem, cChave, cCampo) -> xValor
Retorna: Any
Posicione e a forma mais limpa de buscar 1 valor numa tabela: posiciona via DBSeek e ja retorna o campo, sem precisar do DBSelectArea + DBSetOrder + verificacao manual.
Sintaxe
xValor := Posicione(cAlias, nOrdem, cChave, cCampoOuExpressao)Exemplo
// Pegar nome do cliente:
cNome := Posicione("SA1", 1, xFilial("SA1") + cCodCli + cLojaCli, "A1_NOME")
// Expressao calculada:
cDesc := Posicione("SB1", 1, xFilial("SB1") + cCod, "AllTrim(B1_DESC) + ' (' + B1_UM + ')'")Por que usar
- Codigo mais limpo (1 linha vs 5)
- Preserva area corrente automaticamente
- Retorna vazio se nao achar, sem erro
- Suporta expressao no quarto parametro (concatena, formata)
Pegadinha
Se a chave nao existir, retorna valor vazio do tipo do campo (string vazia, 0, .F., data zerada). Use Empty() pra verificar.
Parâmetros
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
cAlias | Character | sim | Alias da tabela |
nOrdem | Numeric | sim | Numero do indice (DBSetOrder) |
cChave | Character | sim | Chave concatenada |
cCampo | Character | sim | Campo ou expressao a retornar |
Exemplos
Buscar nome
cNome := Posicione("SA1", 1, xFilial("SA1") + cCod + cLoja, "A1_NOME")