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


5 participantes

    [Resolvido]Controle contra Duplicação de Cadastro

    MarceloSilva
    MarceloSilva
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 156
    Registrado : 28/02/2011

    [Resolvido]Controle contra Duplicação de Cadastro Empty Controle contra Duplicação de Cadastro

    Mensagem  MarceloSilva 8/10/2012, 18:23

    Boa tarde caros amigos

    tenho a seguinte situação sobre controle de duplicidade....

    tenho uma ferramenta que cadastra Edifício e seus respectivos Apartamento

    Como faço para não duplicar o cadastro do apartamento de seu respectivo edifício? (tendo em vista que se pode cadastrar o mesmo numero de apartamento porem não para o mesmo edifício)

    ex:
    Edifício TesteA
    Apa. 101
    Apa. 102
    Apa. 103

    Edifício TesteB
    Apa. 101
    Apa. 102
    Apa. 103

    Dentro da tbl_CadastroApartamento possuo uma chave estrangeira ID_CadEdificio a qual vincula o apartamento ao Edifício.


    Leandro
    Leandro
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Controle contra Duplicação de Cadastro Empty Re: [Resolvido]Controle contra Duplicação de Cadastro

    Mensagem  Leandro 8/10/2012, 20:14

    Que tal uma DCount?

    Dim ContApart as Integer
    ContApart = Dcount("[NomeAP]","TabAPs","[CodEdificio]=" & txtCodEdificio And "[NomeAp]=" & txtNomeAP)
    If ContApart > 0 Then
    MsgBox "Você já cadastrou esse apartamento!"
    DoCmd.CancelEvent
    End If

    Coloque no evento Ao Sair da sua caixa de texto onde escreve os nomes dos apartamentos.

    MarceloSilva
    MarceloSilva
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 156
    Registrado : 28/02/2011

    [Resolvido]Controle contra Duplicação de Cadastro Empty Re: [Resolvido]Controle contra Duplicação de Cadastro

    Mensagem  MarceloSilva 8/10/2012, 20:42

    Obrigado leandro pelo rápido retorno...

    Mas consegui ter sucesso....adaptei seu Código mas apresenta erro 13
    veja com eu fiz:

    Dim ContApart as Integer
    ContApart = DCount("[NumeroApartamento]", "tbl_Apartamento", "[ID_CadObra]=" & txtID_CadObra And "[NumeroApartamento]=" & txtNumeroApartamento)
    If ContApart > 0 Then
    MsgBox "Você já cadastrou esse apartamento!"
    DoCmd.CancelEvent
    End If


    Lembrando que o campo [NumeroApartamento] é campo texto
    O campo [ID_CadObra] é campo numero (Chave estrangeira)

    Ambas na Tabela [tbl_Apartamento]

    O que fiz de errado????
    MarceloSilva
    MarceloSilva
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 156
    Registrado : 28/02/2011

    [Resolvido]Controle contra Duplicação de Cadastro Empty Re: [Resolvido]Controle contra Duplicação de Cadastro

    Mensagem  MarceloSilva 8/10/2012, 20:50

    mesmo assim mantem o erro Leandro

    "Erro em tempo de execução 13"
    "Tipo incompatível"
    Leandro
    Leandro
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Controle contra Duplicação de Cadastro Empty Re: [Resolvido]Controle contra Duplicação de Cadastro

    Mensagem  Leandro 8/10/2012, 21:08

    Deu Bug em mim!!! rsrsrs

    É só isso:

    Dim ContApart as String
    ContApart = DCount("[NumeroApartamento]", "tbl_Apartamento", "[ID_CadObra]=" & txtID_CadObra)
    If ContApart > 0 Then
    MsgBox "Você já cadastrou esse apartamento!"
    DoCmd.CancelEvent
    End If




    MarceloSilva
    MarceloSilva
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 156
    Registrado : 28/02/2011

    [Resolvido]Controle contra Duplicação de Cadastro Empty Re: [Resolvido]Controle contra Duplicação de Cadastro

    Mensagem  MarceloSilva 8/10/2012, 21:23

    Desculpe Leandro mas ainda dar um errinho

    e não consigo entende-lo

    Agora é erro 3075
    Operador faltando [ID_CadObra]=

    Cláudio Más
    Cláudio Más
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1314
    Registrado : 21/01/2012

    [Resolvido]Controle contra Duplicação de Cadastro Empty Re: [Resolvido]Controle contra Duplicação de Cadastro

    Mensagem  Cláudio Más 8/10/2012, 22:07

    Provavelmente [ID_CadObra] está nulo nesse momento.
    Tente assim:

    Código:
    ContApart = DCount("[NumeroApartamento]", "tbl_Apartamento", "[ID_CadObra]=" & Nz(txtID_CadObra, 0))
    Leandro
    Leandro
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Controle contra Duplicação de Cadastro Empty Re: [Resolvido]Controle contra Duplicação de Cadastro

    Mensagem  Leandro 9/10/2012, 12:08

    Bom dia Marcelo, desculpe ter deixado sem resposta ontém, tive que sair as pressas e não pude respondê-lo á noite.

    A forma que eu consegui fazer é assim:

    Private Sub txtNApartamento_Exit(Cancel As Integer)
    Dim contAps As String
    Dim contObras As Integer
    contObras = DCount("[NApartamento]", "Aps", "[IdCodObra]=" & Me!txtIdCodObra)
    contAps = DCount("[NApartamento]", "Aps", "[NApartamento]='" & Me!txtNApartamento & "'")
    If contObras And contAps > 1 Then
    MsgBox "Apartametno já existe nesse edifício!"
    DoCmd.CancelEvent
    End If
    End Sub

    Creio que o problema dos tipos incompatíveis é pelo fato do critério de texto e numérico na mesma variável.

    MarceloSilva
    MarceloSilva
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 156
    Registrado : 28/02/2011

    [Resolvido]Controle contra Duplicação de Cadastro Empty Re: [Resolvido]Controle contra Duplicação de Cadastro

    Mensagem  MarceloSilva 9/10/2012, 12:40

    Agora sim.....

    Unindo sua rotina com a dica do Claudio Más deu na medida.

    Obrigado Leandro e Cláudio....pelo rápido retorno....

    Dou por encerrado.....

    at.
    Leandro
    Leandro
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Controle contra Duplicação de Cadastro Empty Re: [Resolvido]Controle contra Duplicação de Cadastro

    Mensagem  Leandro 9/10/2012, 12:53

    Marcelo, dará erro mesmo assim, ele está contando depois de atualizado, e isso vai contar um dado que já está é melhor você colocar o código no evento Antes de Atualizar.

    Assim:

    Private Sub txtNApartamento_BeforeUpdate(Cancel As Integer)
    Dim contAps As String
    Dim contObras As Integer
    contObras = DCount("[IdCodObra]", "Aps", "[IdCodObra]=" & Me!txtIdCodObra)
    contAps = DCount("[NApartamento]", "Aps", "[NApartamento]='" & Me!txtNApartamento & "'")
    If contObras And contAps > 1 Then
    MsgBox "erro"
    DoCmd.CancelEvent
    End If
    End Sub

    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 11016
    Registrado : 04/11/2009

    [Resolvido]Controle contra Duplicação de Cadastro Empty Re: [Resolvido]Controle contra Duplicação de Cadastro

    Mensagem  JPaulo 9/10/2012, 13:08

    Intromissão minha,

    Para ficar na mosca, devem utilizar a função Nz,


    contObras = Nz(DCount("[IdCodObra]", "Aps", "[IdCodObra]=" & Me!txtIdCodObra), 0)
    contAps = Nz(DCount("[NApartamento]", "Aps", "[NApartamento]='" & Me!txtNApartamento & "'"), 0)


    E como o BeforeUpdate(Cancel As Integer), tem declarado o Cancel As Integer, em vez do DoCmd.CancelEvent, devem utilizar o :

    Cancel=True



    .................................................................................
    Contribua com o maximoaccess nos links abaixo, ajude a melhorar este que é o seu site na NET.

    Pay-Pal R$ Aqui
    Pay-Pal € Aqui

    Ou ainda: Aqui (Novo)

    Sucesso e Bons Estudos
    Success and Good Studies

    [Resolvido]Controle contra Duplicação de Cadastro Folder_announce_new Utilize o Sistema de Busca do Fórum...
    [Resolvido]Controle contra Duplicação de Cadastro Folder_announce_new 102 Códigos VBA Gratuitos...
    [Resolvido]Controle contra Duplicação de Cadastro Folder_announce_new Instruções SQL como utilizar...
    MarceloSilva
    MarceloSilva
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 156
    Registrado : 28/02/2011

    [Resolvido]Controle contra Duplicação de Cadastro Empty Re: [Resolvido]Controle contra Duplicação de Cadastro

    Mensagem  MarceloSilva 9/10/2012, 13:23

    Agora código estável.....
    Boas dicas....

    Obrigado Leandro e Mestre JPaulo
    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 11016
    Registrado : 04/11/2009

    [Resolvido]Controle contra Duplicação de Cadastro Empty Re: [Resolvido]Controle contra Duplicação de Cadastro

    Mensagem  JPaulo 9/10/2012, 13:25

    Obrigado pelo retorno o forum agradece.

    É esse o objetivo deste fórum, "ajudar" enriquecendo os conhecimentos.

    O merito aqui é do Amigo Leandro.


    .................................................................................
    Contribua com o maximoaccess nos links abaixo, ajude a melhorar este que é o seu site na NET.

    Pay-Pal R$ Aqui
    Pay-Pal € Aqui

    Ou ainda: Aqui (Novo)

    Sucesso e Bons Estudos
    Success and Good Studies

    [Resolvido]Controle contra Duplicação de Cadastro Folder_announce_new Utilize o Sistema de Busca do Fórum...
    [Resolvido]Controle contra Duplicação de Cadastro Folder_announce_new 102 Códigos VBA Gratuitos...
    [Resolvido]Controle contra Duplicação de Cadastro Folder_announce_new Instruções SQL como utilizar...
    avatar
    marciomelo
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 6
    Registrado : 05/03/2012

    [Resolvido]Controle contra Duplicação de Cadastro Empty Colocar um Indice unico na tabela

    Mensagem  marciomelo 9/10/2012, 13:52

    Desculpe sei que esta solucionado, mas gostaria de acrescentar uma forma segura de garantir que nunca vai ter registros duplicados, na estrutura da tabela poderia colocar um indice único em dois campos ao mesmo tempo, dessa forma a própria tabela vai evitar as duplicidades, e a depuração poderia cair sobre o erro de duplicidade. No modo de estrutura das tabela, clicar em > Índices < na coluna "Nome do Índice" escreva algo que pode ser qualquer palavra - > Único < depois escolha os campos, vou tentar por abaixo um exemplo, pois o nome do índice só entra na primeira linha, e deve manter seus outros índices caso exista...

    Nome do Índice Nome do Campo Ordem de Classificação
    Único BlocoCrescente
    Apartamento Crescente

    Na linha onde esta escrito único, em propriedade do índice que fica logo abaixo onde esta escrito > Exclusivo < mude p Sim , com isso a combinação dos campos Bloco e Apartamento não poderam repetir, caso isso aconteça o próprio access emitirá uma mensagem de erro, mensagem de duplicidade de registros..., onde esse erro também pode ser depurado.

    Sou mais Brasil!

    Abs...


    Última edição por marciomelo em 9/10/2012, 17:50, editado 1 vez(es) (Motivo da edição : Montar uma tabela)
    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 11016
    Registrado : 04/11/2009

    [Resolvido]Controle contra Duplicação de Cadastro Empty Re: [Resolvido]Controle contra Duplicação de Cadastro

    Mensagem  JPaulo 9/10/2012, 14:05

    Optima contribuíção Marcio.

    E pode sempre alterar a mensagem padrão;

    http://maximoaccess.forumeiros.com/t9395-indexado-e-sua-mensagem-confusa



    .................................................................................
    Contribua com o maximoaccess nos links abaixo, ajude a melhorar este que é o seu site na NET.

    Pay-Pal R$ Aqui
    Pay-Pal € Aqui

    Ou ainda: Aqui (Novo)

    Sucesso e Bons Estudos
    Success and Good Studies

    [Resolvido]Controle contra Duplicação de Cadastro Folder_announce_new Utilize o Sistema de Busca do Fórum...
    [Resolvido]Controle contra Duplicação de Cadastro Folder_announce_new 102 Códigos VBA Gratuitos...
    [Resolvido]Controle contra Duplicação de Cadastro Folder_announce_new Instruções SQL como utilizar...
    Leandro
    Leandro
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Controle contra Duplicação de Cadastro Empty Re: [Resolvido]Controle contra Duplicação de Cadastro

    Mensagem  Leandro 9/10/2012, 14:37

    Obrigado pelo retorno Marcelo.

    JPaulo, sua nobreza e humildade são peculiares!

    Hoje eu recebo alguns "obrigados", mas devo muito disso às suas ajudas fóruns a fora, hoje achei o meu primeiro post num fórum, veja quem me ajudou:

    http://www.expertaccess.com.br/forumnew/forum_posts.asp?TID=11521&OB=DESC


    Abraço

    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 11016
    Registrado : 04/11/2009

    [Resolvido]Controle contra Duplicação de Cadastro Empty Re: [Resolvido]Controle contra Duplicação de Cadastro

    Mensagem  JPaulo 9/10/2012, 17:12

    É verdade, nesse ae desde 2006 e já conta com 7.906 Mensagens.


    .................................................................................
    Contribua com o maximoaccess nos links abaixo, ajude a melhorar este que é o seu site na NET.

    Pay-Pal R$ Aqui
    Pay-Pal € Aqui

    Ou ainda: Aqui (Novo)

    Sucesso e Bons Estudos
    Success and Good Studies

    [Resolvido]Controle contra Duplicação de Cadastro Folder_announce_new Utilize o Sistema de Busca do Fórum...
    [Resolvido]Controle contra Duplicação de Cadastro Folder_announce_new 102 Códigos VBA Gratuitos...
    [Resolvido]Controle contra Duplicação de Cadastro Folder_announce_new Instruções SQL como utilizar...

    Conteúdo patrocinado


    [Resolvido]Controle contra Duplicação de Cadastro Empty Re: [Resolvido]Controle contra Duplicação de Cadastro

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 2/5/2024, 13:58