Fórum Criar um form de permissões dos usuarios? #365224
19/10/2008
0
Pessoal, preciso fazer algo tipo assim, tenho um form aonde tem alguns usuarios cadastrados, e o administrador vai impor as empresas que os usuarios poderão acessar, quero marcar as empresas num dbgrid usando um checkbox dentro do dbgrid, mais houve um problema que não consegui resolver.
Quero que ao clicar no dbgrid do usuario mostrar no outro dbgrid das empresas todas empresas, mais também mostrar quais estão com o checkbox marcado para aquele usuario. Isso é um form que apenas o administrador tem acesso.
E não esta dando certo a minha idéia.
[img]http://adrianoservitec.fotos.net.br/album1/photo.html[/img]
[url]http://adrianoservitec.fotos.net.br/album1/photo.html[/url]
Estava pensando num select com um subselect assim
Mais não deu resultado, acho que não estou sabendo como criar este form de permissões.
Criei as tabelas assim no firebird 2.0
E fiz uma SP assim
Não esta nada funcionando como eu queria, qualquer ajuda é bem vinda, obrigado.
Adriano.
Quero que ao clicar no dbgrid do usuario mostrar no outro dbgrid das empresas todas empresas, mais também mostrar quais estão com o checkbox marcado para aquele usuario. Isso é um form que apenas o administrador tem acesso.
E não esta dando certo a minha idéia.
[img]http://adrianoservitec.fotos.net.br/album1/photo.html[/img]
[url]http://adrianoservitec.fotos.net.br/album1/photo.html[/url]
Estava pensando num select com um subselect assim
select a.marcar_check, a.nmempresa, (select distinct( b.idempresa ) from permissoesuser b where b.idempresa = a.cdempresa ) idempresa from empresa a
Mais não deu resultado, acho que não estou sabendo como criar este form de permissões.
Criei as tabelas assim no firebird 2.0
CREATE TABLE EMPRESA ( CDEMPRESA INTEGER NOT NULL, NMEMPRESA VARCHAR(60) NOT NULL, NMFANTASIA VARCHAR(60), DSATIVIDADE VARCHAR(50), DSENDERECO VARCHAR(60), NMBAIRRO VARCHAR(40), NMCIDADE VARCHAR(50) NOT NULL, NRCEP VARCHAR(10) NOT NULL, CDUF VARCHAR(2) NOT NULL, NRTELEFONE VARCHAR(14), NRINSCRMUNICIPAL VARCHAR(20), NRREGCARTORIO VARCHAR(20), NRJUNTACOMERCIAL VARCHAR(30), VLCAPITAL NUMERIC(15,2), DTINICIOATIVIDADE DATE, NRCGC VARCHAR(18), DTFIMATIVIDADE DATE, OBS BLOB SUB_TYPE 1 SEGMENT SIZE 80, NMEMAIL VARCHAR(50), TIPOCALCIR CHAR(1), CODNATUREZAJURIDICA VARCHAR(10), CDCNAE VARCHAR(10), IDRESPONSAVEL INTEGER, RESPONSAVELEMPRESA VARCHAR(60), CPFRESPONSAVEL VARCHAR(18), RGRESPONSAVEL VARCHAR(20), TELRESPONSAVEL VARCHAR(14), CELRESPONSAVEL VARCHAR(14), EMAILRESPONSAVEL VARCHAR(50), MARCAR_CHECK CHAR(1), ID_USUARIO INTEGER );
CREATE TABLE USUARIOS ( ID_USUARIO INTEGER NOT NULL, USUARIO VARCHAR(10) NOT NULL, SENHA VARCHAR(35) NOT NULL, NIVEL CHAR(1) NOT NULL, EXPIRAEM DATE, GRUPO VARCHAR(30), ADM CHAR(1), ALTERARSENHA CHAR(1), NAOEXPIRA CHAR(1), IDEMPRESA INTEGER, RESPONSAVEL VARCHAR(50), FUNCAO VARCHAR(30), CPFRESP VARCHAR(14), TELEFONECONTATO VARCHAR(14), EMAILRESP VARCHAR(60), PRIVILEGIO CHAR(1) );
CREATE TABLE PERMISSOESUSER ( IDPERMISSOES INTEGER NOT NULL, IDUSUARIO INTEGER NOT NULL, IDEMPRESA INTEGER NOT NULL, DATAHORA_MOVIMENTO TIMESTAMP ); /******************************************************************************/ /**** Primary Keys ****/ /******************************************************************************/ ALTER TABLE PERMISSOESUSER ADD CONSTRAINT PK_PERMISSOESUSER PRIMARY KEY (IDPERMISSOES); /******************************************************************************/ /**** Foreign Keys ****/ /******************************************************************************/ ALTER TABLE PERMISSOESUSER ADD CONSTRAINT FK_PERMISSOESUSER_2 FOREIGN KEY (IDEMPRESA) REFERENCES EMPRESA (CDEMPRESA) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE PERMISSOESUSER ADD CONSTRAINT FK_PERMISSOESUSER_3 FOREIGN KEY (IDUSUARIO) REFERENCES USUARIOS (ID_USUARIO) ON DELETE CASCADE ON UPDATE CASCADE;
E fiz uma SP assim
CREATE PROCEDURE PERMISSOESUSER_IU ( idpermissoes integer, idusuario integer, idempresa integer) as begin if (exists(select * from permissoesuser where (idempresa = :idempresa and idusuario = :idusuario ))) then update permissoesuser set idempresa = :idempresa, idusuario = :idusuario where (idempresa = :idempresa and idusuario = :idusuario); else insert into permissoesuser ( idpermissoes, idempresa, idusuario ) values ( :idpermissoes, :idempresa, :idusuario ); end^
Não esta nada funcionando como eu queria, qualquer ajuda é bem vinda, obrigado.
Adriano.
Adriano_servitec
Curtir tópico
+ 0
Responder
Posts
19/10/2008
Adriano_servitec
Pessoal, consegui gerar o select correto para o que eu preciso
Muito obrigado, problema resolvido.
select a.marcar_check, a.nmempresa, b.idempresa, b.idusuario from empresa a left join permissoesuser b ON (a.cdempresa = b.idempresa)
Muito obrigado, problema resolvido.
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)