ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Ajuda a montar o select? {Resolvido}
Ir à página 1, 2  Próximo
 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Banco de Dados
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Qua Nov 20, 2013 3:49 pm    Assunto: Ajuda a montar o select? {Resolvido} Responder com Citação

Boa tarde, tenho um banco em firebird 1.5 e preciso montar um select

Código:
select
  relatorios.permissoes,
  case relatorios.modulo
   when 'AGENDA' then
     'Agenda'
   when 'AGETEL' then
     'Agenda Telefone'
   when 'BONIFI' then
     'Bonificação'
   when 'CADCLI' then
     'Cadastro de Clientes'
   when 'CADCNV' then
     'Cadastro de Convênio'
   when 'CADCOC' then
     'Cadastro de Contas Correntes'
   when 'CADFMT' then
     'Cadastro de Fomentador'
   when 'CADFOR' then
     'Cadastro de Fornecedor'
   when 'CADPAC' then
     'Cadastro de Pacotes'
   when 'CADPRF' then
     'Cadastro de Pacotes'
   when 'CADUSU' then
     'Cadastro de Usuários'
   when 'CATPTO' then
     'Catalogo de Pontos'
   when 'CENCUS' then
     'Centro de Custo'
   when 'CONCHQ' then
     'Controle Cheque'
   when 'CONGOR' then
     'Controle de Gorgeta'
   when 'CONTAS' then
     'Contas'
   when 'DHISVE' then
     'Histórico de Vendas'
   when 'DIVCLI' then
     'Dividas do Cliente'
   when 'FCHCLI' then
     'Ficha do Cliente'
   when 'FCHFOR' then
     'Ficha do Fornecedor'
   when 'FCHPAC' then
     'Ficha do Pacote'
   when 'FCHPRF' then
     'Ficha do Profissional'
   when 'FCHPRO' then
     'Ficha do Produto'
   when 'FCHSERV' then
     'Ficha do Serviço'
   when 'FCHUSU' then
     'Ficha do Usuário'
   when 'FFCHCX' then
     'Fechamento de Caixa'
   when 'FORPAG' then
     'Forma de Pagamento'
   when 'GRUHAB' then
     'Grupos de Habilidades'
   when 'HISVEN' then
     'Histórico de Vendas'
   when 'HISVPR' then
     'Histórico de Vendas ao Profissional'
   when 'MALDIR' then
     'Mala Direta'
   when 'MOVCBN' then
     'Movimentações das Contas Bancárias'
   when 'MOVEST' then
     'Movimentações no Estoque'
   when 'ORDSERV' then
     'Ordem de Serviços'
    when 'PRORAT' then
     'Rateio do Profissional/Assistente'
   when 'TABPRO' then
     'Tabela de Produtos'
   when 'TABSERV' then
     'Tabela de Serviços'
   when 'TIPUSU' then
     'Tipo de Usuários'
   else
     'Módulo não localizado'
   end as MODULOS,
   relatorios.TITULO,
   relatorios.AUTOR,
   relatorios.DESCRICAO,
   relatorios.MODULO
From relatorios
FULL JOIN permissao_gerenciadorrelatorios ON(relatorios.modulo = permissao_gerenciadorrelatorios.modulo
AND relatorios.titulo = permissao_gerenciadorrelatorios.titulo AND relatorios.autor =
permissao_gerenciadorrelatorios.autor)
WHERE permissao_gerenciadorrelatorios.tipo = :pTIPO
order by 2


Ai do jeito que eu fiz me traz apenas o que esta no parâmetro, mais preciso trazer também neste select todos que tem permissão NULL ou esteja como NÃO, e não esta dando certo desta forma ai.

Alguém pode me ajudar?

Será que vou ter que inserir todos os dados que tenho na tabela RELATORIOS na tabela permissao_gerenciadorrelatorios ?

São 2 tabelas envolvidas.

Obrigado.
_________________
Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree


Editado pela última vez por adriano_servitec em Sex Nov 22, 2013 6:05 pm, num total de 1 vez
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Qua Nov 20, 2013 4:09 pm    Assunto: Responder com Citação

Porque esta tabela esta sendo populada conforme vou passando num checkbox do dbgrid que fiz

fiz um método para tratar isso

