× Linguagem de Programação ADVPL

Perguntas Não encontro o registro na tabela SA1 com dbSeek

Mais
10 anos 4 meses atrás #23633 por GCarvalho_14
Bom dia a todos,

Estou iniciando em adpvl e usei as função dbSeek para encontrar um registro na tabela SA1990, no entanto, não há nenhum retorno do registro.
Já pesquisei em vários lugares sobre o dbSeek, mas ainda não compreendi bem a sintaxe da função.



Att.: Glauber

Por favor Acessar ou Registrar para participar da conversa.

Mais
10 anos 4 meses atrás #23634 por Edumantoan
Bom dia, vai um exemplo para você

dbSelectArea("SB1") //Seleciona a tabela SB1
SB1->(DbSetOrder(1)) // Seleciona o índice 1 que é no caso B1_FILIAL+B1_COD
Dbseek(xFilial("SB1")+cCodProd)//Posiciono o ponteiro na Filial que estou logado + no Código do produto
cDescProd := SB1->B1_DESC //Obtenho a descrição do produto que eu quero e jogo em uma variável
SB1->(dbCloseArea())// Fecho a tabela

O lugar ideal para suas dúvidas é no TDN
tdn.totvs.com/pages/viewpage.action?pageId=23889301

Por favor Acessar ou Registrar para participar da conversa.

Mais
10 anos 4 meses atrás #23635 por admin
Glauber bom dia, em que momento esta tentando dar o dbseek ? se a tabela SA1 estiver com um determinado filtro aonde o codigo desejado não satisfaça a condição, o dbseek não irá encontra-lo mesmo ok.

Eduardo aqui também é o Lugar ideal para a retirada de dúvidas, o tdn também.

Abraços.

Por favor Acessar ou Registrar para participar da conversa.

Mais
10 anos 4 meses atrás #23640 por GCarvalho_14
Boa Tarde Admin,

Segue o meu código

User Function LocReg()

DbSelectArea("SA1")
DbSetOrder(1)
If dbSeek( " 1 " + " 32" + " 0")
Alert("Registro localizado")
Else
Alert("Registro nao localizado!")
EndIf
Return

Na Apsdu em SA1 eu encontrei o registro, esta:

A1_FILIAL = 1
A1_COD = 32
A1_LOJA = 0

Mas no meu caso, não sei o motivo pelo qual não retorna verdadeiro.

Por favor Acessar ou Registrar para participar da conversa.

Mais
10 anos 4 meses atrás #23641 por lalberto
Glauber o campo código deve possuir o tamanho de 6 caracteres

tente assim:

DbSelectArea("SA1")
DbSetOrder(1)
If dbSeek( xFilial("SA1") + PadR("32",6) + "01")
Alert("Registro localizado")
Else
Alert("Registro nao localizado!")
EndIf
Return


Geralmente o codigo do cliente deve possuir zeros a esquerda, é o mais indicado.

Exemplo:

A1_COD = 000023
A1_LOJA= 01

Por Padrão todo o dbseek acrescente a funçaõ xFilial(Alias) que irá retornar a filial que o usuario está logado, exemplo: 01, 02 ou 0101 ou 0202 etc.

Tente usar este exemplo abaixo:

cCodigo := '000023'
cLoja := '01'

If SA1->(dbSetOrder(1), dbSeek(xFilial("SA1")+cCodigo+cLoja))
Alert("Achei o Cliente !")
Else
Alert("Nao Achei o Cliente !")
Endif

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
10 anos 4 meses atrás - 10 anos 4 meses atrás #23670 por GCarvalho_14
Luiz Alberto, bom dia.

Infelizmente não tive como responder antes, porque acabei ficando sem internet. Peço desculpa por isso.

Funcionou. Muito Obrigado.

Eu tive que dropar a tabela SA1, e depois cria - la novamente, em segui rodei o código que você escreveu e ai deu certo. Antes de fazer isto eu rodei o seu código e continuava dando o mesmo problemas de antes.

Enfim, funcionou!

Só uma coisa, quando você passou a expressão

If SA1->(dbSetOrder(1), dbSeek(xFilial("SA1")+cCodigo+cLoja))

As variáveis cCodigo e Cloja são entendida como A1_COD e A1_Loja ?

Muito Obrigado!

Espero logo ganhar fluência na linguagem e poder ajudar os outros.
Ultima edição: 10 anos 4 meses atrás por GCarvalho_14.

Por favor Acessar ou Registrar para participar da conversa.

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