Existem duas possibilidades de erro nas ordenação de linhas de movimentos, porem a correção é a mesma. mostraremos abaixo as duas situações e como buscar e corrigir nos dois casos.

AO USAR COMANDOS DE ALTERAÇÃO NO BANCO DE DADOS, NÃO SE ESQUEÇA DO BACKUP ANTES DE EXECUTA-LOS



Temos dois tipos de comandos para buscar as sequencias desses casos .

Na busca teremos de pegar duas informações para correção, uma é a sequencia do movimento e a outra é a filial, caso tenha mais de uma.

O primeiro abaixo para verificar as linhas duplicadas (assim como a primeira imagem acima).

  • Onde o having count(*)  > 1), define que iremos buscar as linhas que se repetem mais de uma vez.
Select distinct(Sequencia),m.Operacao__Codigo as 'Cod operação',
m.Tipo_Operacao as 'Operação',m.Filial__Codigo as 'Filial'
From Movimento m
Where exists (select Linha,Movimento__Ide
from Movimento_Produto mp
where mp.Movimento__Ide = m.Ide
group by Linha, Movimento__Ide 
having count(*)  > 1)

O segundo abaixo para verificar linhas com numerações grandes (assim como a segunda imagem acima).

  • Onde o where Linha > 5000, define a numeração posterior a que foi definida, ou seja, maior que 5000. Então é só alterar a numeração e ir buscando.
select distinct(m.Sequencia),m.Filial__Codigo,m.Operacao__Codigo as 'Cod operação',m.Tipo_Operacao  as 'Operação'
from Movimento_Produto mp 
join Movimento m on mp.Movimento__Ide = m.ide 
where Linha > 5000

Tendo as sequencias e a filial, partimos agora para a correção:

A PARTIR DESSA ETAPA É NECESSÁRIO FAZER BACKUP DO BANCO DE DADOS.

Usamos o comando abaixo para correção de ambas as situações, fazendo com que seja reordenado as linhas, de 1 em diante. Neste comando, usaremos as informações que conseguimos na parte da busca, essas informações serão preenchidas nos campos Sequencia=1 and Filial__Codigo=1, que serão os unicos campos que precisam/podem ser alterados.

Declare @cont int = 0  
Update Movimento_Produto SET @cont =  linha = @cont + 1 WHERE Movimento__Ide in (select ide from movimento where Sequencia=1 and Filial__Codigo=1);

  • Quando for necessário alterar mais de um movimento, o comando Declare @cont int = 0 deve ser repetido no começo de cada linha e separando as linhas com a palavra GO.
Declare @cont int = 0  
Update Movimento_Produto SET @cont =  linha = @cont + 1 WHERE Movimento__Ide in (select ide from movimento where Sequencia=1 and Filial__Codigo=1);
GO
Declare @cont int = 0  
Update Movimento_Produto SET @cont =  linha = @cont + 1 WHERE Movimento__Ide in (select ide from movimento where Sequencia=2 and Filial__Codigo=1);
GO
Declare @cont int = 0  
Update Movimento_Produto SET @cont =  linha = @cont + 1 WHERE Movimento__Ide in (select ide from movimento where Sequencia=3 and Filial__Codigo=1);

Para montar mais rápido, recomendo fazer a inserção dos dados de filial e sequencia via excel, preenchendo os campos, depois autocompletando o comando

imagem_20220323_164341.png

E para separar as linhas com o GO, é possível utilizar um recurso do SSMS 18 que possibilita pular varias linhas de uma só vez

  • Cole no ssms o comando que arrumou no excel
  • Clique no final da primeira linha
  • Segure a combinação de teclas Shift + Alt
  • Ainda com as teclas pressionadas, clique no final da ultima linha
  • Pare de apertar as teclas e perte a tecla Enter, depois disso escreva GO

GO.gif


Para quem trabalha com SPED ou SINTEGRA, os comandos acima são a solução para estes erros abaixo.

  • No SINTEGRA

  • No SPED


Saiba mais


Oliveiracriado em 12 fev 2021 alterado em 28 out 2026

Base conhecimento Comercial Saidas

693 | 10