Forçar Campo nulo a receber 0

Dicas do Oracle Forms Builder - Blocos, Itens, LOV, Canvas, Triggers, comandos, PLL, d2kwutil, FMB, Alert, menus, etc
Responder
Avatar do usuário
rcruz
Rank: Programador Pleno
Rank: Programador Pleno
Mensagens: 32
Registrado em: Ter, 04 Jan 2005 10:52 am
Localização: Candido Mota

Bom dia. meu problema é o seguinte: Estou desenvolvendo um forms no qual tenho uma TAB "QUOCIENTE" que recebe valores referentes a outra tab. O problema é que essas equações estão no "when_validate_item" dos itens a serem somados. Mas quando o item a ser somado ainda esta nulo ocorre erro. também na hora de alimentar essa TAB via "post_query" ocorre erro:

Selecionar tudo

"ORA-01403: não há dados localizados"
. Será que tem alguma forma de forçar o campo do forms a receber 0 se for nulo já que o NVL(campo,0) não funciona, bom, pelo menos no meu caso sempre dá erro, mesmo usando NVL.
Obrigado.
Se alguém puder me ajudar????? :-o
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

Tenta colocar na propriedade "Initial Value" do item apenas 0 (zero).

Manda sua formula aí que a gente pode dar outra ajuda.
Se você colocar NVL no código, deveria funcionar sim...
Avatar do usuário
rcruz
Rank: Programador Pleno
Rank: Programador Pleno
Mensagens: 32
Registrado em: Ter, 04 Jan 2005 10:52 am
Localização: Candido Mota

O problema de colocar initial_value é que o campo não é obrigatório. Se o cara apagar o valor, do mesmo jeito vai ser gravado nulo na tabela, ai na hora da consulta da erro do mesmo jeito. O código é mais ou memos assim.

Selecionar tudo

    :TRD_UNA_ANALISE_CREDITO.ATIVO_TOTAL3 := (nvl(:TRD_UNA_ANALISE_CREDITO.TRD_ATIVO_CIRCULANTE3,0) +
                                              nvl(:TRD_UNA_ANALISE_CREDITO.TRD_ATIVO_REALIZAVEL3,0) +
                                              nvl(:TRD_UNA_ANALISE_CREDITO.TRD_ATIVO_PERMANENTE3,0));
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

Bem, teoricamente, se o campo não pode ficar NULL, basta setá-lo como obrigatório... Mas claro, tem casos que o campo só deve ser preenchido em determinada etapa do processo...

Mas vamos lá:
* Caso o usuário TENHA que preencher algo, o ideal era consistir isso na WHEN-VALIDATE-RECORD... Tipo, faz dar uma mensagem se o campo estiver null e obriga ele a preencher algo.

* Caso você deseja simplesmente setar ZERO quando tem um null, creio que você pode fazer isso na PRE-INSERT ou na PRE-UPDATE... Ali, você coloca os NVL... Daí, quando o user for enviar pro banco, o Forms põe ZERO antes de enviar...

Tenta isso... se não der certo, dá um toque!
Avatar do usuário
rcruz
Rank: Programador Pleno
Rank: Programador Pleno
Mensagens: 32
Registrado em: Ter, 04 Jan 2005 10:52 am
Localização: Candido Mota

Valeu mesmo Dr_Gori, descobri qual é o problema..... você nem imagina... Não é problema no forms e sim na matematica.
Exemplo.

Selecionar tudo

:QUOCIENTES.FAT_EMPRE_FINAN1 := (nvl(:TRD_UNA_ANALISE_CREDITO.TRD_FATURAMENTO_BRUTO1,0) /
                                       (nvl(:TRD_UNA_ANALISE_CREDITO.TRD_PASSIVO_EFCP1,0) +
                                        nvl(:TRD_UNA_ANALISE_CREDITO.TRD_PASSIVO_EFLP1,0)));
Suponhamos que estejam os tres nulos, ou seja
seria : 0 / (0+0); Na matematica não existe divisão po 0.

:shock: :-o :shock:

Rssssssssssssssssssssssss
Até.
Obrigado.
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 10 visitantes