Sign in to follow this  
Lafey

Validar Dois Campos

Recommended Posts

pessoal estou usando ado.

tenho dois edits no form, queria saber como que eu faço pra ver se os valores inseridos nos mesmos são verdadeiros na tabela 'compradores' e se forem passa pro proximo passo do soft (ex: abre outro form)?

obrigado.

Share this post


Link to post
Share on other sites

Lafey, normalmente o que você faz é no evento OnExit do Edit testar o seu conteúdo utilizando uma query auxiliar para isto.

Tipo, coloca um componente uma instrução SQL mais ou menos assim:

'SELECT NomComprador FROM compradores WHERE NomComprador = :NomComprador'

Daí no exit do Edit, você passa o texto digitado como parâmetro para a consulta. Essa é uma sugestão:

procedure TForm1edtCompradorExit(Sender :TObject);
var
  TextoExiste :Boolean;
begin
  ADOComprador.Params.ParamByName('NomComprador').AsString := edtComprador.Text;
  ADOComprador.Open;
  TextoExiste := ADOComprador.EOF;
  ADOComprador.Close;
  if not TextoExiste then  // faz algo se não existe texto digitado
  begin
   // move o foco devolta para o componente Edit
    edtComprador.SetFocus;
   // apresenta uma mensagem de erro e pára execução do programa
    raise Exception.Create('Deve ser informado um comprador válido');
  end else
  begin
    // faz algo se o texto existe ou simplesmente não utilize a opção 'else'
  end;
 // se o texto existir não ocorrerá o raise e a execução do programa
 // continuará e passará por aqui de qualquer modo
end;

[]s

Share this post


Link to post
Share on other sites

Micheus, me desculpe, mas eu estou começando meu primeiro sistema e nem de sql eu entendo direito e não entendi o que você quis me passar. Bom mas eu coloquei um ADOQuery e coloquei a seguinte instrução SQL.

SELECT * FROM cad_atendentes WHERE Usuario = 'QuotedStr(eUser.Text)' and Senha = 'quotedstr(eSenha.text)';

E parece que funcionou (parece), como eu faria pra colocar um IF ai pra caso seja verdadeiro abra o form2 ou caso seja falso me retorne uma mensagem ("Favor verificar os dados!")?

Obrigado,

caso esteja errado me informe, porque como já disse essa é a primeira vez que estou fazendo um mix de SQL e pascal.

[]'s

Share this post


Link to post
Share on other sites

se o nome do componente(ADOQuery) fosse QryUser, a instrução deveria ficar, em linha de código:

QryUser.Close;
QryUser.SQL.Text := 'SELECT * FROM cad_atendentes WHERE Usuario = ' +QuotedStr(eUser.Text) +' and Senha = ' +quotedstr(eSenha.text);
QryUser.Open;
if not QryUser.EOF then
begin
  // Encontrou o usuário e a respectiva senha
end;
se não for em linha de código, poderia ser assim A propriedade SQL do QryUser, em design-time, seria escrita: SELECT * FROM cad_atendentes WHERE Usuario = :Usuario and Senha = :Senha no código do programa ficaria assim:
QryUser.Close;
QryUser.Params.ParamByName('Usuario').AsString := eUser.Text;
QryUser.Params.ParamByName('Senha').AsString := eSenha.Text;
QryUser.Open;
if not QryUser.EOF then
begin
  // Encontrou o usuário e a respectiva senha
end;

[]s

Share this post


Link to post
Share on other sites

Cara eu te amo, hauehuahuehua...

Muito obrigado, de cara a segunda alternativa me interessou mais, porém, precisei usar a primeira. E funcionou!!!!!! Nossa que emoção ver meu sistema de login funcionando (graças a sua ajuda).

Po, agora eu queria saber uma coisa, sabe onde tem alguma apostila que fale sobre bd (ADO)?? Ainda tenho que aprender muito.

Obrigado,

[]'s

Share this post


Link to post
Share on other sites
Cara eu te amo, hauehuahuehua...
<_<

Muito obrigado, de cara a segunda alternativa me interessou mais, porém, precisei usar a primeira. E funcionou!!!!!! Nossa que emoção ver meu sistema de login funcionando (graças a sua ajuda).
Sempre que possível, utilize a segunda alternativa (modelo de passagem de parâmetros).

Se a questão é montar o SQL na hora, misture os dois exemplos:

QryUser.Close;

QryUser.SQL.Text := 'SELECT * FROM cad_atendentes WHERE Usuario = :Usuario and Senha = :Senha';

QryUser.Params.ParamByName('Usuario').AsString := eUser.Text;

QryUser.Params.ParamByName('Senha').AsString := eSenha.Text;

QryUser.Open;

if not QryUser.EOF then

begin

// Encontrou o usuário e a respectiva senha

end;

Quando você utiliza parâmetros, não terá que se preocupar, por exemplo:

- com o delimitador de string;

- com o delimitador de data (no access é #, em outros isso não existe);

- com o formato da data. se você cocatenar no formato ' where data = dd/mm/yyyy' pode ser que devesse ser yyyy/mm/dd (MySQL).

É claro que ao passar o parâmetro você deverá invocar o método correto, deste modo você evitar ter algum tipo de surpresa. Por ex., se DatDebito é do tipo dada:

QryUser.Params.ParamByName('DatDebito').AsDateTime := StrToDate(eDatDebito.Text);

Bom, são algumas itens apenas. Depois que você se acostuma a utilizar deste modo, dificilmente tem essas dores de cabeça quando muda de um banco de dados para outro.

Po, agora eu queria saber uma coisa, sabe onde tem alguma apostila que fale sobre bd (ADO)?? Ainda tenho que aprender muito.
Eu não saberia lhe indicar não. Talvez outro colega. Mas não há nada que não possa ser encontrado quanto se tem o Google ao nosso lado. ;)

[]s

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this