× Linguagem de Programação ADVPL

Perguntas Atualizar tabela no PE

Mais
10 anos 5 meses atrás #23015 por alex.magno
Boa noite pessoal,

Sou novo em advpl e estou tentando fazer o seguinte:
Estou implementando um PE após a gravação do pedido de venda que verifica se algum item do pedido foi alterado, caso positivo eu tenho que atualizar a tabela SC9.
Estou fazendo um loop na tabela SC6 para verificar se algum item foi alterado, quando eu encontro algum registro alterado eu tenho que procurar na tabela SC9 se aquele item existe, se existir na SC9 eu preciso alterar um campo na tabela SC9.

O loop está funcionando fiz via query e uso o while !eof(), dentro do while faço um If no campo que quero verificar, se entrar no If tenho que alterar a tabela SC9 se existir o item nela. Como faço para alterar esse item na tabala SC9 sendo que estou em um loop na tabela SC6?

Por favor Acessar ou Registrar para participar da conversa.

Mais
10 anos 5 meses atrás - 10 anos 5 meses atrás #23042 por angeloprotti1
Respondido por angeloprotti1 no tópico Atualizar tabela no PE
Boa tarde Alex !

Não sei se entendi direito, mas se sim, você pode dar um update na tabela SC9 de acordo com os dados que tem no array, no where faça uma maneira que só tenha aquele arquivo que procura... (chave)

Segue um exemplo:

IF aviso("Atenção !!!","Este Frete contém apenas um item, não será gerada fatura e somente atualizará o Flag, deseja continuar ? ",{"Sim","Não"}) = 1
cUpdte := "UPDATE SZN010 SET "
cUpdte += "ZN_FLFIN = '1', "
cUpdte += "ZN_USFIN = '"+cCodUse+"', "
cUpdte += "ZN_TMFIN = '"+DTeHORA+"' "
cUpdte += "WHERE ZN_COD = '"+aTits[m, 4]+"' AND ZN_DTFECH = '"+DTOS(aTits[m, 6])+"' AND D_E_L_E_T_ <> '*' "
TcSQLExec(cUpdte)
RETURN()
ELSE
RETURN()
ENDIF

Um Abraço
Ultima edição: 10 anos 5 meses atrás por angeloprotti1.

Por favor Acessar ou Registrar para participar da conversa.

Mais
10 anos 5 meses atrás #23055 por THALESCOTR
Respondido por THALESCOTR no tópico Atualizar tabela no PE
Bom dia Alex,

Utilize RecLock(), NÃO utilize UPDATE.

Segue um exemplo:
DbSelectArea("SC9")
DbSetOrder(1)
If DbSeek(valores correspondentes a: C9_FILIAL+C9_PEDIDO+C9_ITEM) //se retornar .T. encontrou
RecLock("SC9",.F.) //altera
SC9->C9_ITEM := "XX"
MsUnlock()
Else
RecLock("SC9",.T.) //inclui uma nova linha
SC9->C9_ITEM := "XX"
MsUnlock()
EndIf


Att
Thales

Por favor Acessar ou Registrar para participar da conversa.

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