Autor Tópico: [Resolvido]Postgresql Campo INET ou CIDR com problema no scriptcase.  (Lida 649 vezes)

alubale

  • Novato
  • *
  • Mensagens: 22
    • Email
[Resolvido]Postgresql Campo INET ou CIDR com problema no scriptcase.
« Online: Novembro 23, 2015, 09:55:24 am »
Pessoal, estou desenvolvendo algumas aplicações onde tenho no banco de dados PostgreSQL campos tipo INET ou CIDR.
O scriptcase trata os campos como texto, mas os campos são especiais. Quando crio o formulário e quero inserir com algum campo vazio, o Scriptcase manda uma " '' "(aspas aspas) e isso é inválido para o Banco de Dados. O correto seria ele enviar " NULL " (Sem aspas). Alguem passou pelo mesmo problema?
Acredito que isso seja um BUG do scriptcase e seria ótimo se alguem conseguisse resolver. Tenho muitas aplicações usando esse tipo de campo no banco de dados e está complicado contornar essa situação.
Atualmente estou usando Scriptcase 8.1.017
« Última modificação: Dezembro 10, 2015, 08:37:29 am por Yuri Esteves »
The future is now!!!

Thyago Brasil

  • Expert
  • *****
  • Mensagens: 886
  • Crê no Senhor Jesus e será salvo tu e tua família
    • www.brasdesign.com.br
    • Email
Re:Postgresql Campo INET ou CIDR com problema no scriptcase.
« Responder #1 Online: Novembro 23, 2015, 09:58:18 am »
Opa, blz? Já tentou colocar o campo como default NULL no banco de dados e lá no Editar Campos colocar como Campo calculado pelo Banco de dados se vazio?
Thyago Brasil
Desenvolvedor Web
Site: http://www.brasdesign.com.br

SC 5.02/SC 8.1

BobyTow

  • Novato
  • *
  • Mensagens: 15
    • Email
Re:Postgresql Campo INET ou CIDR com problema no scriptcase.
« Responder #2 Online: Novembro 23, 2015, 10:02:41 am »
Estou com esse mesmo problema ... Espero que nos ofereçam alguma solução.
I got this

alubale

  • Novato
  • *
  • Mensagens: 22
    • Email
Re:Postgresql Campo INET ou CIDR com problema no scriptcase.
« Responder #3 Online: Novembro 23, 2015, 10:04:18 am »
Thyago, no insert funciona essa sugestão perfeitamente, já até havia implementado assim, mas o grande problema é na atualização.
Na atualização nao existe um "Calculado pelo banco de dados se Vazio", somente "Calculado pelo banco de dados".
Se colocar como Calculado pelo banco de dados ele não envia a alteração, se colocar normal ele envia '' (aspas aspas) e dá erro.
The future is now!!!

Thyago Brasil

  • Expert
  • *****
  • Mensagens: 886
  • Crê no Senhor Jesus e será salvo tu e tua família
    • www.brasdesign.com.br
    • Email
Re:Postgresql Campo INET ou CIDR com problema no scriptcase.
« Responder #4 Online: Novembro 23, 2015, 10:05:27 am »
Outra solução é verificar se o campo estiver vazio, informar para o mesmo null. Ex:

Faça isso no onBeforeUpdate
Código: [Selecionar]
if (empty({campo})){
    {campo} = NULL;
}
Thyago Brasil
Desenvolvedor Web
Site: http://www.brasdesign.com.br

SC 5.02/SC 8.1

alubale

  • Novato
  • *
  • Mensagens: 22
    • Email
Re:Postgresql Campo INET ou CIDR com problema no scriptcase.
« Responder #5 Online: Novembro 23, 2015, 10:09:25 am »
Acabei de testar aqui Thyago e aconteceu o mesmo problema, o Scriptcase converteu meu NULL para aspas aspas na hora de dar o UPDATE.
Citar
if (empty({rnggw})){
   {rnggw} = '0.0.0.0';
}

Desta forma até funciona, mas nao queria o valor '0.0.0.0' no campo, queria NULL.

Existem formas de corrigir via Trigger no Banco de dados, estou partindo pra isso agora. Mas gostaria muito que o pessoal da NETMAKE olhasse isso, pois realmente é um BUG.
The future is now!!!

Thyago Brasil

  • Expert
  • *****
  • Mensagens: 886
  • Crê no Senhor Jesus e será salvo tu e tua família
    • www.brasdesign.com.br
    • Email
Re:Postgresql Campo INET ou CIDR com problema no scriptcase.
« Responder #6 Online: Novembro 23, 2015, 10:11:56 am »
Tente isso:

