Árvore de páginas

Você está vendo a versão antiga da página. Ver a versão atual.

Comparar com o atual Ver Histórico da Página

« Anterior Versão 2 Atual »

Ocorrência

Quando a aplicação AdvPL tenta fazer um insert ou update utilizando um ALIAS de tabela que foi aberta internamente pelo Framework da linguagem, usando um recurso de otimização de busca de colunas relacionadas, ocorre falha na operação, retornando um erro específico do SGDB utilizado.

Trechos de mensagens de erro:

Mensagem de erro observada em ambiente Oracle
THREAD ERROR ([8764], usuario, dekstop) 10/09/2019 15:30:10
EE7010: DB error (Insert): -27 File: EE7010 - Error : 904 - ORA-00904: "A1_NOME": invalid identifier
( From tISAMFile::Write )
Mensagem de erro observada em ambiente MSSQL
THREAD ERROR ([4784], usuario, desktop)   19/08/2019 09:49:24
SC5010: DB error (Update): -29 File: SC5010 - Error : 207 (S0022) (RC=-1) - [Microsoft][ODBC SQL Server Driver][SQL Server]Invalid column name 'A1_NOME'.
Error : 8180 (37000) (RC=-1) - [Microsoft][ODBC SQL Server Driver][SQL Server]Statement(s) could not be prepared.
( From tISAMFile::Update )
Melhoria

Uma tabela aberta internamente com colunas agregadas por relacionamento (ou Joined Columns) não deve ser usada para inserção ou alteração de dados, apenas consulta.

Sem uma proteção específica para estas condições, o TOTVS | DBAccess submetia ao SGDB uma instrução que fatalmente não seria executada, pois referenciava colunas que não existem fisicamente (virtual columns), retornando um erro. 

Foi implementada uma melhoria na mensagem apresentada pelo TOTVS | DBAccess, que passa a informar que a operação solicitada é inválida para a tabela em questão.

As seguintes mensagens passam a ser observadas no console do TOTVS | DBAccess:

DB error (Insert): -27 File: MYTEST - TOP Error -27 - Invalid Insert on Table with JOINED Columns ( From tISAMFile::WriteRecord )
DB error (Update): -29 File: MYTEST - TOP Error -29 - Invalid Update on Table with JOINED Columns ( From tISAMFile::Update )
Informações adicionais
  • Referente ao chamado: DBTEC-792
  • Sem rótulos