Código:
procedure GravarDados_tbPermissaoGerRel(Gravar: Boolean);
  begin
    with QryPermissaoGerenciardorRel do
    begin
      Close;
      SQL.Clear;
      //Grava na tabela
      if Gravar then
      begin
        SQL.Text := '   INSERT INTO PERMISSAO_GERENCIADORRELATORIOS '+
                    ' (  TIPO, MODULO, TITULO, AUTOR ) '+
                    '  VALUES (:pTIPO, :pMODULO, :pTITULO,:pAUTOR )';
      end
      else
      //Excluir na tabela
      begin
        SQL.Text := '   DELETE FROM PERMISSAO_GERENCIADORRELATORIOS '+
                    '    WHERE '+
                    '     TIPO = :pTIPO '+
                    '  AND MODULO = :pMODULO '+
                    '  AND TITULO = :pTITULO '+
                    '  AND AUTOR = :pAUTOR ';
      end;
      ParamByName('pTIPO').AsString := DBEdt_Tipo.Text;
      ParamByName('pMODULO').AsString := IBDS_GerenciadorRelatorios.FieldByName('MODULO').AsString;
      ParamByName('pTITULO').AsString := IBDS_GerenciadorRelatorios.FieldByName('TITULO').AsString;
      ParamByName('pAUTOR').AsString := IBDS_GerenciadorRelatorios.FieldByName('AUTOR').AsString;
      ExecSQL;
    end;
  end;


E chamo o método aqui
Código:
procedure TF_Tipo_Usuario.gradeGerenciadorRelatoriosCellClick(
  Column: TColumn);
  procedure GravarDados_tbPermissaoGerRel(Gravar: Boolean);
  begin
    with QryPermissaoGerenciardorRel do
    begin
      Close;
      SQL.Clear;
      //Grava na tabela
      if Gravar then
      begin
        SQL.Text := '   INSERT INTO PERMISSAO_GERENCIADORRELATORIOS '+
                    ' (  TIPO, MODULO, TITULO, AUTOR ) '+
                    '  VALUES (:pTIPO, :pMODULO, :pTITULO,:pAUTOR )';
      end
      else
      //Excluir na tabela
      begin
        SQL.Text := '   DELETE FROM PERMISSAO_GERENCIADORRELATORIOS '+
                    '    WHERE '+
                    '     TIPO = :pTIPO '+
                    '  AND MODULO = :pMODULO '+
                    '  AND TITULO = :pTITULO '+
                    '  AND AUTOR = :pAUTOR ';
      end;
      ParamByName('pTIPO').AsString := DBEdt_Tipo.Text;
      ParamByName('pMODULO').AsString := IBDS_GerenciadorRelatorios.FieldByName('MODULO').AsString;
      ParamByName('pTITULO').AsString := IBDS_GerenciadorRelatorios.FieldByName('TITULO').AsString;
      ParamByName('pAUTOR').AsString := IBDS_GerenciadorRelatorios.FieldByName('AUTOR').AsString;
      ExecSQL;
    end;
  end;

begin
  if Column.Field = IBDS_GerenciadorRelatorios.Fields[0] then
  begin
    IBDS_GerenciadorRelatorios.Edit;
    if IBDS_GerenciadorRelatorios.FieldByName('PERMISSOES').AsString = 'Sim' then
    begin
      IBDS_GerenciadorRelatorios.FieldByName('PERMISSOES').AsString := 'Não';
      GravarDados_tbPermissaoGerRel(False);
    end
    else
    begin
      IBDS_GerenciadorRelatorios.FieldByName('PERMISSOES').AsString := 'Sim';
      GravarDados_tbPermissaoGerRel(True);
    end; 
    try
      IBDS_GerenciadorRelatorios.Post;
      Interbase.IBTr_Application.CommitRetaining;
    except
      on E: Exception do
      begin
        Interbase.IBTr_Application.Rollback;
        AzShowPlusMessage(ExtraiMensagemExceptDB( E.Message ), 35, 2)
      end
      else
        raise;
    end;
  end;
end;


Funciona, mais ai quando eu marcar no check do grid adiciona, quando desmarcar deleta da tabela.

Mais eu quero que ao selecionar no parametro, mostrar todos dele selecionado e os que não estão selecionado também, só que quando trocar para outro no parametro do select fazer o mesmo, mais mostrar os que eu marquei para ele e os que não estão marcados também.

Não sei se compliquei na explicação.

Obrigado.
_________________
Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Qua Nov 20, 2013 4:17 pm    Assunto: Responder com Citação

