Validação de Campos.

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

Avatar do usuário
Marcos
Usuário Nível 3
Usuário Nível 3
Mensagens: 355
Registrado em: 20 Set 2003 09:16
Localização: Cáceres/Mato Grosso

Validação de Campos.

Mensagem 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
Atenciosamente,
_____________________________
Marcos Antonio da Silva
marcosilva90@hotmail.com
wmanesco
Usuário Nível 3
Usuário Nível 3
Mensagens: 116
Registrado em: 09 Set 2016 13:18
Localização: ITAJAI - SC

Validação de Campos.

Mensagem 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...
William Manesco
Harbour 3.x | Fivewin | BCC | MySQL (TDolphin) | HBQT | HBIDE | Atom
Avatar do usuário
Marcos
Usuário Nível 3
Usuário Nível 3
Mensagens: 355
Registrado em: 20 Set 2003 09:16
Localização: Cáceres/Mato Grosso

Validação de Campos.

Mensagem 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
Atenciosamente,
_____________________________
Marcos Antonio da Silva
marcosilva90@hotmail.com
Avatar do usuário
Marcos
Usuário Nível 3
Usuário Nível 3
Mensagens: 355
Registrado em: 20 Set 2003 09:16
Localização: Cáceres/Mato Grosso

Validação de Campos.

Mensagem 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.
Atenciosamente,
_____________________________
Marcos Antonio da Silva
marcosilva90@hotmail.com
Avatar do usuário
Marcos
Usuário Nível 3
Usuário Nível 3
Mensagens: 355
Registrado em: 20 Set 2003 09:16
Localização: Cáceres/Mato Grosso

Validação de Campos.

Mensagem por Marcos »

Desculpe a falta de atenção mas está resolvido, coloquei outra condição o "Else" e pronto. Obrigado pela ajuda.
Atenciosamente,
_____________________________
Marcos Antonio da Silva
marcosilva90@hotmail.com
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Validação de Campos.

Mensagem por alxsts »

Olá!

Código: Selecionar todos

if ! oQuery:Eof()
[]´s
Alexandre Santos (AlxSts)
Avatar do usuário
janio
Colaborador
Colaborador
Mensagens: 1846
Registrado em: 06 Jul 2004 07:43
Localização: UBAJARA - CE

Validação de Campos.

Mensagem por janio »

Marcos,

Vc ta usando MiniGUI?

Qual lib para MySql?

Janio
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Validação de Campos.

Mensagem 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.
   
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
Marcos
Usuário Nível 3
Usuário Nível 3
Mensagens: 355
Registrado em: 20 Set 2003 09:16
Localização: Cáceres/Mato Grosso

Validação de Campos.

Mensagem 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.
Atenciosamente,
_____________________________
Marcos Antonio da Silva
marcosilva90@hotmail.com
Responder