seveNeves 0 Denunciar post Postado Outubro 19, 2008 Tenho o código abaixo para evitar que o login do usuário seja cadastrado com o mesmo nome duas vezes, quando incluo um novo login funciona perfeitamente, mas quando vou alterar qualquer usuário retorna que 'login já cadastrado'. Alguém tem alguma idéia de como contornar isso? Begin QRLogin.Close; QRLogin.Sql.clear; QRLogin.Sql.add('select * from tab_usuarios where login =:login'); QRLogin.ParamByName('login').asstring:= DBEdit2.text; QRLogin.Open; If QRLogin.recordcount > 0 then Begin ShowMessage('login já cadastrado'); DBEdit2.SetFocus; Exit; End; Grato. Compartilhar este post Link para o post Compartilhar em outros sites
Chrnos 30 Denunciar post Postado Outubro 20, 2008 Este código está onde? Numa função ou direto no botão salvar?? Digamos que esteja numa função... para poder funcionar, você em algum lugar terá que por uma flag indicando se a operação é de novo registro ou atualização... algo assim por exemplo: Procedure Form1.SalvaRegistro(AtualizarRegistro : Boolean); begin if not AtualizarRegistro then begin QRLogin.Close; QRLogin.Sql.clear; QRLogin.Sql.add('select * from tab_usuarios where login =:login'); QRLogin.ParamByName('login').asstring:= DBEdit2.text; QRLogin.Open; If QRLogin.recordcount > 0 then Begin ShowMessage('login já cadastrado'); DBEdit2.SetFocus; Exit; End; <comandos necessários para gravar um novo registro> end else begin <comandos para atualizar seus registros> end; end; O que o código acima faz é básico: se não for uma operação de atualização, entra no teste e se o login já existir mostra o aviso... se for uma atualização, cai no else.. eu particularmente gosto de fazer as rotinas de gravação/alteração/exclusão uma separada da outra... de qualquer modo, fica aqui uma idéia que espero que lhe ajude no seu problema. []'s Compartilhar este post Link para o post Compartilhar em outros sites
Rodrigo Miss 1 Denunciar post Postado Outubro 20, 2008 Não podemos esquecer que na hora de editar / atualizar, é possivel que o usuário modifique o campo 'nome', e coloque o nome de um usuário que já esteja cadastrado. No entando a rotina de verificação deve ser feito também no momento da edição do registro... Assinatura da função: function userExists(const userName: string; userId: Integer = 0): Boolean; Implementação: function userExists(const userName: string; userId: Integer): Boolean; begin with qryAux do begin Close; SQL.Clear; SQL.Add('SELECT ID_USUARIOS FROM USUARIOS'); SQL.Add('WHERE ID_USUARIOS <> ' + IntToStr(userId)); SQL.Add('AND NOMEUSUARIO = ' + QuotedStr(userName)); Open; end; Result:= qryAux.RecordCount > 0; end; Usando esta funcção, basta que no momento que estiver editando o registro, você passe como parametro o id_usuario para a variavel idUser http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites
Chrnos 30 Denunciar post Postado Outubro 20, 2008 Boa Rodrigo... no caso que eu montei, usei a premissa que o login do usuário, uma vez cadastrado, não poderia mais ser alterado, o que faria não ser necessário validar se o login já existe novamente... mas sua recomendação é válida e útil, visto que cada caso é um caso hehehe. http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites
Rodrigo Miss 1 Denunciar post Postado Outubro 20, 2008 Isso mesmo Chrnos! Assim o amigo seveNeves fica com mais uma opção! pq seria interessante poder alterar o nome_usuario, as vezes ele cadastra uma letra errada .... Abraço Chrnos... Obrigado pela sua colaboração! Compartilhar este post Link para o post Compartilhar em outros sites