Mais não imagino se tem como fazer isso, acho que a ideia é popular toda a tabela PERMISSAO_GERENCIADORRELATORIOS, conforme eu passar o
Código:
ParamByName('pTIPO').AsString := DBEdt_Tipo.Text;


Minha preocupação é se for muitos grupos de usuarios cadastrados, vai ficar uma tabela gigante. Porque na tabela RELATORIOS tem bastante dados cadastrados.

Mais não vejo outra alternativa para isso.
_________________
Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 11666

MensagemEnviada: Qui Nov 21, 2013 8:31 am    Assunto: Responder com Citação

Bom dia,

Experimente alterar o Where da sua query inicial para And, e adicione o campo permissao_gerenciadorrelatorios.tipo no Select para ver se é isso que você procura.

Espero que ajude.

_________________
Assinatura: http://www.imoveisemexposicao.com.br/imoveis-venda-mogi_das_cruzes-residencial-casa
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Qui Nov 21, 2013 9:19 am    Assunto: Responder com Citação

imex escreveu:
Bom dia,

Experimente alterar o Where da sua query inicial para And, e adicione o campo permissao_gerenciadorrelatorios.tipo no Select para ver se é isso que você procura.

Espero que ajude.

_________________
Assinatura: http://www.imoveisemexposicao.com.br/imoveis-venda-mogi_das_cruzes-residencial-casa


Bom dia,

Voce diz deixar assim o select?
Código:
select
  relatorios.permissoes,
  case relatorios.modulo
   when 'AGENDA' then
     'Agenda'
   when 'AGETEL' then
     'Agenda Telefone'
   when 'BONIFI' then
     'Bonificação'
   when 'CADCLI' then
     'Cadastro de Clientes'
   when 'CADCNV' then
     'Cadastro de Convênio'
   when 'CADCOC' then
     'Cadastro de Contas Correntes'
   when 'CADFMT' then
     'Cadastro de Fomentador'
   when 'CADFOR' then
     'Cadastro de Fornecedor'
   when 'CADPAC' then
     'Cadastro de Pacotes'
   when 'CADPRF' then
     'Cadastro de Pacotes'
   when 'CADUSU' then
     'Cadastro de Usuários'
   when 'CATPTO' then
     'Catalogo de Pontos'
   when 'CENCUS' then
     'Centro de Custo'
   when 'CONCHQ' then
     'Controle Cheque'
   when 'CONGOR' then
     'Controle de Gorgeta'
   when 'CONTAS' then
     'Contas'
   when 'DHISVE' then
     'Histórico de Vendas'
   when 'DIVCLI' then
     'Dividas do Cliente'
   when 'FCHCLI' then
     'Ficha do Cliente'
   when 'FCHFOR' then
     'Ficha do Fornecedor'
   when 'FCHPAC' then
     'Ficha do Pacote'
   when 'FCHPRF' then
     'Ficha do Profissional'
   when 'FCHPRO' then
     'Ficha do Produto'
   when 'FCHSERV' then
     'Ficha do Serviço'
   when 'FCHUSU' then
     'Ficha do Usuário'
   when 'FFCHCX' then
     'Fechamento de Caixa'
   when 'FORPAG' then
     'Forma de Pagamento'
   when 'GRUHAB' then
     'Grupos de Habilidades'
   when 'HISVEN' then
     'Histórico de Vendas'
   when 'HISVPR' then
     'Histórico de Vendas ao Profissional'
   when 'MALDIR' then
     'Mala Direta'
   when 'MOVCBN' then
     'Movimentações das Contas Bancárias'
   when 'MOVEST' then
     'Movimentações no Estoque'
   when 'ORDSERV' then
     'Ordem de Serviços'
    when 'PRORAT' then
     'Rateio do Profissional/Assistente'
   when 'TABPRO' then
     'Tabela de Produtos'
   when 'TABSERV' then
     'Tabela de Serviços'
   when 'TIPUSU' then
     'Tipo de Usuários'
   else
     'Módulo não localizado'
   end as MODULOS,
   relatorios.TITULO,
   relatorios.AUTOR,
   relatorios.DESCRICAO,
   permissao_gerenciadorrelatorios.tipo,
   relatorios.MODULO
From relatorios
FULL JOIN permissao_gerenciadorrelatorios ON(relatorios.modulo = permissao_gerenciadorrelatorios.modulo
AND relatorios.titulo = permissao_gerenciadorrelatorios.titulo AND relatorios.autor =
permissao_gerenciadorrelatorios.autor)
and permissao_gerenciadorrelatorios.tipo = :pTIPO
order by 2


