Lafey Postado Setembro 27, 2006 Denunciar Share Postado Setembro 27, 2006 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. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Micheus Postado Setembro 27, 2006 Denunciar Share Postado Setembro 27, 2006 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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Lafey Postado Setembro 28, 2006 Autor Denunciar Share Postado Setembro 28, 2006 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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Micheus Postado Setembro 28, 2006 Denunciar Share Postado Setembro 28, 2006 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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Lafey Postado Setembro 28, 2006 Autor Denunciar Share Postado Setembro 28, 2006 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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Micheus Postado Setembro 28, 2006 Denunciar Share Postado Setembro 28, 2006 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 thenbegin // Encontrou o usuário e a respectiva senhaend;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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Lafey
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.
Link para o comentário
Compartilhar em outros sites
5 respostass a esta questão
Posts Recomendados
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.