Acesso direto as dados (SQL Server)
Os dados em nosso sistema por motivos diversos estão armazenados em um formato agregado (XML + Hexadecial) e isso não facilita o acesso direto dos clientes, para contornar esse problema foi criado um módulo para processar e exportar esse banco de dados em formato mais amigável.
Com o modulo operando o sistema irá criar e manter atualizado um segundo banco de dados onde as leituras estarão processadas e prontas para uso.
No exemplo abaixo temos:
DB_CLP_4 * |
Banco de dados original. |
TBL_CLP_XT1 | Tabela contendo as leituras (toras/tábuas) (não contém gerenciais). |
DB_CLP_4_PRODUCAO | Novo banco de dados criado pelo módulo. |
SV100_PRODUCAO | Tabela com os dados processados (toras/tábuas) (não contém gerenciais). ** |
* O numero final (4 no exemplo) varia de acordo com a ordem do cadastro dos CLPs.
** Dados que estavam todos em uma única coluna passam a ter uma coluna dedicada para cada valor.
** As colunas variam de acordo com o produto (classificador de toras no exemplo).
Com a tabela acima você terá todas as informações que são geradas pelo CLP (medidas, classes, box, etc), as únicas informações que faltam são as gerenciais entradas pelo supervisório.
Caso precise das informações gerenciais siga os passos abaixo para extrai-las.
No exemplo abaixo será utilizado como referência os seguintes dados gerenciais:
Bancos e tabelas utilizadas:
Banco | Tabela | Descrição |
DB_CLP_4_PRODUCAO | SV100_PRODUCAO | Tabela com as toras/tábuas (gerado pelo módulo). |
DB_CLP_4 | TBL_CLP_XT3 | Tabela de lotes. |
DB_MAIN | TBL_SHARED | Tabela contendo informações diversas (valor/nome das gerenciais) |
Diagrama de como extrair as gerenciais:
A partir da tabela com as toras/tábuas utilize a coluna "IdLote" para localizar o lote correspondente na tabela "TBL_XLP_XT3" no banco "DB_CLP_4". Note que essa ID se encontra dividida em duas partes de 4 dígitos.
"IdLote" -> "Index00" + "Index01"
Com o lote identificado podemos extrair as informações gerenciais. As colunas de Str00 a Str03 guardam a ID do cadastro e o valor tem que ser procurado na tabela "TBL_SHARED" no banco "DB_MAIN". Demais valores são valores em texto e podem ser utilizados diretamente.
Str00 | Produto | Procurar correspondente no DB_MAIN |
Str01 | Operador | Procurar correspondente no DB_MAIN |
Str02 | Fornecedor | Procurar correspondente no DB_MAIN |
Str03 | Madeira | Procurar correspondente no DB_MAIN |
Str04 | Campo livre 5 | Valor em texto |
Str05 | Campo livre 6 | Valor em texto |
Str06 | Campo livre 7 | Valor em texto |
Str07 | Campo livre 8 | Valor em texto |
Str13 | Lote | Valor em texto |
Str14 | Etiqueta | Valor em texto |
Exemplo de consulta juntando todas as tabelas:
SELECT TOP 100
Producao.*,
Produto.Value as Produto,
Operador.Value as Operador,
Fornecedor.Value as Fornecedor,
Madeira.Value as Madeira,
Lotes.Str04 as Campo5,
Lotes.Str05 as Campo6,
Lotes.Str06 as Campo7,
Lotes.Str07 as Campo8,
Lotes.Str13 as Lote,
Lotes.Str14 as Etiqueta
FROM [DB_CLP_4_PRODUCAO].[dbo].[SV100_PRODUCAO] as Producao
LEFT JOIN [DB_CLP_4].[dbo].[TBL_CLP_XT3] as Lotes
ON Producao.IdLote = Lotes.Index00 * 10000 + Lotes.Index01
LEFT JOIN [DB_MAIN].[dbo].[TBL_SHARED] as Produto
ON Lotes.Str00 = Produto.Id
LEFT JOIN [DB_MAIN].[dbo].[TBL_SHARED] as Operador
ON Lotes.Str01 = Operador.Id
LEFT JOIN [DB_MAIN].[dbo].[TBL_SHARED] as Fornecedor
ON Lotes.Str02 = Fornecedor.Id
LEFT JOIN [DB_MAIN].[dbo].[TBL_SHARED] as Madeira
ON Lotes.Str03 = Madeira.Id
Lista todas as gerencias (apenas o nome):
SELECT SUBSTRING([Value], 1, CHARINDEX(';', [Value], 1) - 1) as Nome
FROM [DB_MAIN].[dbo].[TBL_SHARED]
WHERE [Group] = 'Cadastros'
Nenhum comentário