Árvore de páginas


Objetivo

Permitir a utilização do Screen Optimizer em bancos de dados SQL Server.

Descrição

O produto Otimizador de Telas é compatível com a utilização de bancos de dados SQL Server em ambiente Progress (por intermédio do uso de schema holders). Neste processo estão descritos as principais características e cuidados que o usuário deve ter ao utilizar este tipo de ambiente.


  • Gerador de objetos dinâmicos:

O processo de geração de objetos dinâmicos funciona de uma forma um pouco diferenciada em SQL. Para que se possa atualizar o ambiente, é necessária a geração de instruções SQL e de um arquivo de definições para que se possa atualizar o banco Progress (schema holder).

Importante:

O schema holder do banco não deve ser alterado manualmente, deve ser alterado somente por intermédio do Screen Optimizer.


Ao utilizar o gerador, pode ser exibida uma tela de atualização de banco. 
Esta tela é gerada pelo utilitário “Loaddf” do Progress que é utilizado para carregar as definições atualizadas do banco.

Para que se possa gerar os objetos no banco repositório, o banco schema holder (shmgsor) deve ser conectado no modo monousuário (-1) e não pode estar somente leitura (-RO). Também deve se levar em conta que é necessário que existam as permissões necessárias no banco SQL para que as tabelas e atributos também possam ser criados pelo gerador.

Após gerados os atributos, pode-se conectar o banco schema holder (shmgsor) em modo somente leitura (-RO). As permissões para criação de tabelas no banco SQL e a conexão  em modo monousuário no banco schema holder são necessárias apenas quando for necessário executar o gerador de objetos dinâmicos.


  • Formato dos atributos do banco repositório (SOR):

Ao criar um objeto desse tipo, se a propriedade “Tipo dado” tiver o valor “caracter” o valor da propriedade “Formato” é tomado como valor máximo no banco, ou seja, se um objeto com o mesmo nome for criado em outro perfil ou programa que utiliza a mesma tabela, o valor da propriedade “Formato” não pode exceder o tamanho máximo no banco.

Exemplo:

Cria-se um novo perfil “testando” para o programa “x” e no perfil é criado um objeto do tipo “Atributo SOR” com o nome “teste” e com a propriedade “Formato” com o valor “x(60)” (que especifica um tamanho de até 60 caracteres).

Utiliza-se o gerador de objetos dinâmicos que gera uma tabela de extensão no banco repositório e o atributo “teste” com o formato “x(60)”. Depois se cria um novo perfil chamado “testando2” para o mesmo programa “x”, neste perfil também é criado um objeto do tipo “Atributo SOR” com o mesmo nome “teste” (fazendo com que seja utilizado o mesmo atributo do banco repositório) e com a propriedade “Formato” com o valor “x(80)” (que especifica um tamanho de até 80 caracteres).

O problema acontece porque, no novo objeto criado no perfil “testando2”, o formato permite o uso de até 80 caracteres, mas o formato do banco só permite 60. Para os usuários que utilizarem o perfil “testando”, nenhum problema acontecerá por que o campo só poderá ser preenchido na tela com até 60 caracteres, que é o tamanho máximo, já os usuários que utilizarem o perfil “testando2” terão problemas se ultrapassarem o limite de 60 caracteres, já que o tamanho a ser preenchido na tela é no máximo de 80 caracteres e o tamanho máximo no banco é de 60.

Caso o usuário ultrapasse o limite do banco para determinado atributo, o valor digitado não é salvo em banco e apresenta a seguinte mensagem de erro Progress:

"An overflow of a character value. (6176)"

"22001: [Microsoft][ODBC SQL Server Driver] String data, right truncation"

Para que se possa prevenir este tipo de problema deve-se sempre utilizar o botão de zoom para a propriedade “Nome”, pois assim, se for selecionado o nome de um atributo já existente no banco repositório, o formato do novo objeto é automaticamente atualizado conforme o que já existe no banco.