Ir para conteúdo
Fórum Script Brasil
  • 0

Validar Dois Campos


Lafey

Pergunta

5 respostass a esta questão

Posts Recomendados

  • 0

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

Link para o comentário
Compartilhar em outros sites

  • 0

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

Link para o comentário
Compartilhar em outros sites

  • 0

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

Link para o comentário
Compartilhar em outros sites

  • 0

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

Link para o comentário
Compartilhar em outros sites

  • 0
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

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...