Se for, não deu certo porque quando seleciono qualquer um dos meus TIPOS aqui ele faz o mesmo select.

Obrigado.
_________________
Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 11666

MensagemEnviada: Qui Nov 21, 2013 9:41 am    Assunto: Responder com Citação

Acredito que a quantidade de linhas retornada seja a mesma mas o valor do campo permissao_gerenciadorrelatorios.tipo deve estar variando de acordo com o parâmetro. Ou não está ocorrendo isso?
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Qui Nov 21, 2013 9:50 am    Assunto: Responder com Citação

imex escreveu:
Acredito que a quantidade de linhas retornada seja a mesma mas o valor do campo permissao_gerenciadorrelatorios.tipo deve estar variando de acordo com o parâmetro. Ou não está ocorrendo isso?
Sim muda, mais como posso explicar

O primeiro campo chamado permissão eu estou marcando no checkbox

ai tenho no campo TIPO dois cadastros diferentes
CADASTROS
SEM MOBILE

Selecionei o TIPO SEM MOBILE
Ai no checkbox marquei dois arquivos como SIM e o restante NÃO,isso na tabela RELATORIOS no campo PERMISSÕES.

Mais queria que aparecesse estes dois campos marcados apenas para este TIPO sem mobile, mais o que esta acontecendo é que esta aparecendo os mesmo marcados para o TIPO CADASTROS.

É dificil de explicar o que preciso, mais vou tentar explicar.

Obrigado.
_________________
Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Qui Nov 21, 2013 10:04 am    Assunto: Responder com Citação

Imex, vou tentar mostrar com imagens

Tenho a tabela RELATORIOS


Ai no form seleciono por exemplo o TIPO "CADASTRO" ai vou dando check no grid para marcar e o campo PERMISSAO vai mudando conforme vou marcando no grid para "Sim" ou "Não" se desmarcar na grid.

E quando faço isso eu vou incluindo ou deletando na tabela PERMISSAO_GERENCIADORRELATORIOS, conforme imagem


Foi esta a ideia que tive a principio, mais no select se eu selecionar o TIPO "SEM MOBILE" vem todos check na grid os que marquei para o TIPO "CADASTROS" também conforme imagem



Não sei se da nesta confição ai mostrar todos os que estão marcados para o TIPO que selecionei e o restante mostrar na grade desmarcados.

Estou achando que isso da forma que preciso é praticamente impossível, mais vamos ver, se tem alguma ideia.

Obrigado.
_________________
Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 11666

MensagemEnviada: Qui Nov 21, 2013 10:28 am    Assunto: Responder com Citação

Experimente alterar o Full Join para Left Join, mantendo o And no lugar do Where, para ver se é obtido o resultado desejado.

Espero que ajude.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Qui Nov 21, 2013 11:02 am    Assunto: Responder com Citação

imex escreveu:
Experimente alterar o Full Join para Left Join, mantendo o And no lugar do Where, para ver se é obtido o resultado desejado.

Espero que ajude.
Não, não de certo, mesma coisa amigo.

Obrigado.
_________________
Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Qui Nov 21, 2013 12:18 pm    Assunto: Responder com Citação

Desta forma com LEFT no select fica igual

Exemplo:

Eu desmarquei todos na tabela PERMISSAO_GERENCIADORRELATORIOS e marquei apenas este aqui "Agendamento por Sala no período"



Ai o select esta assim

