Usuarios - Delphi - Banco de dados Access

Delphi

05/09/2016

Boa tarde, tenho o form de usuário abaixo e gostaria de saber como fazer para quando eu fizer o login como admin, eu possa enxergar todos os usuários através do Dbnavigator. O modelo abaixo quando acesso a tela de login eu só enxergo o usuário que fez o login. Alguem pode me ajudar eu colocar essa condicional para o usuário admin?

Meus componentes: ADOConnection, ADOQuery. Banco de dados de usuários access

procedure TFrmUsuario.BtnNovoClick(Sender: TObject);
begin
pnlMensagem.caption:=' Você está incluindo um novo Usuário ok!';
Dm.QUsu.Append;
btnnovo.enabled:=true;
btnalterar.enabled:=false;
btncancelar.enabled:=true;
btnexcluir.enabled:=false;
btnSair.enabled:=True;
EdConfirmSenha.visible:=true;
EdConfirmSenha.clear;
Label3.visible:=true;
dbedit1.setfocus;

end;

procedure TFrmUsuario.BtnSalvarClick(Sender: TObject);
begin
Dm.QUsu.Post;
btncancelar.enabled:=false;
BtnSair.Enabled :=true;
BtnSalvar.Enabled :=False;
BtnAlterar.Enabled :=false;
BtnNovo.Enabled :=true;
btnexcluir.enabled:=true;
BtnAlterar.Enabled :=true;

end;

procedure TFrmUsuario.BtnSairClick(Sender: TObject);
begin
Close;
end;

procedure TFrmUsuario.BtnAlterarClick(Sender: TObject);
begin
if dbedit1.text='admin'then
begin
flagadmin:=1;
pnlmensagem.caption:='Você agora está alterando dados do Admin...';
end
else
pnlMensagem.caption:='Você agora está alterando dados do usuário...';
dm.QUsu.edit;
btnnovo.enabled:=True;
btnalterar.enabled:=false;
btncancelar.enabled:=true;
btnexcluir.enabled:=false;
BtnSair.enabled:=false;
BtnSalvar.Enabled :=true;
dbedit1.readonly:=false;
dbedit2.readonly:=false;
dbedit1.setfocus;

end;

procedure TFrmUsuario.BtnCancelarClick(Sender: TObject);
begin
flagadmin:=0;
pnlMensagem.caption:= ' Inclussão de Dados Cancelada...';
dm.QUsu.cancel;
btnnovo.enabled:=true;
btnalterar.enabled:=true;
btncancelar.enabled:=false;
btnexcluir.enabled:=true;
BtnSair.enabled:=true;
EdConfirmSenha.visible:=false;
Label3.visible:=false;

end;

procedure TFrmUsuario.BtnExcluirClick(Sender: TObject);
begin
if dbedit1.text='admin' then
begin
Messagedlg('O Usuário admin não pode ser excluído',mtwarning,[mbok],0);
exit;
end
else
if messagedlg('Você está excluíndo o usuário, tem certeza disto?', mtconfirmation, [mbyes,mbno],0)=mryes then
begin
dm.QUsu.delete;
dbedit1.setfocus;
end;
dbedit1.setfocus;

end;

end.
Paulo

Paulo

Curtidas 0

Respostas

Raimundo Pereira

Raimundo Pereira

05/09/2016

Uma ideia é trabalhar com perfil.
Ao realizar o login você captura o perfil do usuário logado se for admin, libere todos os acessos.
Até o select da tabela você pode tratar pelo perfil.

Exemplo
if perfillogado='admin' then
begin
script_login= 'select * from tabela_login'
dbnavigator.enabled:=true;
end
else
begin
script_login= 'select * from tabela_login where usuario=usuariologado'
dbnavigator.enabled:=false;
end;

Depois é só setar o sql da tabela login para o script_login
GOSTEI 0
Paulo

Paulo

05/09/2016

Esse código eu coloco onde?
GOSTEI 0
Raimundo Pereira

Raimundo Pereira

05/09/2016

Paulo, o código acima foi apenas um exemplo.
Se pretende segui-lo, primeiro você precisará seguir os passos.
1. Criar uma tabela perfil
codigo,nome_perfil

2. Adicionar na tabela usuários o campo id_perfil

3. Alterar os usuários, incluindo o id do perfil.

4.Ao realizar o login, você coleta o id do perfil e consulta o mesmo, retornando nome_perfil.

5. Pronto agora, você adaptar as rotinas de acordo com a sua necessidade
GOSTEI 0
POSTAR