× Linguagem de Programação ADVPL

Perguntas Problema na Alteração - Modelo 2

Mais
10 anos 7 meses atrás - 10 anos 7 meses atrás #17640 por Chferracioli

Arquivo Anexo:

Nome do Arquivo: GRI001.rar
Tamanho do Arquivo:4 KB

Bom dia pessoal,

Por favor estou com problemas na rotina de alteração, sempre quando tento alterar um registo ele sobrescreve o primeiro item.
Exemplo: tenho um registro com 2 itens, se altero e adiciono mais 1 item ao invés de ficar com 3 itens, o primeiro item é sobreposto pelo item 003. No final fico apenas com o item 002 e 003.

Alguém poderia me ajudar?

Obrigado.

Anexo esta o fonte.
Anexos:
Ultima edição: 10 anos 7 meses atrás por Chferracioli.

Por favor Acessar ou Registrar para participar da conversa.

Mais
10 anos 7 meses atrás #17645 por THALESCOTR
Bom dia Cleber,

acredito que o seu problema está no dbssek, pois você está posicionando apenas no numero, então se foi encontrado o numero da solicitação ele apenas altera o registro, se você tem 2 registros já ele vai sobrescrever os 2.

O que você deve fazer é criar um novo indice: Filial + Numero + Produto:
Ficando assim seu DbSeek:

if dbSeek(xFilial("SZI")+cNumero+AllTrim(Acols[nZ][nPosProd]))
SZI->(RecLock("SZI",.F.))
else
SZI->(RecLock("SZI",.T.))
endIf

Ou seja, se ele encontrar o produto, altera, senão insere na tabela.


Att
Thales

Por favor Acessar ou Registrar para participar da conversa.

Mais
10 anos 7 meses atrás #17650 por Chferracioli
Valeu Thales,

Criei o índice e alterei o fonte mas acontece a mesma coisa, tem mais alguma ideia do que posso fazer no DbSeek?

Obrigado.

Por favor Acessar ou Registrar para participar da conversa.

Mais
10 anos 7 meses atrás #17652 por THALESCOTR
O seu Acols, está retornando o tamanho correto, quando você salva ele ele tem 3 linhas? ou possui somente 2?
coloque um alert(Len(acols)) na sua função fsalvar para verificar.

Por favor Acessar ou Registrar para participar da conversa.

Mais
10 anos 7 meses atrás #17655 por Chferracioli
Esta correto, esta retornando de acordo com a quantidade de linhas.

Valeu

Por favor Acessar ou Registrar para participar da conversa.

Mais
10 anos 7 meses atrás #17667 por Chferracioli
Boa tarde pessoal,

Consegui resolver com a ajuda do Thales, alem da dica dele criei um índice mais detalhado com item e produto e funcionou... abaixo segue como ficou o DbSeek.

if dbSeek(xFilial("SZI")+cNumero+AllTrim(aCols[nZ][nPosItem])+AllTrim(Acols[nZ][nPosProd]))

Obrigado pela ajuda.

Por favor Acessar ou Registrar para participar da conversa.

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