Código:
select
  relatorios.permissoes,
  case relatorios.modulo
   when 'AGENDA' then
     'Agenda'
   when 'AGETEL' then
     'Agenda Telefone'
   when 'BONIFI' then
     'Bonificação'
   when 'CADCLI' then
     'Cadastro de Clientes'
   when 'CADCNV' then
     'Cadastro de Convênio'
   when 'CADCOC' then
     'Cadastro de Contas Correntes'
   when 'CADFMT' then
     'Cadastro de Fomentador'
   when 'CADFOR' then
     'Cadastro de Fornecedor'
   when 'CADPAC' then
     'Cadastro de Pacotes'
   when 'CADPRF' then
     'Cadastro de Pacotes'
   when 'CADUSU' then
     'Cadastro de Usuários'
   when 'CATPTO' then
     'Catalogo de Pontos'
   when 'CENCUS' then
     'Centro de Custo'
   when 'CONCHQ' then
     'Controle Cheque'
   when 'CONGOR' then
     'Controle de Gorgeta'
   when 'CONTAS' then
     'Contas'
   when 'DHISVE' then
     'Histórico de Vendas'
   when 'DIVCLI' then
     'Dividas do Cliente'
   when 'FCHCLI' then
     'Ficha do Cliente'
   when 'FCHFOR' then
     'Ficha do Fornecedor'
   when 'FCHPAC' then
     'Ficha do Pacote'
   when 'FCHPRF' then
     'Ficha do Profissional'
   when 'FCHPRO' then
     'Ficha do Produto'
   when 'FCHSERV' then
     'Ficha do Serviço'
   when 'FCHUSU' then
     'Ficha do Usuário'
   when 'FFCHCX' then
     'Fechamento de Caixa'
   when 'FORPAG' then
     'Forma de Pagamento'
   when 'GRUHAB' then
     'Grupos de Habilidades'
   when 'HISVEN' then
     'Histórico de Vendas'
   when 'HISVPR' then
     'Histórico de Vendas ao Profissional'
   when 'MALDIR' then
     'Mala Direta'
   when 'MOVCBN' then
     'Movimentações das Contas Bancárias'
   when 'MOVEST' then
     'Movimentações no Estoque'
   when 'ORDSERV' then
     'Ordem de Serviços'
    when 'PRORAT' then
     'Rateio do Profissional/Assistente'
   when 'TABPRO' then
     'Tabela de Produtos'
   when 'TABSERV' then
     'Tabela de Serviços'
   when 'TIPUSU' then
     'Tipo de Usuários'
   else
     'Módulo não localizado'
   end as MODULOS,
   relatorios.TITULO,
   relatorios.AUTOR,
   relatorios.DESCRICAO,
   permissao_gerenciadorrelatorios.tipo,
   relatorios.MODULO
From relatorios
left JOIN permissao_gerenciadorrelatorios ON(relatorios.modulo = permissao_gerenciadorrelatorios.modulo
AND relatorios.titulo = permissao_gerenciadorrelatorios.titulo AND relatorios.autor =
permissao_gerenciadorrelatorios.autor)
and permissao_gerenciadorrelatorios.tipo = :pTIPO
order by 2


E ai passei o parametro CADASTROS no pTIPO, e se observar o CADASTRO não tem nada na tabela PERMISSAO_GERENCIADORRELATORIOS

E o result do select é este

Se reparar a coluna TIPO não aparece nada no primeiro item da tabela, mais na coluna PERMISOES aparece como 'Sim'

Agora se eu passar no parametro pTIPO SEM MOBILE o resultado do select é este

Neste caso ai aparece na coluna TIPO o tipo que esta cadastrado na tabela PERMISSAO_GERENCIADORRELATORIOS, então estaria correto este mostrar o 'Sim' no campo PERMISSOES deste select


Obrigado.
_________________
Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 11666

MensagemEnviada: Qui Nov 21, 2013 1:00 pm    Assunto: Responder com Citação

Acho que nesse caso não deve ser utilizado esse campo Permissoes da tabela Relatorios para marcar ou não os CheckBoxes.
Se você editar esse registro do relatório "Agendamento por Sala no período" e colocar "Não" vai obter esse valor para os dois tipos ("Cadastro" e "Sem mobile").
Sugeri adicionar o campo Tipo no Select para poder marcar os CheckBoxes. Quando é nulo não teria a permissão. Ou então experimente trocar a coluna Tipo do Select por

Código:
   case when permissao_gerenciadorrelatorios.tipo is null then 'Não' else 'Sim' end as TemPermissao,


Espero que ajude.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Qui Nov 21, 2013 1:56 pm    Assunto: Responder com Citação

imex escreveu:
Acho que nesse caso não deve ser utilizado esse campo Permissoes da tabela Relatorios para marcar ou não os CheckBoxes.
Se você editar esse registro do relatório "Agendamento por Sala no período" e colocar "Não" vai obter esse valor para os dois tipos ("Cadastro" e "Sem mobile").
Sugeri adicionar o campo Tipo no Select para poder marcar os CheckBoxes. Quando é nulo não teria a permissão. Ou então experimente trocar a coluna Tipo do Select por

Código:
   case when permissao_gerenciadorrelatorios.tipo is null then 'Não' else 'Sim' end as TemPermissao,


