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]impedir duplicidade de informação para o mesma chave estrangeira

    avatar
    costa256
    Intermediário
    Intermediário

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 59
    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 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 : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3324
    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 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 | [Resolvido]impedir duplicidade de informação para o mesma chave estrangeira LinkedIn_Icon.jpg.original LinkedIn
    https://www.freetool.dev
    avatar
    costa256
    Intermediário
    Intermediário

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 59
    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 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 : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3324
    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 12/3/2019, 13:46

    A noite tentamos algo.


    .................................................................................
    Marcelo David | [Resolvido]impedir duplicidade de informação para o mesma chave estrangeira LinkedIn_Icon.jpg.original LinkedIn
    https://www.freetool.dev
    crysostomo
    crysostomo
    Maximo VIP
    Maximo VIP

    Respeito às regras : Respeito às Regras 50%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1714
    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 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.
    Feliz aquele que transfere o que sabe e aprende o que ensina.
    avatar
    costa256
    Intermediário
    Intermediário

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 59
    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 25/3/2019, 19:33

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

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3324
    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 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 | [Resolvido]impedir duplicidade de informação para o mesma chave estrangeira LinkedIn_Icon.jpg.original LinkedIn
    https://www.freetool.dev
    Jungli
    Jungli
    Developer
    Developer

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 679
    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 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
    Intermediário
    Intermediário

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 59
    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 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
    Intermediário
    Intermediário

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 59
    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 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 : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3324
    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 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 | [Resolvido]impedir duplicidade de informação para o mesma chave estrangeira LinkedIn_Icon.jpg.original LinkedIn
    https://www.freetool.dev
    avatar
    costa256
    Intermediário
    Intermediário

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 59
    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 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 : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3324
    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 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 16 vez(es)


    .................................................................................
    Marcelo David | [Resolvido]impedir duplicidade de informação para o mesma chave estrangeira LinkedIn_Icon.jpg.original LinkedIn
    https://www.freetool.dev
    avatar
    costa256
    Intermediário
    Intermediário

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 59
    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 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 : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3324
    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 27/3/2019, 17:59

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


    .................................................................................
    Marcelo David | [Resolvido]impedir duplicidade de informação para o mesma chave estrangeira LinkedIn_Icon.jpg.original LinkedIn
    https://www.freetool.dev

      Data/hora atual: 14/6/2021, 06:12