21541 - Conexão Banco de Dados - Cannot focus perform this operation / TR999GRF
Problema: Descrição do Problema: ao efetuar processos dentro do ERP Senior (diversas telas e rotinas - inclusive AçõesSID e WebServices) são gerados erros genéricos, como por exemplo:
Rotina / Tela: várias rotinas e telas do sistema
Solução:
E120PED: Cannot focus perform this operation on a closed dataset
Não é possível inserir registro com chave duplicada em classe[TR999GRF] Componente[] Form[Indefinido] MainCursor.
Solução:
Solução: Esta situação ocorre devido a utilização uma regra de ordenação (collation) no CBDS diferente da regra de ordenação do banco de dados.
Este problema pode ocorrer quando:
- É feito backup em uma base de dados a qual herda a configuração do banco, e feito restore em outra base de dados com outra configuração de banco;
- Alguém definiu a regra incorreta no CBDS.
Para saber qual a regra de ordenação a base de dados deve utilizar o cliente deve executar o seguinte comando.
Para banco de dados SQL Sever:
Select collation_name from sys.databases where name = <nome_do_database> ou
Select convert(varchar, databasepropertyex(<nome do database>, 'collation'))
Para banco de dados Oracle:
Select value from v$nls_parameters where Upper(Parameter) = 'NLS_LANGUAGE'
Exemplo de situação onde o problema pode ocorrer: utilizado banco de dados SQLServer e o select retornou que o collation da base de dados é Latin1_General_CI_AS.
Porém alguém ou um restore em um outro database setou a regra no CBDS para SQL_Latin1_General_CP1_CI_AS a qual não é a mesma do banco de dados.
Maiores informações sobre regras de ordenação podem ser verificadas em: https://documentacao.senior.com.br/tecnologia/6.2.34/index.htm#bancos-de-dados/regras/collationregra.htm
As regras de ordenação homologadas pela Senior estão documentadas em: https://documentacao.senior.com.br/tecnologia/6.2.34/index.htm#bancos-de-dados/sql-server/menu_ordenacao.htm
O que deve ser feito para resolver o problema?
Deve-se utilizar no CBDS uma regra de ordenação (collation) que seja compatível com a regra de ordenação que esteja definida no banco de dados.
ATENÇÃO: Se a regra retornada no select for uma regra não homologada pela Senior, deverá obter essa regra através do banco de soluções 23775.
Passos para aplicar a regra de ordenação no CBDS:
---------------------------------------
1- Sair do sistema em todo o ambiente;
2- Abrir o CBDS e conectar na base de dados com usuário do banco de dados;
3- Acessar o menu Ferramentas > Recursos do banco > Regras para ordenação customizada;
4- Aplicar a regra de ordenação correta e garantir a ativação da opção Usa Collation. Acionar o botão Salvar da tela.
5- Entrar o sistema novamente.
Observação: se algum usuário estava conectado quando o processo foi realizado, é importante que ele feche o sistema e abra-o novamente. O reinicio do SeniorMiddleware também é recomendado.
---------------------------------------
Informação adicional: em versões atualizadas dos sistemas da Senior a tecnologia da Senior se comporta da seguinte forma:
- Se existe Collation ativo e uma regra de ordenação customizada definida no CBDS: mantém a regra definida pelo cliente no CBDS (mesmo que ela seja incompatível com a regra do banco de dados e possa causar problemas na utilização do sistema);
- Se não existe Collation ativo (parâmetro Usa Collation do CBDS): ao ser aberto o sistema é efetuada a verificação de qual é o Collation que o banco de dados está utilizando. Com base neste Collation, o sistema busca uma das regras de ordenação homologadas pela Senior e aplica automaticamente no CBDS (mesmo que uma regra já tenha sido aplicada pelo cliente anteriormente no CBDS, ela é automaticamente substituída com pela regra homologada e compatível com o Collation do banco de dados). Ao final do processo, a opção de Usa Collation vai estar novamente marcada no CBDS, utilizando uma regra homologada pela Senior e compatível com o Collation do banco de dados do cliente.
Observação: o documento Exemplo de como desativar o uso do Collation.docx em anexo exemplifica como pode ser desativado o uso da regra de ordenação customizada, para que, a partir da próxima execução do sistema automaticamente seja utilizado um Collation homologado pela Senior.
Sendo assim, ao ser desmarcada a opção Usa Collation no CBDS e aberto o sistema novamente, o sistema passa a utilizar uma regra de ordenação homologada pela Senior, fazendo com que o problema não ocorra mais também.
Atenção:
- Caso haja desejo de utilizar uma regra de ordenação diferente da homologada pela Senior, deve-se garantir a compatibilidade da regra aplicada no CBDS com a regra do banco de dados. No entanto, ainda assim assume-se risco pela utilização de uma regra não homologada que poderá ocasionar problemas na execução de rotinas do sistema.
- Orienta-se a utilização de versões atualizadas dos sistemas da Senior para que haja garantia de que o conceito do sistema seja idêntico ao determinado acima.