Forum
See question

Erro a abrir lista de armazém em editores   

10 views
0
♥ 0

Boa tarde,

Temos um cliente que tem uma lista Primavera de armazéns, onde tem a condição de Armazens.Armazem = A1 e ArmazemLocalizacoes.Localizacao = A1.

A lista funciona sem problemas quando executada. No entanto, quando o cliente tenta alterar o armazém num editor de vendas p.ex., e tendo em conta que é esta a lista predefinida, dá o erro de ambiguous column name.

Já corri o profiler e percebi que o problema está na coluna Armazem:

SELECT [Armazens].[Armazem] AS [Armazens$Armazem], [Armazens].[Descricao] AS [Armazens$Descricao], [ArmazemLocalizacoes].[Localizacao] AS [ArmazemLocalizacoes$Localizacao]
FROM [Armazens] WITH (NOLOCK) LEFT JOIN [ArmazemLocalizacoes] WITH (NOLOCK) ON [Armazens].[Armazem] = [ArmazemLocalizacoes].[Armazem]
WHERE ((([Armazens].[Armazem] LIKE ‘%A1%’) AND ([ArmazemLocalizacoes].[Localizacao] LIKE ‘%A1%’))) AND (Armazem IN (‘A1′,’ATIVO’,’DF’,’EX’,’EXT’,’EXTER’))

Alguém tem alguma ideia para ultrapassar este erro?

Obrigada.

Faça login para poder traduzir
Primavera
Marked as spam
Criado há 1 dia e 22 horas sararodrigues
s
sararodrigues Sara Rodrigues Iniciante
1 answers
0
Private answer


O erro “ambiguous column name” está a ser provocado pela condição final do WHERE:

AND (Armazem IN ('A1','ATIVO','DF','EX','EXT','EXTER'))

Neste contexto, o editor de Cegid Primavera está a montar um SQL onde a coluna Armazem existe em mais do que uma tabela (por exemplo, na tabela principal do editor e na tabela Armazens), e como aqui não está qualificada com o nome da tabela, o SQL Server não sabe a qual coluna se refere.

Para ultrapassar o problema:

  1. Ajustar a condição da lista de armazéns
    No Gestor de Listas (Utilizador > Listas), edite a lista de armazéns que está predefinida e altere a condição:

    De:
    Armazem IN ('A1','ATIVO','DF','EX','EXT','EXTER')

    Para, por exemplo:
    Armazens.Armazem IN ('A1','ATIVO','DF','EX','EXT','EXTER')

    Ou, se pretender filtrar pela localização:
    ArmazemLocalizacoes.Localizacao IN ('A1','ATIVO','DF','EX','EXT','EXTER')

  2. Validar o comando SQL no Management Studio
    Tal como é recomendado em situações semelhantes:

    • Copie o comando SQL da lista no Gestor de Listas.
    • Execute-o no SQL Server Management Studio.
    • Garanta que todas as colunas usadas nas condições estão sempre qualificadas com o nome da tabela ou alias (por exemplo, Armazens.Armazem, ArmazemLocalizacoes.Localizacao).
  3. Repor temporariamente uma lista de sistema
    Se continuar a ter erros nos editores:

    • No Gestor de Listas, adicione uma lista de sistema de armazéns aos favoritos.
    • Abra essa lista e defina-a como lista por defeito para o utilizador.
    • Teste novamente a alteração de armazém nos editores de vendas.

    Isto permite confirmar que o problema está apenas na lista personalizada.

Em resumo, o ponto crítico é garantir que, na lista personalizada, todas as referências à coluna Armazem estão sempre precedidas pelo nome da tabela (Armazens.Armazem ou ArmazemLocalizacoes.Armazem), evitando colunas “soltas” que entram em conflito com o SQL gerado pelo editor.

Esta resposta foi gerada pelo Cegid Pulse, com base na base na informação disponível em histórico.

Ajude-nos a melhorar esta funcionalidade:

• Se a resposta corresponde à sua questão, assinale-a com "Mark as best answer",

• Se a resposta estiver incorreta, dê-lhe um voto negativo e aguarde a resposta da comunidade.


Faça login para poder traduzir
Marked as spam
Criado há 22 horas e 35 minutos cegidpulse
cegidpulse Cegid Pulse Most Valuable Professional