on 11-13-2015 2:57 PM
Pessoal, bom dia.
Estou montando via Select umas consultas formatadas para gravar em formato Excel um modelo de planilha que servirá como base para geração de impressão de etiquetas via o programa By Label da Elgin L42. Nesses layouts preciso utilizar os dois códigos de barras do cadastro do item (EAN13 e DUN14), porém ao utilizar o campo "CodeBars" da tabela "OITM", só me retorna a primeira linda, o EAN13. Alguém conhece alguma dica ou instrução SQL Server que possa utilizar no Select para obter como retorno na mesma linha os dois códigos de barras do Item?
Segue abaixo a instrução Select utilizado:
SELECT
T1.[ItemCode] as CodItm,
T1.[Dscription] as Descrição,
--T0.NumAtCard as Pedido,
'Estados Unidos' as PaísdeOrigem,
T3.[CodeBars] as EAN13,
T3.[CodeBars] as DUN14,
'09.203.831/0001-35' as CNPJ,
T3.[U_Composicao] as Composição,
T3.[U_Advertencia] as Advertência,
T3.[U_Garantia] as Garantia
FROM ORDR T0
INNER JOIN RDR1 T1 ON T0.[DocEntry] = T1.[DocEntry]
INNER JOIN RDR12 T2 ON T0.[DocEntry] = T2.[DocEntry]
INNER JOIN OITM T3 ON T1.[ItemCode] = T3.[ItemCode]
WHERE T0.[CANCELED] ='N' and T0.[DocEntry] = [%0]
Agradeço de forma antecipada.
Atc,
Boa tarde Néliton.
Na OITM fica gravado apenas o código de barras padrão para o item, quando você possui mais de um código de barras cadastrado para um item deve verificar esta informação na OBCD.
Abaixo fiz uma consulta para retornar uma linha por item, mostrando em uma coluna o código EAN13 e na outra o DUN14, mas para isso será importante padronizar as descrições de criação de códigos de barras, conforme por exemplo no print abaixo:
SELECT T0.[ItemCode], T0.[ItemName], T1.[BcdCode] AS 'EAN13', T2.[BcdCode] as 'DUN14'
FROM OITM T0
LEFT JOIN OBCD T1 ON T0.[ItemCode] = T1.[ItemCode] AND T1.[BcdName] = 'EAN13'
LEFT JOIN OBCD T2 ON T0.[ItemCode] = T2.[ItemCode] AND T2.[BcdName] = 'DUN14'
Recomendo que faça os "joins" usando o LEFT JOIN para retornar inclusive as linhas que não possuam códigos de barras e acrescente uma condição adicional para cada JOIN condicionando um teste na descrição de cada tipo de código de barras. Para exibir as duas colunas, foi preciso fazer duas vezes JOIN com a tabela OBCD, a primeira para apresentar o EAN13 e a segunda para exibir o DUN14.
Espero ter colaborado.
Abraço,
Rodrigo da Costa Feula
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Rodrigo, bom dia!
Funcionou perfeitamente. Quero agradecer pelo apoio e colaboração na resolução e por repassar mais esse conhecimento. Como já utilizarmos como descrição dos códigos de barras "EAN13" e "DUN14", a consulta formata utilizando este Select ficou perfeito.
Só tenho mais uma necessidade para concluir 100% as consultas formatas e gostaria de saber se alguém da comunidade, conhece alguma função ou dica que possa ser aplicada para resolução. O problema é o seguinte:
Após executar a consulta formata em tela, a coluna EAN13 retorna o código de barra perfeitamente (todos os dígitos), porém quando exporto para Excel utilizando o botão MS-EXCEL da barra de ferramentas do SAP B1, o processo ignora os dois primeiros dígitos do código de barras por ser "00".
Exemplo: Código EAN13 correto: 0071160067042 (resultado da consulta formata em tela)
Código EAN13 exportado errado para o Excel: 71160067042
Mesmo o tipo do campo sendo String na exportação para Excel são ignorados os dois primeiros dígitos por ser "00".
Se alguém souber alguma solução para esse caso, agradeço deste já.
Abraços!
Olá Néliton, existe funcionalidade no próprio excel.
Abra o CSV no "bloco de notas" do Windows e salve como TXT, ou renomeie o arquivo de *.CSV para *.TXT.
Depois no Excel, vá em abrir e utilize a opção de "Todos os tipos de arquivos".
Selecione o TXT.
Será iniciado o assistente de importação de texto.
No passo 1, use a opção "Delimitado"
No passo 2, use a opção "ponto e vírgula"
No passo 3, selecione a coluna e use a opção "Texto"
Prontinho, deve ter carregado os dados sem alterar a formatação.
Ah, curso de excel é um pouco mais caro...abraços.
Rodrigo da Costa Feula
Bom dia,
Você também pode fazer assim:
1) Alterar o SQL pra usar a função texto, assim quando for exportado para o Excel, será apresentado corretamente.
SELECT
T0.[ItemCode],
T0.[ItemName],
('=TEXTO('+T1.[BcdCode]+';"0000000000000")' ) AS 'EAN13',
T2.[BcdCode] as 'DUN14'
FROM OITM T0
LEFT JOIN OBCD T1 ON T0.[ItemCode] = T1.[ItemCode] AND T1.[BcdName] = 'EAN13'
LEFT JOIN OBCD T2 ON T0.[ItemCode] = T2.[ItemCode] AND T2.[BcdName] = 'DUN14'
order by t0.itemcode
2) Dentro do Excel, se você tiver acesso ao banco de dados, pode criar uma planilha conectada ao BD com a opção na aba Dados, Consultas.
Eu isso isso em algumas planilhas
Atenção!, fale com o pessoal da TI antes para criar um usuário somente leitura no banco de dados para não executar comandos proibidos ou que destruam os dados, muito cuidado com essa opção.
Att,
Fabio.
SAP 9.0 PL15 / SAP 9.1 PL8
Pessoal, boa tarde.
Apliquei os procedimentos orientados por Rodrigo e Fábio e ambos resolveram o problema. Quero mais uma vez agradecer pelo apoio e empenho de ambos em ajudar a fechar 100% a resolução do caso.
Como o uso da função indicada por Fábio é direto no Select, acabei adotando sua sugestão, visando otimizar o operacional dos nossos usuários finais.
Dica: Com o uso da função =TEXTO direto no Select após executar a consulta formatada, o usuário deverá usar o botão Copiar dado e usar um CTRL+V na planilha Excel. Caso o usuário exporte para Excel utilizando o botão MS-EXCEL da barra de ferramentas, o conteúdo do campo (EAN13) não é copiado corretamente.
Abraços a todos!
User | Count |
---|---|
110 | |
12 | |
11 | |
6 | |
5 | |
4 | |
4 | |
3 | |
3 | |
3 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.