× Linguagem de Programação ADVPL

Perguntas Pegar o conteudo de uma tabela

Mais
11 anos 1 mês atrás #17721 por Guto
Pessoal, estou com uma duvida bastante simples, estou alterando um fonte referente a um recibo de salário mas em um determinado momento eu preciso consultar se existe um valor específico na tabela "SRX" que não tem nenhuma ligação com as tabelas "SRA" e "SRC" (Tabelas utilizadas para impressão).

Como eu conseguiria pegar o valor de um registro específico?
Pensei em usar a função Tabela(), mas pelo visto essa função só permite utilizar um campo como chave de identificação, e eu preciso utilizar dois parâmetros, vou dar um exemplo utilizando um select:

SELECT RX_TXT FROM SRX WHERE RX_TIP = '06' AND RX_COD = '1'

No caso, primeiro eu precisaria saber se essa chave existe (RX_TIP = '06' AND RX_COD = '1'), se caso existir, eu preciso pegar o valor do campo RX_TXT.

Por favor Acessar ou Registrar para participar da conversa.

Mais
11 anos 1 mês atrás #17722 por lalberto
Respondido por lalberto no tópico Pegar o conteudo de uma tabela
RX_TIP = '06' AND RX_COD = '1'

cTipo := '01'
cCodi := PadR('06',21)

If SRX->(dbSetOrder(1), dbSeek(xFilial("SRX")+cTipo+cCodi))
cCampo := SRX->RX_TXT
Else
Alert("Codigo ou Tipo Nao Localizado na Tabela SRX")
Return .f.
Endif
Return .t.

Luiz Alberto Vieira Alves
Proprietário
55 (12) 9 8256-5905 (Vivo)
www.3lsystems.com.br
www.masteradvpl.com.br

Por favor Acessar ou Registrar para participar da conversa.

Mais
11 anos 1 mês atrás #17740 por Guto
Respondido por Guto no tópico Pegar o conteudo de uma tabela
Luiz Alberto, teoricamente seria isso mesmo que eu preciso, mas e expressão "If SRX->(dbSetOrder(1), dbSeek(xFilial("SRX")+cTipo+cCodi))" só está retornando "Falso" e o registro existe na tabela.
Tens alguma ideia do que poderia ser?
Não sei se é devido ao alinhamento do campo RX_COD pois o mesmo tem varios espaços em branco.
(Em anexo segue um print da tabela SRX)

Anexos:

Por favor Acessar ou Registrar para participar da conversa.

Mais
11 anos 1 mês atrás - 11 anos 1 mês atrás #17743 por lalberto
Respondido por lalberto no tópico Pegar o conteudo de uma tabela
Faz assim:


If SRX->(dbSetOrder(1), dbSeek(xFilial("SRX")+cTipo+AllTrim(cCodi)))

Luiz Alberto Vieira Alves
Proprietário
55 (12) 9 8256-5905 (Vivo)
www.3lsystems.com.br
www.masteradvpl.com.br
Ultima edição: 11 anos 1 mês atrás por lalberto.

Por favor Acessar ou Registrar para participar da conversa.

Mais
11 anos 1 mês atrás - 11 anos 1 mês atrás #17749 por Guto
Respondido por Guto no tópico Pegar o conteudo de uma tabela
Luiz Alberto, estamos quase lá. :cheer:

O problema é o seguinte, o campo "RX_COD" tem 21 caracteres, como mostrado na imagem, quando o usuário vai preencher os parâmetros da tabela SRX através do modulo de "Gestão de Pessoal" ele tem a opção de inserir ou não a referência da filial, ficando assim:

1- Caso o usuário preencha o campo RX_COD com filial
"01...........1......."

2- Caso o usuário não preencha o campo RX_COD com filial
".............1......."
(Os pontos representam os espaços em branco)

Esse campo é uma das chaves para localização do registro "RX_TXT", e ao usar o "If SRX->(dbSetOrder(1), dbSeek(xFilial("SRX")+cTipo+AllTrim(cCodi)))" ele apenas valida o primeiro exemplo como verdadeiro e o segundo exemplo como falso.

O que preciso fazer é, caso seja utilizado o primeiro exemplo, o IF deve ser verdadeiro para os funcionário que estão apenas na filial 01, já no segundo exemplo o IF será verdadeiro para todos os funcionários. :blush:


Tem alguma ideia de como posso fazer isso?
Ultima edição: 11 anos 1 mês atrás por Guto.

Por favor Acessar ou Registrar para participar da conversa.

Mais
11 anos 1 mês atrás #17755 por Guto
Respondido por Guto no tópico Pegar o conteudo de uma tabela
Consegui resolver!

Criei uma variável cRXFilal com tamanho de 12 caracteres e outra cRXCod com 1 caracter, porque o código do registro é salvo sempre na 13° posição do campo RX_COD, ficou assim:

If SRX->(dbSetOrder(1), dbSeek(xFilial("SRX")+cTipo+cRXFilal+cRXCod))

Espero que isso possa ajudar outras pessoas.


Obrigado Luiz Alberto, sua ajuda foi imprescindível. B)

Por favor Acessar ou Registrar para participar da conversa.

Tempo para a criação da página:0.127 segundos
Joomla templates by a4joomla