Página 1 de 1

Validação de Campos.

Enviado: 11 Jan 2017 16:32
por Marcos
Gostaria de saber como fazer a validação de um campo para não Duplicar registro no Mysql, por exemplo: inserir um cliente já cadastrado com o mesmo CPF, a validação abaixo Eu já fiz e funcionou redondinho, mas a pesquisa no banco para verificar registros existentes não consegui.

Código: Selecionar todos

   if v_passe <> v_passe_conf
      msginfo('Palavra Passe não confere','Atenção')
      return(nil)
   endif

Validação de Campos.

Enviado: 11 Jan 2017 18:26
por wmanesco
Se entendi voce quer inserir um "cliente", por exemplo, mas antes verificar se ele existe?

Não sei como está usando mysql (ado ou outra biblioteca) mas acho que seria um select assim:

Código: Selecionar todos

cCpf := ...
"SELECT * FROM clientes WHERE cpf='" + cCpf  + "'"
Se o resultado for maior que 0 já existe no banco...

Validação de Campos.

Enviado: 12 Jan 2017 08:44
por Marcos
Havia feito de outra forma e havia dado o mesmo resultado, o código citado dá a mensagem que o Login já existe independente se houver na tabela "Usuarios" ou não, veja como fiz:

Código: Selecionar todos

local 
v_login:= alltrim(form_dados.tbox_001.value)
oQuery := oServer:Query("select * from usuarios where login_usuario='"+v_login+"'")
if oQuery:Eof()
   msginfo('Usuário já Cadastrado, tecle ENTER','Atenção')
   form_dados.tbox_001.setfocus
   return(nil)
endif

Validação de Campos.

Enviado: 12 Jan 2017 08:53
por Marcos
Descobri o erro, gostaria de saber como negar Eof(), pois da forma que está o código aceita cadastrar somente se já existir na Tabela de Usuarios, e na verdade o que preciso é o contrario não deixar cadastrar na tabela de usuários se já existir.

Validação de Campos.

Enviado: 12 Jan 2017 11:14
por Marcos
Desculpe a falta de atenção mas está resolvido, coloquei outra condição o "Else" e pronto. Obrigado pela ajuda.

Validação de Campos.

Enviado: 12 Jan 2017 11:56
por alxsts
Olá!

Código: Selecionar todos

if ! oQuery:Eof()

Validação de Campos.

Enviado: 12 Jan 2017 12:52
por janio
Marcos,

Vc ta usando MiniGUI?

Qual lib para MySql?

Janio

Validação de Campos.

Enviado: 12 Jan 2017 14:08
por JoséQuintas

Código: Selecionar todos

GET cCnpj VALID CnpjOk( cCnpj ) .AND. ! CnpjRepetido( cCnpj, cChave )
READ

FUNCTION CnpjRepetido( cCnpj, cChave )

   cnMySql:Execute( "SELECT COUNT(*) AS QTD FROM CLIENTES WHERE CNPJ=" + StringSql( cCnpj ) + " AND IDCLIENTE <> " + StringSql( cChave ) )

   IF cnMySql:ReturnValueAndClose( "QTD" ) > 0
     MsgExclamation( "CNPJ repetido" )
    RETURN .F.
   ENDIF
   RETURN .T.
   

Validação de Campos.

Enviado: 12 Jan 2017 15:48
por Marcos
Obrigado a todos pela ajuda, o exemplo do alxsts foi usado.

Janio, estou usando Minigui, no arquivo de compilação aparece -lminigui, -lminiprint2, -lhbmysql, -llibmysql e a classe TMySQL.