Código: [Selecionar]
if (empty({campo})){
    {campo} = NULL;
    // OU
   {campo} = 'NULL';
}
Thyago Brasil
Desenvolvedor Web
Site: http://www.brasdesign.com.br

SC 5.02/SC 8.1

alubale

  • Novato
  • *
  • Mensagens: 22
    • Email
Re:Postgresql Campo INET ou CIDR com problema no scriptcase.
« Responder #7 Online: Novembro 23, 2015, 10:21:01 am »
Também não funcionou.


Mesmo erro.
The future is now!!!

Thyago Brasil

  • Expert
  • *****
  • Mensagens: 886
  • Crê no Senhor Jesus e será salvo tu e tua família
    • www.brasdesign.com.br
    • Email
Re:Postgresql Campo INET ou CIDR com problema no scriptcase.
« Responder #8 Online: Novembro 23, 2015, 10:21:57 am »
Sabe se ele chega a entrar no if?
Thyago Brasil
Desenvolvedor Web
Site: http://www.brasdesign.com.br

SC 5.02/SC 8.1

alubale

  • Novato
  • *
  • Mensagens: 22
    • Email
Re:Postgresql Campo INET ou CIDR com problema no scriptcase.
« Responder #9 Online: Novembro 23, 2015, 10:25:23 am »
Entra sim.

Veja no Print que ele tentou gravar 'NULL' quando coloquei {campo} = 'NULL'; (com aspas)
Quando coloca {campo} = NULL sem aspas ele troca o NULL por '' e ferra do mesmo jeito.

The future is now!!!

Thyago Brasil

  • Expert
  • *****
  • Mensagens: 886
  • Crê no Senhor Jesus e será salvo tu e tua família
    • www.brasdesign.com.br
    • Email
Re:Postgresql Campo INET ou CIDR com problema no scriptcase.
« Responder #10 Online: Novembro 23, 2015, 10:30:35 am »
Tente enviar o problema para este email então:

bugs@netmake.com.br
Thyago Brasil
Desenvolvedor Web
Site: http://www.brasdesign.com.br

SC 5.02/SC 8.1

alubale

  • Novato
  • *
  • Mensagens: 22
    • Email
Re:Postgresql Campo INET ou CIDR com problema no scriptcase.
« Responder #11 Online: Novembro 23, 2015, 10:32:04 am »
Eu consegui resolver adicionando uma trigger no banco de dados com o seguinte trecho de codigo
Código: [Selecionar]
IF (TG_OP = 'INSERT' OR TG_OP = 'UPDATE') THEN
IF (NEW.rnggw << NEW.range OR NEW.rnggw = '0.0.0.0') THEN
NEW.rnggw = NULL;
END IF;

No scriptcase coloquei pra setar como '0.0.0.0' quando for vazio.
Código: [Selecionar]
if (empty({rnggw})){
{rnggw} = '0.0.0.0';
}

É uma gambiarra, pois pelo que ví o Scriptcase não consegue trabalhar corretamente com campos INET ou CIDR do PostgreSQL
The future is now!!!

alubale

  • Novato
  • *
  • Mensagens: 22
    • Email
Re:Postgresql Campo INET ou CIDR com problema no scriptcase.
« Responder #12 Online: Novembro 23, 2015, 10:38:23 am »
Thyago, muito obrigado pela atenção. Email enviado a NETMAKE. Espero que possam corrigir esse campo em breve. Ele já melhorou, visto que no SC7 ele travava a aplicação, no SC8 pelo menos ele insere, porém nao trabalha com campos nulos ou vazios.
Valeu. Grande Abraço.
The future is now!!!

Thyago Brasil

  • Expert
  • *****
  • Mensagens: 886
  • Crê no Senhor Jesus e será salvo tu e tua família
    • www.brasdesign.com.br
    • Email
Re:Postgresql Campo INET ou CIDR com problema no scriptcase.
« Responder #13 Online: Novembro 23, 2015, 10:40:45 am »
Blz André. Te mandei uma mensagem em privado. Dá uma olhada lá.
Thyago Brasil
Desenvolvedor Web
Site: http://www.brasdesign.com.br

SC 5.02/SC 8.1

Yuri Esteves

  • Administrator
  • Expert
  • *****
  • Mensagens: 818
    • Email
Re:Postgresql Campo INET ou CIDR com problema no scriptcase.
« Responder #14 Online: Novembro 30, 2015, 04:01:50 pm »
Prezados,

O problema reportado foi corrigido e será liberado na próxima release.

A correção estará disponivel na release 8.1.018

Agradecemos a colaboração de todos.