Verificação de Valor Unico

Delphi

04/02/2004

Para fazer um sistema de Login no meu projeto, é necesário q no cadastro de usuariosseja feita a verificação se o Nickname ja existe no momento q for ser inserido um novo usuario, pois tem de ser unico. Para fazer essa verificação fiz assim:

procedure TFrmUsuarios.FldIdentificacaoExit(Sender: TObject);
var
RegNick: String;
begin
RegNick:= FldIdentificacao.Text;
If (Modulo.TbUsuarios.Locate(´Identificacao´, RegNick, [loPartialKey])) Then
begin
(Mensagem(´Identificação já existente. Duplicação indeferida!´));
FldIdentificacao.SelText;
Exit;
end
Else
begin
Modulo.TbUsuarios.Post;
Modulo.TbUsuarios.Refresh;
FldNome.SetFocus;
end;
end;

O problema eh q em decorrencia do campo Autonumeração, ele nao permite q o indice ou chave primaria seja valor nulo, ocorrendo um erro. Esse valor eh nulo pois ainda nao foi salvo na tabela. Eu gostaria de saber como eu posso fazer essa verfifcação sem que ocorra erros...

Valeu!!!


Diorgenes175

Diorgenes175

Curtidas 0

Respostas

Djjunior

Djjunior

04/02/2004

tipo se o campo da tua tabela é autonumação basta marcar a opção required da tua tabela como false.

outra coisa crie outra query pra fazer a pesquisa de nomes duplicados, vai melhorar um bocado

tipo:
select Identificacao from tabela where Identificacao = :nickname

e então coloque
query1.close;
query1.parambyname(´nickname´).asstring := edit1.text;
query1.open;
if not query1.isempt then
showmessage(´nick name já existe)...

Espero ter ajudado


GOSTEI 0
Diorgenes175

Diorgenes175

04/02/2004

Cara, vou fazer como tu disse, mas vejo um empecilho. Tenho um conhecimento limitado em SQL. Em outros comandos SQL q tentei usar parametro nao consegui estabelece-lo. Nesse caso, nao sei como fazer a função ´ParamByName´:

Ex.:
query1.parambyname(´nickname´).asstring := edit1.text;

Estou usando TADOQuery, pois a Base de Dados é MS Access, e nas outras vezes q tentei usar essa função, ocorria um erro dizendo parametro (aqui nesse exemplo seria ´nickname´) não existente. Como eu posso fazer para que não ocorra este erro??? Me dá uma orientação quanto a isso...

Valeu a Ajuda!!!


GOSTEI 0
Djjunior

Djjunior

04/02/2004

cara com

seguinte o nome do parametro é o que vem seguido com : tipo

select *
from tabela
where campo = :parametro

no ado eu viz algo do tipo:

ADOQuery1.Close;
ADOQuery1.Parameters[0].Value := Edit1.Text;
ADOQuery1.Open;

obs.: para saber o nome que o seu parametro ou o indice dele verifique a propriedade parameters, nomalmente (pelo menos com o BDE) é bom vc aproveitar e setar o tipo de dados desse parametro (tipo string, data etc).

espero ter ajudado


GOSTEI 0
POSTAR