Ajuda em criação de FormLogin
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:
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
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
Curtidas 0
Respostas
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.
Só verifica se os 2 campos são do tipo VARCHAR.
GOSTEI 0
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.
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
30/07/2012
Tranquilo, seja bem vindo ao fórum e ao mundo Delphi...
GOSTEI 0
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
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