Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.
Comentário: Alteração do comportamento de validação
OcorrênciaFalha de inserção ou update de registro, retornando um erro do Banco de Dados em uso, informando que uma determinada coluna da tabela não existe, quando a aplicação AdvPL tenta fazer uma inserção ou atualização usando um ALIAS de ta tabela aberta internamente pelo FrameWork do AdvPL

Quando a aplicação

Inclusão de trecho
AdvPL
AdvPL
nopaneltrue
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

– normalmente pela MBROWSE do ERP Microsiga. 

, ocorre falha na operação, retornando um erro específico do SGDB utilizado.

Trechos de mensagens de erro:

Bloco de código
titleMensagem 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 )
Bloco de código
titleMensagem 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

deveria ser

usada

utilizada para inserção ou alteração de dados, apenas consulta. Sem uma proteção específica para estas condições,

o DBAccess submetia ao Banco de Dados

caso a aplicação AdvPL atribuísse qualquer conteúdo em uma coluna virtual, nas operações de inserção ou alteração, o 

Inclusão de trecho
DBAccess
DBAccess
nopaneltrue
submetia ao SGDB uma instrução que fatalmente não seria executada

por referenciar

, pois referenciava colunas que não existem fisicamente (virtual columns), retornando um erro

do SGDB

após enviar ao Banco de Dados a instrução de atualização

Ao ser implementada a proteção destas operações no DBAccess para tabelas com estas características, o DBAccess retorna uma condição de erro informando que a operação solicitada não é válida para a tabela em questão, retornando as seguintes ocorrências de erro:

  • 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:

    Foi implementada uma melhoria no tratamento desta ocorrência, onde o

    Inclusão de trecho
    dbaccess
    dbaccess
    nopaneltrue
     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:

    Sem Formato
    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 
    :Update
    )




    Informações adicionais
    • Referente ao chamado: DBTEC-792