Fórum Como faco para ler se o menu existe no banco de dados ou não #230860

08/05/2004

0

Caros amigo estou querendo criar um rotina para ler se o menu o name dele existe no banco de dados tipo se existir ele compara se é igual se não for ele deixa a opção do menu visible false..


if Query.FieldByName(´MN_CADASTROCLIENTE´).AsString = ´MN_CADASTROCLIENTE´ then
begin
MN_CADASTROCLIENTE.visible:= true
end
MN_CADASTROCLIENTE.visible:= false
end;


eu não se seria assin o codigo mas se alguem pode me ajudar... eu ficaria grato trabalho com duas tabelas
são elas ´USUARIOS, ACESSO´

usuario -----> Codigo, Nome, Senha
Acesso ------> CodUsuario,Menu,Acessa(S,N)


obrigado pela atenção


Babu

Babu

Responder

Posts

08/05/2004

Edkardoso

Bom meu caro,

se entendi bem a questão , olhando a estrutura da sua tabela, vc quer habilitar os menus de acordo com o usuário.

sendo assim:
// no evento onShow do form de logon
1º passo: desabilitar todos os menus
// BarraMenu = TActionMainMenuBar
var i:integer;

for i:=0 to (formPrincipal.BarraMenu.ComponentCount-2) do
formPrincipal.barramenu.ActionControls[i].Enabled:=false;


2º passo: criar uma query só com os menus do usuário
* coloque um componente query (query1) e datasource no form de logon
* na propriedade SQL de query1:
SELECT USUARIO.CODIGO, ACESSO.MENU, ACESSO.ACESSA
FROM USUARIO INNER JOIN ACESSO ON USUARIO.CODIGO = ACESSO.CODUSUARIO
WHERE (((USUARIO.CODIGO)=1) AND ((ACESSO.ACESSA)=True));
// observe q considerei o campo acessa como lógico

* na propriedade Parameters defina o parametro USU com o tipo de dado semelhante ao teu campo codigo

* após validação da senha passe o valor do parâmento para a query:
query1.close;
Query1.Parameters.ParamByName(´USU´).Value:= dbedit1.AsInteger;
// nome do dbedit onde tem o código do usuário
query.open;

3º passo: varrer o arquivo e habilitar os menus
*posicione o ponteiro no 1º registro da query
* execute um faça enquanto não chegar ao final do arquivo (wihle do)
* faça a seguinte rotina para todos os registros desta query:
for a:=0 to (BarraMenu.ComponentCount -2) do
if barramenu.ActionControls[i].Name=Query1.FieldByName(Menu).AsString then
barramenu.ActionControls[i].Enabled:=true;


Acho que assim deve funcionar. Gostaria que me desse retorno!
Espero ter contribuído para o seu sucesso!

Um abraço,

Edkardoso


Responder

Gostei + 0

08/05/2004

Dbergkamps

pelo que eu entendi vc quer níveis de acesso.
eu tambem quis isso e fiz o seguinte
1 - no cadastro de usuario vc cria um campo com o nivel (master ou secundario, por exemplo)
2 - vc cria uma procedure que habilite e desabilite conforme o nivel de acesso
3 - ao abrir o form vc chama o form de autenticao e verifica se o nivel for master vc habilita a procedure, se nao vc desabilita
espero ter ajudado;
Se conseguir, me informe


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar