9762 - Update em campo de Usuário (Identificador 000TABPR01).
Problema: Descrição do Problema: O cliente utiliza o identificar de regra 000TABPR01 para alterar o preço unitário, mais para isso efetua uma pergunta e grava essa resposta em um campo de usuário com o comando abaixo:
ExecSQL UPDATE E120PED SET USU_FrePor = 'Matriz' WHERE CodEmp = :vsCodEmp and CodFil = :vsCodFil and NumPed = :VsNumero;
O sistema efetua o Update, colocando a informação no pedido no campo de usuário, porém ao fechar o pedido esse campo é zerado.
Está sendo utilizado a tela F129TMK.
Rotina / Telas: Telas de Pedidos exceto a F120GPD.
Solução: Solução 9762: Esta tela funciona com o conceito de armazenar os dados em memória e gravar apenas no processamento ou fechamento. Isto se aplica também aos campos de usuário.
O que está ocorrendo neste caso é que, o campo é atualizado na regra diretamente na base de dados (comando UPDATE). No momento em que o pedido é fechado, o sistema pega todos os valores que estão na memória e grava na base de dados. Como na memória, o campo de usuário não possui valor, ao gravar o pedido o sistema sobrescreve o valor da base de dados com o valor que está na memória (que é nulo). Por este motivo, o campo é zerado quando o pedido é fechado.
Para resolver esta situação, sugerimos ao cliente utilizar o identificador de regras VEN-120CONDG03 ou VEN-120CONIP03.
O identificador VEN-120CONDG03 é utilizado para consistir os dados gerais do pedido. Nele, todos os campos da tabela E120PED podem ser acessados, inclusive os campos de usuário. A forma de acesso é TABELA.NOME_DO_CAMPO. Neste identificador não é possível retornar valores para campos do sistema, mas para campos de usuário podem ser retornados valores. Os valores retornados aos campos de usuário ficarão armazenados em memória, e no momento em que o pedido será gravado, os campos de usuário também serão gravados na base de dados.
O identificador VEN-120CONIP03 funciona com a mesma lógica do identificador VEN-120CONDG03. A única diferença é que o identificador VEN-120CONIP03 consiste os dados do item do pedido, e estão disponíveis os campos da tabela E120IPD.
Aproveitamos para ressaltar que, em telas para geração de pedido que utilizam o conceito de memória (todas as telas exceto a F120GPD), não adianta fazer comandos UPDATE em regras para gravar campos de usuário. Isto porque, sempre que o pedido for gravado, o sistema irá sobrescrever o valor gravado na regra pelo valor que está em memória. Temos identificadores que disponibilizam campos de usuário e que devem ser utilizados para este fim.
ExecSQL UPDATE E120PED SET USU_FrePor = 'Matriz' WHERE CodEmp = :vsCodEmp and CodFil = :vsCodFil and NumPed = :VsNumero;
O sistema efetua o Update, colocando a informação no pedido no campo de usuário, porém ao fechar o pedido esse campo é zerado.
Está sendo utilizado a tela F129TMK.
Rotina / Telas: Telas de Pedidos exceto a F120GPD.
Solução: Solução 9762: Esta tela funciona com o conceito de armazenar os dados em memória e gravar apenas no processamento ou fechamento. Isto se aplica também aos campos de usuário.
O que está ocorrendo neste caso é que, o campo é atualizado na regra diretamente na base de dados (comando UPDATE). No momento em que o pedido é fechado, o sistema pega todos os valores que estão na memória e grava na base de dados. Como na memória, o campo de usuário não possui valor, ao gravar o pedido o sistema sobrescreve o valor da base de dados com o valor que está na memória (que é nulo). Por este motivo, o campo é zerado quando o pedido é fechado.
Para resolver esta situação, sugerimos ao cliente utilizar o identificador de regras VEN-120CONDG03 ou VEN-120CONIP03.
O identificador VEN-120CONDG03 é utilizado para consistir os dados gerais do pedido. Nele, todos os campos da tabela E120PED podem ser acessados, inclusive os campos de usuário. A forma de acesso é TABELA.NOME_DO_CAMPO. Neste identificador não é possível retornar valores para campos do sistema, mas para campos de usuário podem ser retornados valores. Os valores retornados aos campos de usuário ficarão armazenados em memória, e no momento em que o pedido será gravado, os campos de usuário também serão gravados na base de dados.
O identificador VEN-120CONIP03 funciona com a mesma lógica do identificador VEN-120CONDG03. A única diferença é que o identificador VEN-120CONIP03 consiste os dados do item do pedido, e estão disponíveis os campos da tabela E120IPD.
Aproveitamos para ressaltar que, em telas para geração de pedido que utilizam o conceito de memória (todas as telas exceto a F120GPD), não adianta fazer comandos UPDATE em regras para gravar campos de usuário. Isto porque, sempre que o pedido for gravado, o sistema irá sobrescrever o valor gravado na regra pelo valor que está em memória. Temos identificadores que disponibilizam campos de usuário e que devem ser utilizados para este fim.