Espero que ajude.
Imex, acho que estou começando a entender sua ideia.

Vou mudar aqui pra ver.

Depois volto a postar.
_________________
Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
adriano_servitec
Colaborador
Colaborador


Registrado: Sexta-Feira, 30 de Janeiro de 2004
Mensagens: 17618

MensagemEnviada: Qui Nov 21, 2013 2:50 pm    Assunto: Responder com Citação

Da para eu incluir o checkd do checkbox sem gravar os dados no banco?

Ai posso dar um refresh do dataset quando sair do form, assim ao dar o refresh fica esquisito a dbgrid.

E aproveitando o post, tem como criar um select com DISTINCT + ou - da mesma forma do outro?

Quero agrupar pelo segundo campo
Código:
select distinct
  case when permissao_gerenciadorrelatorios.tipo is null then
      'Não'
   else
     'Sim'
  end as TemPermissao,
  case relatorios.modulo
   when 'AGENDA' then
     'Agenda'
   when 'AGETEL' then
     'Agenda Telefone'
   when 'BONIFI' then
     'Bonificação'
   when 'CADCLI' then
     'Cadastro de Clientes'
   when 'CADCNV' then
     'Cadastro de Convênio'
   when 'CADCOC' then
     'Cadastro de Contas Correntes'
   when 'CADFMT' then
     'Cadastro de Fomentador'
   when 'CADFOR' then
     'Cadastro de Fornecedor'
   when 'CADPAC' then
     'Cadastro de Pacotes'
   when 'CADPRF' then
     'Cadastro de Pacotes'
   when 'CADUSU' then
     'Cadastro de Usuários'
   when 'CATPTO' then
     'Catalogo de Pontos'
   when 'CENCUS' then
     'Centro de Custo'
   when 'CONCHQ' then
     'Controle Cheque'
   when 'CONGOR' then
     'Controle de Gorgeta'
   when 'CONTAS' then
     'Contas'
   when 'DHISVE' then
     'Histórico de Vendas'
   when 'DIVCLI' then
     'Dividas do Cliente'
   when 'FCHCLI' then
     'Ficha do Cliente'
   when 'FCHFOR' then
     'Ficha do Fornecedor'
   when 'FCHPAC' then
     'Ficha do Pacote'
   when 'FCHPRF' then
     'Ficha do Profissional'
   when 'FCHPRO' then
     'Ficha do Produto'
   when 'FCHSERV' then
     'Ficha do Serviço'
   when 'FCHUSU' then
     'Ficha do Usuário'
   when 'FFCHCX' then
     'Fechamento de Caixa'
   when 'FORPAG' then
     'Forma de Pagamento'
   when 'GRUHAB' then
     'Grupos de Habilidades'
   when 'HISVEN' then
     'Histórico de Vendas'
   when 'HISVPR' then
     'Histórico de Vendas ao Profissional'
   when 'MALDIR' then
     'Mala Direta'
   when 'MOVCBN' then
     'Movimentações das Contas Bancárias'
   when 'MOVEST' then
     'Movimentações no Estoque'
   when 'ORDSERV' then
     'Ordem de Serviços'
    when 'PRORAT' then
     'Rateio do Profissional/Assistente'
   when 'TABPRO' then
     'Tabela de Produtos'
   when 'TABSERV' then
     'Tabela de Serviços'
   when 'TIPUSU' then
     'Tipo de Usuários'
   else
     'Módulo não localizado'
   end as MODULOS,
   relatorios.MODULO
From relatorios
left JOIN permissao_gerenciadorrelatorios ON(relatorios.modulo = permissao_gerenciadorrelatorios.modulo
AND relatorios.titulo = permissao_gerenciadorrelatorios.titulo AND relatorios.autor =
permissao_gerenciadorrelatorios.autor)
and permissao_gerenciadorrelatorios.tipo = :pTIPO
order by 2

_________________
Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 11666

MensagemEnviada: Qui Nov 21, 2013 3:33 pm    Assunto: Responder com Citação

Não consegui entender direito a questão do Refresh, mas a principio será necessário ter o registro na tabela permissao_gerenciadorrelatorios para marcar o CheckBox.

E sobre o Distinct, a finalidade e saber se determinado tipo tem permissão para todos os relatórios? E se tiver para alguns e não tiver para outros?
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Banco de Dados Todos os horários são GMT - 3 Horas
Ir à página 1, 2  Próximo
Página 1 de 2

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB