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).

helptec+powerserver+conversaobd.png

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:

helptec+powerserver+gerenciaissupervisao.png

 

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:

helptec+powerserver+identificargerenciais.png

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

helptec+powerserver+exemploconsultajoin.png

 


 

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'