MaximoAccess

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

Obrigado

Administração do MaximoAccess

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


    [Resolvido]impedir duplicidade de informação para o mesma chave estrangeira

    avatar
    costa256
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 26
    Registrado : 22/01/2019

    [Resolvido]impedir duplicidade de informação para o mesma chave estrangeira Empty [Resolvido]impedir duplicidade de informação para o mesma chave estrangeira

    Mensagem  costa256 em 11/3/2019, 19:32

    caros amigos.

    Meu formulário tem um subform em formulário contínuio.

    Esse subform tem origem uma tabela que tem os seguintes campos: ('CódProjeto' como chave primária, 'Projetos' que vem de uma listbox, 'Ano' campo texto e 'Cód_Cadastro' que é uma chave estrangeira de relacionamento com a tabela "Cadastro".


    Esse subform tem a função de receber os projetos que tal "cliente" participou, e existe outra subform que o usuário lança as datas das participações (tbl relacionada).

    Acontece q não faz sentido deixar liberado que o usuário selecione mais de uma vez o mesmo projeto (por falta de atenção ou por falta de orientação).

    Então, eu gostaria de criar uma rotina que impedisse o lançamento de um mesmo projeto para o mesmo cliente.


    A tabela fica assim:

    Cod.Projeto      -      Projeto      -      Ano      -      Cód_Cadastro

    001                        Projeto1           2018                   002
    004                        Projeto4           2018                   002
    001                        Projeto1           2018                   002    <--------
    002                        Projeto2           2019                   005
    001                        Projeto1           2019                   005



    Reparem que na 3ª linha, o projeto 1 se repetiu para o cliente 1.

    Então, o que eu gostaria de fazer é, uma rotina para identificar que o cliente 002 já possui um projeto 001 cadastrado e não seja possível realizar esse lançamento novamente, mas que para outros clientes ele não seja bloqueado.

    ou seja, a tabela PROJETOS recebe os projetos e o cod do cliente, mas não poderá ter 2 projetos iguais para o mesmo cliente.



    Até vi algo bem próximo disso aqui no fórum, mas não consegui adaptar ao meu projeto.


    Será que alguém pode me ajudar?


    Última edição por costa256 em 12/3/2019, 12:30, editado 1 vez(es)
    Marcelo David
    Marcelo David
    Moderador
    Moderador

    Respeito às Regras 100%

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

    [Resolvido]impedir duplicidade de informação para o mesma chave estrangeira Empty Re: [Resolvido]impedir duplicidade de informação para o mesma chave estrangeira

    Mensagem  Marcelo David em 12/3/2019, 00:50

    Boa noite.
    Pode fazer isso via relacionamento um-para-um ou via código VBA.
    No relacionamento um-para-um, basta definir nas propriedades do campo na tabela que a
    duplicidade não é permitida. O próprio Acces se encarrega de fazer o controle para você.

    Já no VBA, teria que fazer uma pesquisa no banco antes e se já houver não permitiria selecioná-lo.


    .................................................................................
    Marcelo David
    www.mrdsystem.com.br (em construção)
    avatar
    costa256
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 26
    Registrado : 22/01/2019

    [Resolvido]impedir duplicidade de informação para o mesma chave estrangeira Empty Re: [Resolvido]impedir duplicidade de informação para o mesma chave estrangeira

    Mensagem  costa256 em 12/3/2019, 12:31

    Prezado Marcelo,

    acho que nesse caso eu preciso mesmo de código por VBA.

    Pode me ajudar?
    Marcelo David
    Marcelo David
    Moderador
    Moderador

    Respeito às Regras 100%

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

    [Resolvido]impedir duplicidade de informação para o mesma chave estrangeira Empty Re: [Resolvido]impedir duplicidade de informação para o mesma chave estrangeira

    Mensagem  Marcelo David em 12/3/2019, 13:46

    A noite tentamos algo.


    .................................................................................
    Marcelo David
    www.mrdsystem.com.br (em construção)
    crysostomo
    crysostomo
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 702
    Registrado : 23/01/2018

    [Resolvido]impedir duplicidade de informação para o mesma chave estrangeira Empty Re: [Resolvido]impedir duplicidade de informação para o mesma chave estrangeira

    Mensagem  crysostomo em 12/3/2019, 14:09

    fico de canora nesse tópico , eu não sei comparar 2 campos se são iguais so sei comparar 1 campo pelo DLookup


    .................................................................................
    Uma mão ajuda a outra.
    O medo não é morrer, o medo é se alguém está morto dentro de você, assim como o fracassado é aquele que nem tentou
    avatar
    costa256
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 26
    Registrado : 22/01/2019

    [Resolvido]impedir duplicidade de informação para o mesma chave estrangeira Empty Re: [Resolvido]impedir duplicidade de informação para o mesma chave estrangeira

    Mensagem  costa256 em 25/3/2019, 19:33

    Alguém para dar uma ajuda?
    Marcelo David
    Marcelo David
    Moderador
    Moderador

    Respeito às Regras 100%

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

    [Resolvido]impedir duplicidade de informação para o mesma chave estrangeira Empty Re: [Resolvido]impedir duplicidade de informação para o mesma chave estrangeira

    Mensagem  Marcelo David em 26/3/2019, 00:53

    Boa noite,
    rapaz, esqueci esse tópico!
    Mas vamos correr que ainda da tempo... Very Happy

    Bom, qual campo representa o código do cliente?
    Pois se precisamos limitar o projetos por cliente, precisamos
    dessa informação para usarmos como critério.

    E qual o nome das tabelas envolvidas?


    .................................................................................
    Marcelo David
    www.mrdsystem.com.br (em construção)
    Jungli
    Jungli
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 657
    Registrado : 07/05/2010

    [Resolvido]impedir duplicidade de informação para o mesma chave estrangeira Empty Re: [Resolvido]impedir duplicidade de informação para o mesma chave estrangeira

    Mensagem  Jungli em 26/3/2019, 21:53

    Boas,

    Podes tentar assim:

    '// Verificamos se o campo está preenchido com o comando Not IsNull
    '// Se o campo estiver preenchido, pesquisamos se o valor do mesmo já está cadastrado
    '// Se SIM, emite um caviso e cancela a ação.

       If Not IsNull(DLookup("[CAMPO]", "TABELA", "[CAMPO] =" & Me.CAMPO_NO_FORMULÁRIO.Value)) Then
       ' Se o campo a ser procurado for texto
       ' If Not IsNull(DLookup("[CAMPO]", "TABELA", "[CAMPO] ='" & Me.CAMPO_NO_FORMULÁRIO.Value & "'" )) Then

          Cancel = True
          CAMPO_NO_FORMULÁRIO.Undo
          MsgBox "Campo já cadastrado no sistema.", vbInformation, "GjrAplicativos"
       Else
          'Rotina para fazer outra coisa Wink
       End If


    .................................................................................
    "Somos o que repetidamente fazemos.
    A excelência, portanto, não é um feito,
    mas um hábito."

    Aristóteles
    avatar
    costa256
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 26
    Registrado : 22/01/2019

    [Resolvido]impedir duplicidade de informação para o mesma chave estrangeira Empty Re: [Resolvido]impedir duplicidade de informação para o mesma chave estrangeira

    Mensagem  costa256 em 27/3/2019, 00:24

    Caro Marcelo David,

    Então.

    resumindo, meu projeto tem 3 tabelas.

    A Tabela pai é a tbl_Cadastro - Fonte de registro do form Cadastro).

    A tabela tbl_Projetos - Onde eu pré cadastro uma série de projetos)

    A tabela tbl_ListaDeProjetos - Essa tabela é fonte de registro do Sub Form frm_ListaDeProjetosSubForm.

    Ok.


    A tbl_ListaDeProjetos tem a seguinte estrutura de colunas:


    Cod.Projeto      -      Projeto      -      Ano      -      Cód_Cadastro



    As tabelas estão vinculadas, onde o Cód_Cadastro é a chave primária da tbl_Cadastro. Logo se torna chave estrangeira na tbl_ListaDeCadastro.


    A Coluna Projeto recebe os valores através de uma lista suspensa que busca as informações na tbl_Projetos. Acho que até aí está td OK.


    o form PAI é o frm_Cadastro, onde tenho os dados principais do meu "cliente". Esse form tem como fonte de dados a tbl_Cadastro.


    Dentro do frm_Cadastro eu tenho o Sub Form frm_ListaDeProjetos, que tem como fonte de dados a tbl_ListaDentãoProjetos.

    Então, digamos que eu atualize os cadastros dos clientes com as participações em cada projeto. então, quando eu lanço projetos nesse Sub Form frm_ListaDeProjetos, considerando o lançamento para vários clientes, a estrutura da tbl_ListaDeProjetos fica exatamente assim:

    Cod.Projeto      -      Projeto      -      Ano      -      Cód_Cadastro

    001                     Projeto1           2018                   002    <--------
    004                     Projeto4           2018                   002
    001                     Projeto1           2018                   002    <--------
    002                     Projeto2           2019                   005
    001                     Projeto1           2019                   005


    Observe as linhas 1 e 3. Elas são iguais. O Form precisa bloquear esse lançamento antes da atualização.

    Isso quer dizer que eu lancei 2x o mesmo projeto para um mesmo cliente.

    A questão é: dentro da tabela tbl_ListaDeProjetos, não permitir que eu a mesma combinação da linha se repita. Ou seja, não permitir que eu lance o Projeto 1 - 2018 para o cliente 002 Se já existir esse mesmo lançamento dentro da tabela.


    Não consegui raciocinar para não permitir o lançamento combinando esses valores dentro da tbl_ListaDeProjetos.


    Espero que eu não tenha confundido tudo nessa explicação.

    E mais uma vez agradeço pelas ajudas.
    avatar
    costa256
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 26
    Registrado : 22/01/2019

    [Resolvido]impedir duplicidade de informação para o mesma chave estrangeira Empty Re: [Resolvido]impedir duplicidade de informação para o mesma chave estrangeira

    Mensagem  costa256 em 27/3/2019, 00:26

    Caro amigo Jungli,

    a questão não é identificar campos vazios ou nulo.

    o grande problema é não permitir que uma mesma combinação de valores seja repetido dentro da tabela.

    Preciso bloquear que seja lançado uma linha igual a uma já existente.

    Agradeço pela ajuda
    Marcelo David
    Marcelo David
    Moderador
    Moderador

    Respeito às Regras 100%

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

    [Resolvido]impedir duplicidade de informação para o mesma chave estrangeira Empty Re: [Resolvido]impedir duplicidade de informação para o mesma chave estrangeira

    Mensagem  Marcelo David em 27/3/2019, 02:34

    Clareou bastante... Bem o caminho é o que o Jungli apontou.

    poderia postar o banco e faremos para você ver...


    .................................................................................
    Marcelo David
    www.mrdsystem.com.br (em construção)
    avatar
    costa256
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 26
    Registrado : 22/01/2019

    [Resolvido]impedir duplicidade de informação para o mesma chave estrangeira Empty Re: [Resolvido]impedir duplicidade de informação para o mesma chave estrangeira

    Mensagem  costa256 em 27/3/2019, 13:01

    Meus caros.

    Agradecimento nunca é demais.

    Antes de tudo , obrigado pela atenção dispensada para tentarem me ajudar.

    Estou enviando uma versão bem simplificada do sistema, do início do desenvolvimento.

    nessa versão algumas características estão modificadas.

    permanecem 3 tabelas e 3 Forms, mas da seguinte forma.


    tbl_Cadastro -> tabela de cadastro de dados dos clientes

    tbl_Projetos -> tabela onde são lançados os projetos. Os projetos são selecionados através de lista suspensa dentro da própria origem da linha. As tabelas estão relacionadas, onde na tbl_Projetos existe o campo CPFCNPJ_Cadastro que recebe o CNPJ ou CPF da tabela cadastro como chave estrangeira.


    tbl_HistMovProj - Tabela onde eu lanço o histórico de cada projeto cadastrado para cada cliente. a tbl_Projetos e a tbl_HistMovProj estão relacionadas, onde a tbl_HistMovProj tem o campo CodProjeto que recebe o código de cada projeto como chave estrangeira.


    O princípio é o mesmo que eu descrevi no post anterior.


    Acho que dá para analisar as relações e entender tudo.

    estou enviando esse formulário pelo google drive

    [https://drive.google.com/file/d/1BPUsaMm4Qj_h6NfuhjpndiuiEVQ5FZrs/view?usp=sharing]



    O formulário pai pe o frm_Cadastro

    Mais uma vez, obrigado pela ajuda de todos.



    Marcelo David
    Marcelo David
    Moderador
    Moderador

    Respeito às Regras 100%

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

    [Resolvido]impedir duplicidade de informação para o mesma chave estrangeira Empty Re: [Resolvido]impedir duplicidade de informação para o mesma chave estrangeira

    Mensagem  Marcelo David em 27/3/2019, 13:55

    Bom dia,
    faça um teste e veja se é isso.

    Os códigos estão no eventos antes de atualizar do subformmulário de inserção de projetos.

    Obs. 1.: dei preferencia a fazer com recordsetclone por ser mais fácil a comparação e melhor o trafego caso use o aplicativo em rede.

    Obs. 2: sempre compacte e repare seu apicativo. Ele estava com mais de 6mb e após compactado foi para 600k. Wink
    Anexos
    [Resolvido]impedir duplicidade de informação para o mesma chave estrangeira AttachmentSistema_new1.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (65 Kb) Baixado 7 vez(es)


    .................................................................................
    Marcelo David
    www.mrdsystem.com.br (em construção)
    avatar
    costa256
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 26
    Registrado : 22/01/2019

    [Resolvido]impedir duplicidade de informação para o mesma chave estrangeira Empty Re: [Resolvido]impedir duplicidade de informação para o mesma chave estrangeira

    Mensagem  costa256 em 27/3/2019, 17:37

    Caro Marcelo,

    Perfeito!

    Era exatamente o que eu precisava para esse BD. Com isso consigo finalizar e liberar para a finalidade.

    Mais uma vez muito obrigado pela ajuda.

    Compartilhar conhecimento é uma atitude nobre.

    Grande abraço.
    Marcelo David
    Marcelo David
    Moderador
    Moderador

    Respeito às Regras 100%

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

    [Resolvido]impedir duplicidade de informação para o mesma chave estrangeira Empty Re: [Resolvido]impedir duplicidade de informação para o mesma chave estrangeira

    Mensagem  Marcelo David em 27/3/2019, 17:59

    Fico feliz em ajudar e também em aprender nesse Fórum!
    Sucesso!


    .................................................................................
    Marcelo David
    www.mrdsystem.com.br (em construção)

    Conteúdo patrocinado

    [Resolvido]impedir duplicidade de informação para o mesma chave estrangeira Empty Re: [Resolvido]impedir duplicidade de informação para o mesma chave estrangeira

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 27/5/2019, 02:51