Ajuda em criação de FormLogin

Delphi

30/07/2012

Olá caro pessoal, estou com um pequeno problema ao tentar fazer um form de login.
Uso o Delphi XE 2 e estou fazendo um formulário de login para um projeto de meu curso.
O que necessito fazer é um sistema de login pesquisando em uma DB usando Client Data Set.
Bom, configuro tudo para pesquisar, toda a conexão está certa, mas ai no botão para conectar, ao clicar, recebo um erro (Field login is of an unsupported type.)
Lembrando que o campo login é o campo que uso na DB e também uso o campo pass.
Bom, meu código está assim:

unit ULogin;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DB, SqlExpr, StdCtrls, Data.DBXMySQL, Data.FMTBcd, Datasnap.Provider,
  Datasnap.DBClient;

type
  TFrmLogin = class(TForm)
    edtUser: TEdit;
    edtPass: TEdit;
    lblUser: TLabel;
    lblPass: TLabel;
    btnLogin: TButton;
    ConLogin: TSQLConnection;
    DSLogin: TSQLDataSet;
    DaSLogin: TDataSource;
    CDSLogin: TClientDataSet;
    DSPLogin: TDataSetProvider;
    procedure btnLoginClick(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  FrmLogin: TFrmLogin;

implementation

{$R *.dfm}

procedure TFrmLogin.btnLoginClick(Sender: TObject);
var
  usuario,
  senha : string;
  begin
  CDSLogin.Open;
  usuario := edtUser.Text;
  senha := edtPass.Text;
 if CDSLogin.Locate(login, usuario, [loPartialKey]) and
   CDSLogin.Locate(pass, senha, [loCaseInsensitive]) then
     FrmLogin.Close;

end;




end.


Gostaria de saber se tem algum erro, pois sou novo no assunto, e o professor passou isso como um desafio para a turma.
Att
Leonardo
Leonardo Oliveira

Leonardo Oliveira

Curtidas 0

Respostas

William

William

30/07/2012

Então aparentemente não tem nenhum erro no seu código, se realmente existe os campos login e pass nop banco é para filtrar corretamente, talvez melhorar essa parte de loPartialKey e loCaseInsensitive mas não que isso esteja interferindo.

Só verifica se os 2 campos são do tipo VARCHAR.
GOSTEI 0
Leonardo Oliveira

Leonardo Oliveira

30/07/2012

Então aparentemente não tem nenhum erro no seu código, se realmente existe os campos login e pass nop banco é para filtrar corretamente, talvez melhorar essa parte de loPartialKey e loCaseInsensitive mas não que isso esteja interferindo.

Só verifica se os 2 campos são do tipo VARCHAR.

Cara, muito obrigado, só tenho a te agradecer, me salvou =)
Não tinha colocado como varchar, mas agora coloquei e deu certo, muito obrigado, não sabes o quanto fico grato =).
GOSTEI 0
William

William

30/07/2012

Tranquilo, seja bem vindo ao fórum e ao mundo Delphi...
GOSTEI 0
Bruno Leandro

Bruno Leandro

30/07/2012

Completando sobre loPartialKey e loCaseInsensitive

o loPartialKey retorna o primeiro encontrado, e pode acontecer o seguinte voce ter
codigo
1
2
11
12

dependendo da ordenação da tabela o locate pode retornar o o valor errado, o que não é legal no login

e o loCaseInsensitive ignora as letras maiusculas e minusculas ou senha na senha é a = A, o que esta errado
GOSTEI 0
POSTAR