Autor Tópico: Sugestão - Chave Unica  (Lida 1413 vezes)

Régis Matos

  • Global Moderator
  • Expert
  • *****
  • Mensagens: 639
  • Se a porta não se abrir, construa uma.
    • Email
Sugestão - Chave Unica
« Online: Julho 22, 2012, 06:28:55 pm »
Olá,


Eu já sugeri varias x, e estou postando novamente esta sugestão...


Que a chave unica tenha uma opção de somente validar quando tiver informação no campo.

Ex. Chave Unica no campo CPF.

Se o usuário digitar o CPF. o sistema verifica se o CPF já está cadastrado, caso o usuário deixa em branco, o sistema não valida e concluir o cadastro...


Eu praticamente não consigo usufruir desse recurso Chave Unica, por esse motivo, tendo que escrever o código.


ah, aproveitando a oportunidade, se tiver a possibilidade de personalizar a mensagem da chave unica melhor ainda... pois a mesma dependendo da combinação dos campos a mensagem não fica clara para o usuário final.


Att - Régis

Haroldo

  • Expert
  • *****
  • Mensagens: 8885
  • Conhecimento diminui limitações.△TFA△
    • InfinitusWeb Software de Gestãol/Gestão ITIL/Consultoria Scriptcase
Re:Sugestão - Chave Unica
« Responder #1 Online: Julho 23, 2012, 12:44:24 pm »
E permite gravar em branco?
Se a chave é única deve ser obrigatório os valores preenchidos.
Não faz sentido.

Régis Matos

  • Global Moderator
  • Expert
  • *****
  • Mensagens: 639
  • Se a porta não se abrir, construa uma.
    • Email
Re:Sugestão - Chave Unica
« Responder #2 Online: Julho 23, 2012, 02:50:22 pm »
E permite gravar em branco?
Se a chave é única deve ser obrigatório os valores preenchidos.
Não faz sentido.

Então Haroldo, é que depende muito da rega de negocio.

Eu tenho muitas validações que tive que fazer na mão por que a chave unica não tem essa flexibilidade que deveria ter.

Um ex. ao preencher o cpf, ele valida chave unica.

Caso não preencha(Menor de idade) ele não valida... pois nesse exemplo o CPF não é um dado obrigatório.

Como o CPF não é um dado obrigatório e no sistema precisa validar somente quando digita dado no campo para não deixar cadastrar 2 cpf iguais... ex. nesse caso tenho que escrever o código da validação.

 
 





Haroldo

  • Expert
  • *****
  • Mensagens: 8885
  • Conhecimento diminui limitações.△TFA△
    • InfinitusWeb Software de Gestãol/Gestão ITIL/Consultoria Scriptcase
Re:Sugestão - Chave Unica
« Responder #3 Online: Julho 23, 2012, 03:36:26 pm »
então não coloque como chave única obrigatória.

E teste a mesma no seu evento ajax onchange.

Jônatas Sellos

  • Novato
  • *
  • Mensagens: 45
  • Conhecimento não ocupa espaço. O saber é infinito.
    • Sellos
    • Email
Re:Sugestão - Chave Unica
« Responder #4 Online: Julho 05, 2018, 10:32:26 am »
Realmente, se no banco de dados o CPF está como chave única, não há como gravar VAZIO em 2 registros.
Entretanto, você consegue gravar NULL.

E este é o meu caso: na tabela do meu banco de dados tenho a coluna CPF que aceita NULL e é ÚNICA. Preciso gravar NULL quando o campo CPF estiver vazio, desta forma não irei infringir as regras do banco de dados.

O ideal, na minha opinião é que o sc gravasse NULL quando um campo estivesse vazio ou, pelo menos, que tivesse a opção de gravar NULL ou VAZIO quando o campo estivesse vazio...
"Feliz aquele que transfere o que sabe e aprende o que ensina." Cora Coralina

Jônatas Sellos

  • Novato
  • *
  • Mensagens: 45
  • Conhecimento não ocupa espaço. O saber é infinito.
    • Sellos
    • Email
Re:Sugestão - Chave Unica
« Responder #5 Online: Julho 05, 2018, 10:55:13 am »
Mal acabei de postar minha sugestão, encontrei uma solução :-D:

No banco de dados:
- A coluna CPF deverá estar com o DEFAULT VALUE = NULL


No Scriptcase:
Nas configurações do campo CPF, em "Valor no Banco de Dados"
- Informe "Calculado pelo banco de dados se vazio" tanto para "Inserção" quanto para "Atualização"
- Crie a chave única para CPF


:-D
"Feliz aquele que transfere o que sabe e aprende o que ensina." Cora Coralina

Jônatas Sellos

  • Novato
  • *
  • Mensagens: 45
  • Conhecimento não ocupa espaço. O saber é infinito.
    • Sellos
    • Email
Re:Sugestão - Chave Unica
« Responder #6 Online: Julho 31, 2018, 11:08:31 am »
Uma pequena correção à minha postagem anterior:
Citar
Nas configurações do campo CPF, em "Valor no Banco de Dados"
- Informe "Calculado pelo banco de dados se vazio" tanto para "Inserção" quanto para "Atualização"
Informe "Calculado pelo banco de dados se vazio" APENAS para "Inserção". Na atualização, o SC vai ignorar a atualização caso o campo esteja vazio...

E, para corrigir este problema, acrescentei o código abaixo no evento onAfterUpdate():
Código: [Selecionar]
// mudando campo CPF de '' para null
$sql = "UPDATE pacientes SET
  cpf= NULL
WHERE id = '{id}'
AND cpf = ''";

sc_exec_sql($sql);

Não é tão "bonito" como eu gostaria... mas resolve (eu acho :-P)
« Última modificação: Julho 31, 2018, 11:10:42 am por Jônatas Sellos »
"Feliz aquele que transfere o que sabe e aprende o que ensina." Cora Coralina

robertobru

  • Expert
  • *****
  • Mensagens: 575
    • Email
Re:Sugestão - Chave Unica
« Responder #7 Online: Julho 31, 2018, 07:10:37 pm »
Espero que ajude. Eu utilizo no evento Ajax (onChange) do campo CNPJ ou CPF:

if(!empty({cnpj})) {
sc_lookup(conclie,"select nome, cnpj (ou CPF),  endereco from clientes where cnpj='{cnpj}'");
   $nome={conclie[0][0]};
   $cnpjconf={conclie[0][1]};
   $endereco={conclie[0][2]};
   if(!empty($cnpjconf)) {
sc_error_message("<font color=red><b>".$cnpjconf." - ". "existe para:<br>".$nome."</b></font>");
   sc_set_focus('cnpj');
      //{cnpj}='';
         
      ocultabtnincluir();  //Método PHP
      
      }
   else {
      exibebtnincluir();  //Método PHP
      }
}