Árvore de páginas

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 deveria ser utilizada para inserção ou alteração de dados, apenas consulta. Sem uma proteção específica para estas condições, caso a aplicação AdvPL atribuísse qualquer conteúdo em uma coluna virtual, nas operações de inserção ou alteração, 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 após enviar ao Banco de Dados a instrução de atualização. 

Foi implementada uma melhoria no tratamento desta ocorrência, onde o TOTVS | DBAccess gera uma mensagem de erro específica e diferenciada, que informa explicitamente que não é possível realizar uma atribuição de valor em uma coluna virtual, antes de enviar a instrução ao Banco de Dados. Vide abaixo o exemplo das novas mensagens deste tratamento -- onde <X> indica o nome da coluna virtual envolvida na ocorrência:

DB error (Insert): -27 File: MYTEST - TOP Error -27 - Unsupported VALUE ASSIGN on VIRTUAL JOINED COLUMN <X> ( From tISAMFile::WriteRecord )
DB error (Update): -29 File: MYTEST - TOP Error -29 - Unsupported VALUE ASSIGN on VIRTUAL JOINED COLUMN <X> ( From tISAMFile::Update )




Informações adicionais
  • Referente ao chamado: DBTEC-792
  • Sem rótulos