MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração


Participe do fórum, é rápido e fácil

MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração

MaximoAccess

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access

    [Resolvido]Carregar caixa de combinação com itens NÃO lançados em tabela relacionada

    MZapia
    MZapia
    Novato
    Novato

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 40
    Registrado : 10/10/2015

    [Resolvido]Carregar caixa de combinação com itens NÃO lançados em tabela relacionada Empty [Resolvido]Carregar caixa de combinação com itens NÃO lançados em tabela relacionada

    Mensagem  MZapia 2/1/2019, 20:33

    Boa tarde...Feliz 2019 para todos...

    Surgiu uma dúvida aqui (deu pane...)

    Possuo três tabelas:

    TABELA: tbDepartamento
    ID_Departamento
    Departamento

    TABELA: tbPermissao
    ID_Permissao
    ID_Departamento
    ID_Modulo

    TABELA: tbModulo
    ID_Modulo
    Modulo

    Relacionamento: Departamento --> Permissao <--Modulo

    Estou querendo carregar uma caixa de combinação com os MÓDULOS (tbModulo.Modulo) não lançados ainda na tabela (tbPermissao) do departamento selecionado.

    EXEMPLO:

    Departamento: FINANCEIRO
    na tabela de permissão já foram lançados 3 módulos num total de 10 módulos cadastrados.
    Quero quando eu clicar na combo cboDepartamento apareça apenas os 07 módulos faltantes...

    Tentei utilizar o LEFT JOIN, porém deu erro...

    Alguém pode me auxiliar?
    Atenciosamente,
    Marcelo Zapia
    Marcelo David
    Marcelo David
    Moderador
    Moderador

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3356
    Registrado : 21/04/2011

    [Resolvido]Carregar caixa de combinação com itens NÃO lançados em tabela relacionada Empty Re: [Resolvido]Carregar caixa de combinação com itens NÃO lançados em tabela relacionada

    Mensagem  Marcelo David 3/1/2019, 11:32

    Bom dia e feliz 2019!  cheers

    Não entendi como que saberemos que o modulo 1 pertence ao departamento 2, pois quem faz essa relação é a tabela tbPermissao?

    Pois se ainda não há esse vinculo, não teremos como carregar apenas os modulos do departamento selecionado, uma vez que quem faz o vinculo é a própria tabela de permissões.

    Imagino que teremos que repensar a estrutura de tabelas e campos, caso meus questionamentos não possam ser esclarecidos.

    No aguardo.


    .................................................................................
    Aprenda como criar formulário desacoplado.
    Clique aqui e conheça o treinamento.
    [Resolvido]Carregar caixa de combinação com itens NÃO lançados em tabela relacionada Marcel11
    MZapia
    MZapia
    Novato
    Novato

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 40
    Registrado : 10/10/2015

    [Resolvido]Carregar caixa de combinação com itens NÃO lançados em tabela relacionada Empty Re: [Resolvido]Carregar caixa de combinação com itens NÃO lançados em tabela relacionada

    Mensagem  MZapia 3/1/2019, 12:38

    Prezado Marcelo, bom dia.

    Primeiramente, obrigado pela atenção.

    É o seguinte, fiz a pedido do cliente a permissão através do departamento do funcionário, ou seja, todo acesso e outras operações se dará para os departamentos que consequentemente estão relacionados com a tabela de usuários.

    A tabela módulo, nada mais é que o nome "amigável" dos formulários que estarão sob permissão.

    O que gostaria de fazer é na hora em que o usuário for dar permissão para um determinado departamento, ao clicar no botão incluir, carregasse a caixa de combinação com apenas os módulos em que o departamento ainda não foi relacionado.

    Exemplo:

    Possuo 3 módulos cadastrados: Cadastro de Clientes, Cadastro de Fornecedores e Cadastro de Bancos.

    O Departamento Financeiro já está com permissões para o Cadastro de Bancos...

    Se for incluir uma nova permissão para o departamento financeiro, ao clicar em incluir, carrega na caixa de combinação apenas os (Cadastro de Clientes e Cadastro de Fornecedores)...

    Abaixo, segue a função para carregar a caixa de combinação (que carrega TODOS os módulos)

    Código:
    Public Function fncCarregaModulo()
    '------------------------------------------------------------------------------------------
    'Carregar a combo
    '------------------------------------------------------------------------------------------
    Dim strSQL As String

    strSQL = "Select tbUsuarioPermissaoModulo.ID_Modulo,tbUsuarioPermissaoModulo.Modulo"
    strSQL = strSQL & " FROM tbUsuarioPermissaoModulo"
    strSQL = strSQL & " ORDER BY tbUsuarioPermissaoModulo.ID_Modulo"

    'Limpa a combo
    With cboModulo
        .RowSource = ""
        .RowSource = strSQL
    End With
    '------------------------------------------------------------------------------------------
    End Function


    Obrigado...
    Anexos
    [Resolvido]Carregar caixa de combinação com itens NÃO lançados em tabela relacionada AttachmentRelacionamento.jpg
    Você não tem permissão para fazer download dos arquivos anexados.
    (35 Kb) Baixado 5 vez(es)
    Marcelo David
    Marcelo David
    Moderador
    Moderador

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3356
    Registrado : 21/04/2011

    [Resolvido]Carregar caixa de combinação com itens NÃO lançados em tabela relacionada Empty Re: [Resolvido]Carregar caixa de combinação com itens NÃO lançados em tabela relacionada

    Mensagem  Marcelo David 3/1/2019, 23:56

    Agora entendi.
    Vi que os nomes das tabelas informadas na mensagem 1 não coincidem com os nomes
    apresentado na imagem dos relacionamento. E pensando na estrutura que você pretende,
    me parece que falta relacionamento um para muitos.

    Diante disse e para sermos assertivos, poste seu banco para que testemos algo ou até mesmo
    altere caso seja necessário.



    .................................................................................
    Aprenda como criar formulário desacoplado.
    Clique aqui e conheça o treinamento.
    [Resolvido]Carregar caixa de combinação com itens NÃO lançados em tabela relacionada Marcel11
    MZapia
    MZapia
    Novato
    Novato

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 40
    Registrado : 10/10/2015

    [Resolvido]Carregar caixa de combinação com itens NÃO lançados em tabela relacionada Empty Re: [Resolvido]Carregar caixa de combinação com itens NÃO lançados em tabela relacionada

    Mensagem  MZapia 4/1/2019, 13:24

    Prezado Marcelo, bom dia.

    Segue o banco de dados (teste) para vossa análise.

    O que preciso: Quando selecionar o departamento, a caixa de combinação dos módulos carregue apenas os módulos que NÃO foram relacionados ao departamento selecionado...

    Atualmente, a caixa de combinação (Módulo) carrega TODOS os módulos.

    Grato pela sua atenção...
    Atenciosamente,

    Marcelo Zapia
    Anexos
    [Resolvido]Carregar caixa de combinação com itens NÃO lançados em tabela relacionada AttachmentbdTeste.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (67 Kb) Baixado 7 vez(es)
    Dilson
    Dilson
    Developer
    Developer

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1743
    Registrado : 11/11/2009

    [Resolvido]Carregar caixa de combinação com itens NÃO lançados em tabela relacionada Empty Re: [Resolvido]Carregar caixa de combinação com itens NÃO lançados em tabela relacionada

    Mensagem  Dilson 4/1/2019, 16:32

    Experimente. Coloque no evento Ao receber foco do controle cboModulo:


    On Error GoTo TratarErro
    Recomeca:
    Dim bd As DAO.Database
    Dim Query1 As QueryDef
    Dim Query2 As QueryDef
    Set bd = CurrentDb
    Set Query1 = bd.CreateQueryDef("QDF1", "SELECT tbUsuarioPermissaoModulo.ID_Modulo, tbUsuarioPermissaoModulo.Modulo, tbUsuarioPermissao.Departamento " _
                                               & "FROM tbUsuarioPermissaoModulo LEFT JOIN tbUsuarioPermissao ON tbUsuarioPermissaoModulo.ID_Modulo = tbUsuarioPermissao.Modulo " _
                                               & "WHERE (((tbUsuarioPermissao.Departamento)=" & Me.cboDepartamento & "))")
    Set Query2 = bd.CreateQueryDef("QDF2", "SELECT tbUsuarioPermissaoModulo.ID_Modulo, tbUsuarioPermissaoModulo.Modulo " _
                                               & "FROM tbUsuarioPermissaoModulo LEFT JOIN QDF1 ON tbUsuarioPermissaoModulo.ID_Modulo = QDF1.ID_Modulo " _
                                               & "WHERE (((QDF1.ID_Modulo) Is Null));")
    Me.cboModulo.RowSource = "QDF2"
    bd.Close
    Exit_TrataErro:
    Exit Sub
    TratarErro:
    If Err.Number = 3012 Then
          DoCmd.DeleteObject acQuery, "QDF1"
          DoCmd.DeleteObject acQuery, "QDF2"
          GoTo Recomeca
    Else
          MsgBox "Aconteceu um erro inesperado. N° do Erro: " & Err.Number & "; Descrição do Erro: " & Err.Description
    End If
    Resume Exit_TrataErro


    Última edição por Dilson em 4/1/2019, 17:05, editado 1 vez(es) (Motivo da edição : Acrescentei a variável bd para referenciar CurrentDb)
    MZapia
    MZapia
    Novato
    Novato

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 40
    Registrado : 10/10/2015

    [Resolvido]Carregar caixa de combinação com itens NÃO lançados em tabela relacionada Empty Re: [Resolvido]Carregar caixa de combinação com itens NÃO lançados em tabela relacionada

    Mensagem  MZapia 4/1/2019, 23:30

    Prezado Dilson, boa noite.

    Grato pelo auxílio...deu certo...

    Pesquisei sobre LEFT JOIN e pelo que entendi (espero que seja isso) , funciona com apenas 1 (uma) tabela, correto?!

    Já havia realizado em outras situações, mas sempre com uma tabela relacionada apenas...neste caso são duas tabelas...

    Muito obrigado pela ajuda...

    Abraço.

    Marcelo Zapia
    Dilson
    Dilson
    Developer
    Developer

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1743
    Registrado : 11/11/2009

    [Resolvido]Carregar caixa de combinação com itens NÃO lançados em tabela relacionada Empty Re: [Resolvido]Carregar caixa de combinação com itens NÃO lançados em tabela relacionada

    Mensagem  Dilson 5/1/2019, 15:02

    Olá Zapia !

    Ótimo cheers

    Sim sim meu camarada, no momento que vi a relação das tabelas já fiz de imediato uma instancia LEFT JOIN sobre duas tabelas (Modulo e Permissão) e me trouxe o resultado esperado sob um critério apenas: (ID Modulo = Nulo do lado da tabela Permissao). No entanto havia o critério ID Departamento a ser considerado e os dois foram colocados e não houve resultado algum. Percebi que teria primeiro que usar uma query para selecionar o ID Departamento desejado e com o resultado aplicar na segunda query a trazer o resultado.

    Implemente da melhor maneira ao seu caso.

    Até !





      Data/hora atual: 29/7/2021, 12:43