Erro Login
Estou com seguinte problema fiz sistema de login chamei na pagina principal quando loga ele da violação ao banco de dados ai vao os codigos
Codigo Pagina Principal:
unit UPrincipal;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.Menus, Vcl.ExtCtrls, Vcl.ComCtrls,
Vcl.Imaging.jpeg, Vcl.StdCtrls,urlmon;
type
Tfrmprincipal = class(TForm)
MainMenu1: TMainMenu;
Cadastro1: TMenuItem;
Funcionrios1: TMenuItem;
N1: TMenuItem;
Sair1: TMenuItem;
StatusBar1: TStatusBar;
Timer1: TTimer;
Consulta1: TMenuItem;
Relatrio1: TMenuItem;
Cidade1: TMenuItem;
Cidade2: TMenuItem;
Estoque1: TMenuItem;
Entrada1: TMenuItem;
Sa1: TMenuItem;
Estoque2: TMenuItem;
Clientes1: TMenuItem;
Fornecedores1: TMenuItem;
procedure Cliente1Click(Sender: TObject);
procedure Sair1Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure Funcionrios1Click(Sender: TObject);
procedure Cidade2Click(Sender: TObject);
procedure Fornecedores1Click(Sender: TObject);
procedure Clientes1Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Estoque2Click(Sender: TObject);
procedure Sa1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
frmprincipal: Tfrmprincipal;
implementation
{$R *.dfm}
uses UCadClientes, UFuncionarios, UConsultaCidade, UEstoque, UFornecedores,
USaida, ULogin;
procedure Tfrmprincipal.Button1Click(Sender: TObject);
begin
HlinkNavigateString(nil,''www.uol.com.br'');
end;
procedure Tfrmprincipal.Cidade2Click(Sender: TObject);
begin
try
Application.CreateForm(Tfrmconsulta,frmconsulta);
frmconsulta.ShowModal;
finally
end;
end;
procedure Tfrmprincipal.Cliente1Click(Sender: TObject);
begin
try
Application.CreateForm(Tfrmcadclientes,frmcadclientes);
frmcadclientes.ShowModal;
finally
end;
end;
procedure Tfrmprincipal.Clientes1Click(Sender: TObject);
begin
try
Application.CreateForm(Tfrmcadclientes,frmcadclientes);
frmcadclientes.ShowModal;
finally
end;
end;
procedure Tfrmprincipal.Estoque2Click(Sender: TObject);
begin
try
Application.CreateForm(Tfrmestoque,frmestoque);
frmestoque.ShowModal;
finally
end;
end;
procedure Tfrmprincipal.Fornecedores1Click(Sender: TObject);
begin
try
application.CreateForm(Tfrmfornecedores,frmfornecedores);
frmfornecedores.ShowModal;
finally
end;
end;
procedure Tfrmprincipal.Funcionrios1Click(Sender: TObject);
begin
try
Application.CreateForm(Tfrmfuncionarios,frmfuncionarios);
frmfuncionarios.ShowModal
finally
end;
end;
procedure Tfrmprincipal.Sa1Click(Sender: TObject);
begin
try
Application.CreateForm(Tfrmsaida,frmsaida);
frmsaida.ShowModal;
finally
end;
end;
procedure Tfrmprincipal.Sair1Click(Sender: TObject);
begin
Close;
end;
procedure Tfrmprincipal.Timer1Timer(Sender: TObject);
begin
StatusBar1.Panels[1].Text:=''Data: '' +datetostr(Date);
StatusBar1.Panels[2].Text:=''Hora: '' +timetostr(Time);
end;
begin
Application.Initialize;
frmlogin:=Tfrmlogin.Create(nil);
if(frmlogin.showmodal= 1)then
begin
Application.CreateForm(Tfrmprincipal,frmprincipal);
FreeAndNil(frmlogin);
Application.Run;
end;
end.
Codigo Form Login:
unit ULogin;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.Buttons, Vcl.Mask,
Vcl.Imaging.jpeg, Vcl.ExtCtrls;
type
Tfrmlogin = class(TForm)
editlogin: TMaskEdit;
editsenha: TMaskEdit;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
procedure BitBtn1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
tentativas:Integer;
public
{ Public declarations }
end;
var
frmlogin: Tfrmlogin;
implementation
{$R *.dfm}
uses UDmDados;
procedure Tfrmlogin.BitBtn1Click(Sender: TObject);
begin
dmdados.sql_login.Close;
dmdados.sql_login.ParamByName(''login'').AsString:=editlogin.Text;
dmdados.sql_login.ParamByName(''senha'').AsString:=editsenha.Text;
dmdados.sql_login.Open;
if not (dmdados.sql_login.IsEmpty)then
begin
showMessage (''Acesso Liberado'');
end
else
begin
if (tentativas = 1) then
modalresult:=mrNone;
showMessage(''Acesso Negado'');
close;
end;
end;
procedure Tfrmlogin.FormCreate(Sender: TObject);
begin
tentativas:=1;
end;
end.
Codigo Pagina Principal:
unit UPrincipal;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.Menus, Vcl.ExtCtrls, Vcl.ComCtrls,
Vcl.Imaging.jpeg, Vcl.StdCtrls,urlmon;
type
Tfrmprincipal = class(TForm)
MainMenu1: TMainMenu;
Cadastro1: TMenuItem;
Funcionrios1: TMenuItem;
N1: TMenuItem;
Sair1: TMenuItem;
StatusBar1: TStatusBar;
Timer1: TTimer;
Consulta1: TMenuItem;
Relatrio1: TMenuItem;
Cidade1: TMenuItem;
Cidade2: TMenuItem;
Estoque1: TMenuItem;
Entrada1: TMenuItem;
Sa1: TMenuItem;
Estoque2: TMenuItem;
Clientes1: TMenuItem;
Fornecedores1: TMenuItem;
procedure Cliente1Click(Sender: TObject);
procedure Sair1Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure Funcionrios1Click(Sender: TObject);
procedure Cidade2Click(Sender: TObject);
procedure Fornecedores1Click(Sender: TObject);
procedure Clientes1Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Estoque2Click(Sender: TObject);
procedure Sa1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
frmprincipal: Tfrmprincipal;
implementation
{$R *.dfm}
uses UCadClientes, UFuncionarios, UConsultaCidade, UEstoque, UFornecedores,
USaida, ULogin;
procedure Tfrmprincipal.Button1Click(Sender: TObject);
begin
HlinkNavigateString(nil,''www.uol.com.br'');
end;
procedure Tfrmprincipal.Cidade2Click(Sender: TObject);
begin
try
Application.CreateForm(Tfrmconsulta,frmconsulta);
frmconsulta.ShowModal;
finally
end;
end;
procedure Tfrmprincipal.Cliente1Click(Sender: TObject);
begin
try
Application.CreateForm(Tfrmcadclientes,frmcadclientes);
frmcadclientes.ShowModal;
finally
end;
end;
procedure Tfrmprincipal.Clientes1Click(Sender: TObject);
begin
try
Application.CreateForm(Tfrmcadclientes,frmcadclientes);
frmcadclientes.ShowModal;
finally
end;
end;
procedure Tfrmprincipal.Estoque2Click(Sender: TObject);
begin
try
Application.CreateForm(Tfrmestoque,frmestoque);
frmestoque.ShowModal;
finally
end;
end;
procedure Tfrmprincipal.Fornecedores1Click(Sender: TObject);
begin
try
application.CreateForm(Tfrmfornecedores,frmfornecedores);
frmfornecedores.ShowModal;
finally
end;
end;
procedure Tfrmprincipal.Funcionrios1Click(Sender: TObject);
begin
try
Application.CreateForm(Tfrmfuncionarios,frmfuncionarios);
frmfuncionarios.ShowModal
finally
end;
end;
procedure Tfrmprincipal.Sa1Click(Sender: TObject);
begin
try
Application.CreateForm(Tfrmsaida,frmsaida);
frmsaida.ShowModal;
finally
end;
end;
procedure Tfrmprincipal.Sair1Click(Sender: TObject);
begin
Close;
end;
procedure Tfrmprincipal.Timer1Timer(Sender: TObject);
begin
StatusBar1.Panels[1].Text:=''Data: '' +datetostr(Date);
StatusBar1.Panels[2].Text:=''Hora: '' +timetostr(Time);
end;
begin
Application.Initialize;
frmlogin:=Tfrmlogin.Create(nil);
if(frmlogin.showmodal= 1)then
begin
Application.CreateForm(Tfrmprincipal,frmprincipal);
FreeAndNil(frmlogin);
Application.Run;
end;
end.
Codigo Form Login:
unit ULogin;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.Buttons, Vcl.Mask,
Vcl.Imaging.jpeg, Vcl.ExtCtrls;
type
Tfrmlogin = class(TForm)
editlogin: TMaskEdit;
editsenha: TMaskEdit;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
procedure BitBtn1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
tentativas:Integer;
public
{ Public declarations }
end;
var
frmlogin: Tfrmlogin;
implementation
{$R *.dfm}
uses UDmDados;
procedure Tfrmlogin.BitBtn1Click(Sender: TObject);
begin
dmdados.sql_login.Close;
dmdados.sql_login.ParamByName(''login'').AsString:=editlogin.Text;
dmdados.sql_login.ParamByName(''senha'').AsString:=editsenha.Text;
dmdados.sql_login.Open;
if not (dmdados.sql_login.IsEmpty)then
begin
showMessage (''Acesso Liberado'');
end
else
begin
if (tentativas = 1) then
modalresult:=mrNone;
showMessage(''Acesso Negado'');
close;
end;
end;
procedure Tfrmlogin.FormCreate(Sender: TObject);
begin
tentativas:=1;
end;
end.
Felipe Barlera
Curtidas 0
Respostas
Cristofer Rodrigues
13/10/2013
Bom dia Felipe, os erros de violação geralmente estão ligados ao fato de o objeto não estar criado o que verificando no seu código código não constatei você instanciando o dmdados, a não ser que está no auto-create, se estiver favor verificar se está sendo como o primeiro objeto a ser instanciado.
Att,
Att,
GOSTEI 0
Felipe Barlera
13/10/2013
abri dmdados no oncreate mais mesmo assim continua o erro ja tentei varias coisas nao consigo soluciona .
No delphi xe 4 nao from principal nao aparece codigos de inicializaçao como no delphi 7
troquei mesmo de lugar coloquei codigo no oncreate do fromprincipal erro paraou mais login quando e liberado ele nao achama o form quando nao e liberado abre o progama ...
begin
Application.Initialize;
frmlogin:=Tfrmlogin.Create(nil);
if(frmlogin.showmodal= 1)then
begin
Application.CreateForm(Tfrmprincipal,frmprincipal);
FreeAndNil(frmlogin);
Application.Run;
end;
end;
No delphi xe 4 nao from principal nao aparece codigos de inicializaçao como no delphi 7
troquei mesmo de lugar coloquei codigo no oncreate do fromprincipal erro paraou mais login quando e liberado ele nao achama o form quando nao e liberado abre o progama ...
begin
Application.Initialize;
frmlogin:=Tfrmlogin.Create(nil);
if(frmlogin.showmodal= 1)then
begin
Application.CreateForm(Tfrmprincipal,frmprincipal);
FreeAndNil(frmlogin);
Application.Run;
end;
end;
GOSTEI 0
Ricardo Araujo
13/10/2013
caro colega acho melhor chamar o formulário de login através do formulário principal, desta forma você consegue fazer a validação e verifica que o usuário está cadastra no banco de dados.
um exemplo :
Procedure TfrmPrincipal.FormShow( Sender: TObject );
Begin
DeterminarPermissao;
AbrirFormulario( TfrmLogin, frmLogin );
End;
Quando chamar o formulário de login, no botão ok, deve fazer todas validações necessária, se tiver tudo certo deverá aparecer os menus, depois deve destruir o formulário de login.
um exemplo :
Procedure TfrmPrincipal.FormShow( Sender: TObject );
Begin
DeterminarPermissao;
AbrirFormulario( TfrmLogin, frmLogin );
End;
Quando chamar o formulário de login, no botão ok, deve fazer todas validações necessária, se tiver tudo certo deverá aparecer os menus, depois deve destruir o formulário de login.
GOSTEI 0
Felipe Barlera
13/10/2013
como declaro a permiçao?
GOSTEI 0
Felipe Barlera
13/10/2013
Alguem com uma resposta melhor mais clara por favor.
GOSTEI 0
Marcos Saffran
13/10/2013
Olá Felipe,
dê uma olhada nas aulas de 20 a 24 do curso https://www.devmedia.com.br/curso/aplicacao-financeira-com-delphi-2009-e-mysql/146,
deve te ajudar.
dê uma olhada nas aulas de 20 a 24 do curso https://www.devmedia.com.br/curso/aplicacao-financeira-com-delphi-2009-e-mysql/146,
deve te ajudar.
GOSTEI 0