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


3 participantes

    [Resolvido]Verificar duplicidade - Utilizando como critério vários campos!!

    EvandoNunes
    EvandoNunes
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 45
    Registrado : 24/01/2012

    [Resolvido]Verificar duplicidade - Utilizando como critério vários campos!! Empty [Resolvido]Verificar duplicidade - Utilizando como critério vários campos!!

    Mensagem  EvandoNunes 4/9/2012, 13:48

    Bom dia a todos!!!

    Estou desenvolvendo um banco para controle de pagamento de diárias, onde necessito lançar diariamente a data, a regional, o trecho, e agregado(Prestador de serviço) que fez a diária!

    Até aqui tudo bem, mas agora estou travado em uma validação para não deixar que uma diária seja lançada 2 ou + vezes!
    Cada regional tem seus agregado titulares onde eu lanço essas diárias de acordo com o dia da semana, para facilitar e deixar mais altomatizado, lanço essas diárias através de um formulário que é alimentado por uma consulta. Então é nesse formulario que tem que ser feito a verificação se a diária já foi lançada ou não!

    Para facilitar estou disponibilizando o banco para analise dos senhores!!!

    http://www.4shared.com/folder/U4hIIhJ4/_online.html

    Desde já obrigado a todos!!!
    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Verificar duplicidade - Utilizando como critério vários campos!! Empty Re: [Resolvido]Verificar duplicidade - Utilizando como critério vários campos!!

    Mensagem  JPaulo 4/9/2012, 14:11

    Ola seja bem vindo ao fórum.

    Recomendo que leia as regras do fórum.

    Antes de abrir um tópico deve efetuar uma busca, já existem muitos tópicos relacionados com Duplicidade.

    Veja este mesmo, que está logo abaixo do seu;
    http://maximoaccess.forumeiros.com/t9291-resolvidoaviso-ao-digitar-duplicidade


    .................................................................................
    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]Verificar duplicidade - Utilizando como critério vários campos!! Folder_announce_new Utilize o Sistema de Busca do Fórum...
    [Resolvido]Verificar duplicidade - Utilizando como critério vários campos!! Folder_announce_new 102 Códigos VBA Gratuitos...
    [Resolvido]Verificar duplicidade - Utilizando como critério vários campos!! Folder_announce_new Instruções SQL como utilizar...
    EvandoNunes
    EvandoNunes
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 45
    Registrado : 24/01/2012

    [Resolvido]Verificar duplicidade - Utilizando como critério vários campos!! Empty Re: [Resolvido]Verificar duplicidade - Utilizando como critério vários campos!!

    Mensagem  EvandoNunes 4/9/2012, 16:19

    Obrigado por sua atenção!

    Eu li as regras e também fiz uma busca por duplicidade, mas não encontrei nenhuma que me ajudasse!
    Se vc olhar o meu bd vai ver que não digito nada, para entrar com os dados, eles são inseridos diretamente por um formulário não acoplado.

    apartir deste formulário preenchido via consulta, gostaria de antes de gravar os dados na tabela, ele verificasse se já foi lançado aquelas diárias naquele dia correspondente!

    Creio que seja um desafio para todos! e ficarei muito grato pela ajuda!!!
    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Verificar duplicidade - Utilizando como critério vários campos!! Empty Re: [Resolvido]Verificar duplicidade - Utilizando como critério vários campos!!

    Mensagem  JPaulo 4/9/2012, 16:31

    Não vi o seu banco, pede Login no 4Shared.

    Anexe aqui em formato .zip


    .................................................................................
    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]Verificar duplicidade - Utilizando como critério vários campos!! Folder_announce_new Utilize o Sistema de Busca do Fórum...
    [Resolvido]Verificar duplicidade - Utilizando como critério vários campos!! Folder_announce_new 102 Códigos VBA Gratuitos...
    [Resolvido]Verificar duplicidade - Utilizando como critério vários campos!! Folder_announce_new Instruções SQL como utilizar...
    EvandoNunes
    EvandoNunes
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 45
    Registrado : 24/01/2012

    [Resolvido]Verificar duplicidade - Utilizando como critério vários campos!! Empty Re: [Resolvido]Verificar duplicidade - Utilizando como critério vários campos!!

    Mensagem  EvandoNunes 4/9/2012, 16:33

    Ok, Segue o BD
    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Verificar duplicidade - Utilizando como critério vários campos!! Empty Re: [Resolvido]Verificar duplicidade - Utilizando como critério vários campos!!

    Mensagem  JPaulo 4/9/2012, 16:41

    Evando qual é o formulario ?


    .................................................................................
    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]Verificar duplicidade - Utilizando como critério vários campos!! Folder_announce_new Utilize o Sistema de Busca do Fórum...
    [Resolvido]Verificar duplicidade - Utilizando como critério vários campos!! Folder_announce_new 102 Códigos VBA Gratuitos...
    [Resolvido]Verificar duplicidade - Utilizando como critério vários campos!! Folder_announce_new Instruções SQL como utilizar...
    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Verificar duplicidade - Utilizando como critério vários campos!! Empty Re: [Resolvido]Verificar duplicidade - Utilizando como critério vários campos!!

    Mensagem  JPaulo 4/9/2012, 16:47

    A minha sugestão seria fazer essa validação por RecordSet


    Talvez num botão de salver ou validar;


    Dim rst As Recordset
    Set rst = CurrentDb.OpenRecordset("SELECT * FROM SuaTabelaOuConsulta")

    Do While Not rst.EOF
    If rst![SeuCampo1] = Me.SuaCaixaTexto1.Value And rst![SeuCampo2] = Me.SuaCaixaTexto2.Value Then
    MsgBox "Registro já lançado...", vbCritical
    Exit Do
    Else
    'faz o procedimento de incluir ou salvar
    End If
    rst.MoveNext
    Loop
    rst.Close

    Neste exemplo coloquei a penas dois (2) criterios, mas pode fazer com muitos mais.


    .................................................................................
    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]Verificar duplicidade - Utilizando como critério vários campos!! Folder_announce_new Utilize o Sistema de Busca do Fórum...
    [Resolvido]Verificar duplicidade - Utilizando como critério vários campos!! Folder_announce_new 102 Códigos VBA Gratuitos...
    [Resolvido]Verificar duplicidade - Utilizando como critério vários campos!! Folder_announce_new Instruções SQL como utilizar...
    EvandoNunes
    EvandoNunes
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 45
    Registrado : 24/01/2012

    [Resolvido]Verificar duplicidade - Utilizando como critério vários campos!! Empty Re: [Resolvido]Verificar duplicidade - Utilizando como critério vários campos!!

    Mensagem  EvandoNunes 4/9/2012, 17:33

    Obrigado pelo retorno JPaulo!

    O formulário principal seria o frm_ControleGeral_Compactador, onde neste tem um botão que abre um segundo formulário para adicionar as diárias por regionais!

    Este segundo formulário é o frm_AddRegional_Compactador, onde filtro a regional que desejo adicionar as diárias e a data.

    Dentro deste formulário frm_AddRegional_Compactador tem um subform com o botão GRAVAR TRECHOS, onde minha ideia inicial seria colocar essa validação neste botão!

    EvandoNunes
    EvandoNunes
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 45
    Registrado : 24/01/2012

    [Resolvido]Verificar duplicidade - Utilizando como critério vários campos!! Empty Re: [Resolvido]Verificar duplicidade - Utilizando como critério vários campos!!

    Mensagem  EvandoNunes 4/9/2012, 18:35

    JPaulo, inseri o seu codigo no evento do botão salvar mas ele não esta fazendo a verificação, esta salvando direto! oque pode estar errado?

    Private Sub Comando19_Click()
    Dim rst As Recordset
    'On Error GoTo Err_Comando19_Click

    Set rst = CurrentDb.OpenRecordset("SELECT * FROM tbl_Controle")

    Do While Not rst.EOF
    If rst![Regional] = Me.Regional.Value And rst![Trecho] = Me.Trecho.Value And rst![Data] = Me.Data.Value Then
    MsgBox "Registro já lançado...", vbCritical
    Exit Do
    Else
    'faz o procedimento de incluir ou salvar
    If IsNull(Data) Or Me.Data = "" Then
    MsgBox "A DATA DA DIÁRIA É OBRIGATÓRIA!!!", vbInformation, " ATENÇÃO. "
    Forms!frm_AddRegional_Compactador!DataDiaria.SetFocus
    ElseIf Not IsNull(Data) Then

    If MsgBox("CONFIRMA ADIÇÃO DOS TRECHOS?", vbYesNo, "ADIÇÃO DE TRECHOS.") = vbYes Then
    Set rsclone = Me.RecordsetClone
    Dim bd As DAO.Recordset
    Set bd = CurrentDb.OpenRecordset("tbl_Controle")
    With frm_AddRegional_Compactador
    Do While Not rsclone.EOF
    bd.AddNew
    bd!Regional = rsclone!Regional
    bd!Trecho = rsclone!Trecho
    bd!Placa = rsclone!Placa
    bd!Proprietario = rsclone!Proprietario
    bd!ValorMensal = rsclone!ValorMensal
    bd!DiasUteis = rsclone!DiasUteis
    bd!ValorDiaria = rsclone!ValorDiaria
    bd!TipoAgregado = rsclone!TipoAgregado

    bd!Data = Forms!frm_AddRegional_Compactador!DataDiaria
    bd!IDUsuario = Forms!frm_AddRegional_Compactador!Usuario
    bd.Update
    rsclone.MoveNext
    Loop
    Set bd = Nothing
    End With
    MsgBox "DIARIAS ADICIONADAS COM SUCESSO!", vbInformation, "ATENÇÃO."
    Forms!frm_ControleGeral_Compactador.Refresh
    DoCmd.Close
    Else
    MsgBox "AÇÃO CANCELADA!", vbInformation, "ATENÇÃO."
    End If
    Exit_Comando19_Click:
    Exit Sub
    Err_Comando19_Click:
    MsgBox Err.Description
    Resume Exit_Comando19_Click
    End If
    End If
    rst.MoveNext
    Loop
    rst.Close
    End Sub
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8449
    Registrado : 05/11/2009

    [Resolvido]Verificar duplicidade - Utilizando como critério vários campos!! Empty Re: [Resolvido]Verificar duplicidade - Utilizando como critério vários campos!!

    Mensagem  Alexandre Neves 4/9/2012, 21:26

    Boa noite,
    Coloque, antes de inserir novo registo:
    If DCount("*","tbl_Controle","Data=#" & TxtData & "# and Regional='" & TxtRegional &"' and Trecho='" & TxtTrecho &"'")>0 then
    msgbox "Registo já lançado."
    docmd.cancelevent
    end if


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    EvandoNunes
    EvandoNunes
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 45
    Registrado : 24/01/2012

    [Resolvido]Verificar duplicidade - Utilizando como critério vários campos!! Empty Re: [Resolvido]Verificar duplicidade - Utilizando como critério vários campos!!

    Mensagem  EvandoNunes 4/9/2012, 22:02

    Caro Alexandre! testei aqui mas sem sucesso!!!

    A grande questão é que o formulário frm_AddRegional_Compactador não esta acoplado, ele é preenchido por uma consulta e os dados são salvos via codigo vb.

    Então eu gostaria que antes de salvar os dados na tbl_Controle fosse feita essa conferência se essas diarias já foram lançadas nesta data, e se foram voltar ao formulário frm_AddRegional_Compactador.
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8449
    Registrado : 05/11/2009

    [Resolvido]Verificar duplicidade - Utilizando como critério vários campos!! Empty Re: [Resolvido]Verificar duplicidade - Utilizando como critério vários campos!!

    Mensagem  Alexandre Neves 4/9/2012, 22:07

    Evando,
    Considerando que a data estará bem formatada, que Regional e Trecho sejam texto, o código que indiquei deveria funcionar
    Coloque este código antes do código de inserção de registo.


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Verificar duplicidade - Utilizando como critério vários campos!! Empty Re: [Resolvido]Verificar duplicidade - Utilizando como critério vários campos!!

    Mensagem  JPaulo 5/9/2012, 09:23

    O problema está em que o botão salvar está num subformulario e o campo data está no formulario.

    Então seria isto,

    If rst![Regional] = Me.Regional.Value And rst![Trecho] = Me.Trecho.Value And rst![Data] = Forms!frm_AddRegional_Compactador!DataDiaria Then

    Ou assim:

    If rst![Regional] = Me.Regional.Value And rst![Trecho] = Me.Trecho.Value And rst![Data] = "#" & Forms!frm_AddRegional_Compactador!DataDiaria & "#" Then


    Além disso ainda tem mais instruções, tais como:

    If IsNull(Data) Or Me.Data = "" Then
    MsgBox "A DATA DA DIÁRIA É OBRIGATÓRIA!!!", vbInformation, " ATENÇÃO. "
    Forms!frm_AddRegional_Compactador!DataDiaria.SetFocus

    Seria:

    If IsNull(Forms!frm_AddRegional_Compactador!DataDiaria) Then
    MsgBox "A DATA DA DIÁRIA É OBRIGATÓRIA!!!", vbInformation, " ATENÇÃO. "
    Forms!frm_AddRegional_Compactador!DataDiaria.SetFocus


    Atenção:
    Data é uma palavra reservada do Access, que pode provocar muitos erros.


    .................................................................................
    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]Verificar duplicidade - Utilizando como critério vários campos!! Folder_announce_new Utilize o Sistema de Busca do Fórum...
    [Resolvido]Verificar duplicidade - Utilizando como critério vários campos!! Folder_announce_new 102 Códigos VBA Gratuitos...
    [Resolvido]Verificar duplicidade - Utilizando como critério vários campos!! Folder_announce_new Instruções SQL como utilizar...
    EvandoNunes
    EvandoNunes
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 45
    Registrado : 24/01/2012

    [Resolvido]Verificar duplicidade - Utilizando como critério vários campos!! Empty Re: [Resolvido]Verificar duplicidade - Utilizando como critério vários campos!!

    Mensagem  EvandoNunes 5/9/2012, 14:38

    Bom dia Dr°´s !!!

    Desde já agradeço pela ajuda de vc´s!

    Ambos os códigos indicados pelo JPaulo e também pelo Alexandre funcionaram; mas ainda tenho um problema cujo qual não consegui identificar!

    Ao lançar um diária, por exemplo no dia 01/09/2012 na regional BARREIRO, o sistema salva normalmente! se eu voltar imediatamente e tentar inserir está mesma diária, o código me bloqueia! OK.

    Mas se eu entrar com outra diária em outro dia e posteriormente tentar lançar a diária do 01/09/2012 novamente, o código já não barra mais!

    Este e o código que estou usando!

    Dim rst As Recordset
    Set rst = CurrentDb.OpenRecordset("SELECT * FROM tbl_Controle")

    If rst![Regional] = Me.Regional.Value And rst![Trecho] = Me.Trecho.Value And rst![Data_Diaria] = Me.[Data_Diaria] Then
    MsgBox "DIÁRIAS JÁ FORAM LANÇADAS...", vbCritical, "ATENÇÃO."
    Else
    If MsgBox("CONFIRMA ADIÇÃO DOS TRECHOS?", vbYesNo, "ADIÇÃO DE TRECHOS.") = vbYes Then
    Set rsclone = Me.RecordsetClone
    Dim bd As DAO.Recordset
    Set bd = CurrentDb.OpenRecordset("tbl_Controle")
    With frm_AddRegional_Compactador
    Do While Not rsclone.EOF
    bd.AddNew
    bd!Regional = rsclone!Regional
    bd!Trecho = rsclone!Trecho
    bd!Placa = rsclone!Placa
    bd!Proprietario = rsclone!Proprietario
    bd!ValorMensal = rsclone!ValorMensal
    bd!DiasUteis = rsclone!DiasUteis
    bd!ValorDiaria = rsclone!ValorDiaria
    bd!TipoAgregado = rsclone!TipoAgregado

    bd!Data_Diaria = Forms!frm_AddRegional_Compactador!Data_Diaria
    bd!IDUsuario = Forms!frm_AddRegional_Compactador!Usuario
    bd.Update
    rsclone.MoveNext
    Loop
    Set bd = Nothing
    End With
    MsgBox "DIARIAS ADICIONADAS COM SUCESSO!", vbInformation, "ATENÇÃO."
    Forms!frm_ControleGeral_Compactador.Refresh
    DoCmd.Close
    Else
    MsgBox "AÇÃO CANCELADA!", vbInformation, "ATENÇÃO."
    End If
    End If

    Segue o banco modificado caso queiram dar uma olhada!
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8449
    Registrado : 05/11/2009

    [Resolvido]Verificar duplicidade - Utilizando como critério vários campos!! Empty Re: [Resolvido]Verificar duplicidade - Utilizando como critério vários campos!!

    Mensagem  Alexandre Neves 5/9/2012, 14:48

    Não alterou a verificação da duplicidade
    Tente assim
    Dim rst As Recordset
    Set rst = CurrentDb.OpenRecordset("SELECT * FROM tbl_Controle")

    rst.findfirst "Regional='" & Forms!frm_AddRegional_Compactador!Regional & " And Trecho='" & Forms!frm_AddRegional_Compactador!Trecho & " And Data_Diaria=#" & Forms!frm_AddRegional_Compactador!Data_Diaria & "#"

    If not rst.nomatch Then
    MsgBox "DIÁRIAS JÁ FORAM LANÇADAS...", vbCritical, "ATENÇÃO."
    Else
    If MsgBox("CONFIRMA ADIÇÃO DOS TRECHOS?", vbYesNo, "ADIÇÃO DE TRECHOS.") = vbYes Then
    Set rsclone = Me.RecordsetClone
    Dim bd As DAO.Recordset
    Set bd = CurrentDb.OpenRecordset("tbl_Controle")
    With frm_AddRegional_Compactador
    Do While Not rsclone.EOF
    bd.AddNew
    bd!Regional = rsclone!Regional
    bd!Trecho = rsclone!Trecho
    bd!Placa = rsclone!Placa
    bd!Proprietario = rsclone!Proprietario
    bd!ValorMensal = rsclone!ValorMensal
    bd!DiasUteis = rsclone!DiasUteis
    bd!ValorDiaria = rsclone!ValorDiaria
    bd!TipoAgregado = rsclone!TipoAgregado
    ...

    Veja se o controlo está no formulário ou no sub-formulário


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    EvandoNunes
    EvandoNunes
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 45
    Registrado : 24/01/2012

    [Resolvido]Verificar duplicidade - Utilizando como critério vários campos!! Empty Re: [Resolvido]Verificar duplicidade - Utilizando como critério vários campos!!

    Mensagem  EvandoNunes 5/9/2012, 20:11

    Usando um pouco de cada um, cheguei a este código, onde decide por usar somente duas variáveis para comparar os registros!

    Está funcionando uma blz! porem notei que ao limpar a base e tentar lançar os 1° registros o código não funciona, ele não deixa gravar os dados quando a base está limpa, indicando "NENHUM REGISTRO ATUAL".

    Dim rst As Recordset
    Set rst = CurrentDb.OpenRecordset("SELECT * FROM tbl_Controle")

    If rst![Regional] = Forms!frm_AddRegional_Compactador!Regional.Value And rst![Data_Diaria] = Forms!frm_AddRegional_Compactador!Data_Diaria Then
    If MsgBox("JÁ FORAM LANÇADAS DIÁRIAS PARA ESTÁ REGIONAL NESTA DATA..." & vbCrLf & _
    vbCrLf & "DESEJA RELANÇAR ESTES TRECHOS NOVAMENTE? ", vbYesNo, "ATENÇÃO.") = vbYes Then

    If MsgBox("CONFIRMA ADIÇÃO DOS TRECHOS?", vbYesNo, "ADIÇÃO DE TRECHOS.") = vbYes Then
    Set rsclone = Me.RecordsetClone
    Dim bd As DAO.Recordset
    Set bd = CurrentDb.OpenRecordset("tbl_Controle")
    With frm_AddRegional_Compactador
    Do While Not rsclone.EOF
    bd.AddNew
    bd!Regional = rsclone!Regional
    bd!Trecho = rsclone!Trecho
    bd!Placa = rsclone!Placa
    bd!Proprietario = rsclone!Proprietario
    bd!ValorMensal = rsclone!ValorMensal
    bd!DiasUteis = rsclone!DiasUteis
    bd!ValorDiaria = rsclone!ValorDiaria
    bd!TipoAgregado = rsclone!TipoAgregado
    bd!Data_Diaria = Forms!frm_AddRegional_Compactador!Data_Diaria
    bd!IDUsuario = Forms!frm_AddRegional_Compactador!Usuario
    bd.Update
    rsclone.MoveNext
    Loop
    Set bd = Nothing
    End With
    MsgBox "DIARIAS ADICIONADAS COM SUCESSO!", vbInformation, "ATENÇÃO."
    Forms!frm_ControleGeral_Compactador.Refresh
    DoCmd.Close
    Else
    MsgBox "AÇÃO CANCELADA!", vbInformation, "ATENÇÃO."
    End If
    Else
    DoCmd.Close
    End If
    End If
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8449
    Registrado : 05/11/2009

    [Resolvido]Verificar duplicidade - Utilizando como critério vários campos!! Empty Re: [Resolvido]Verificar duplicidade - Utilizando como critério vários campos!!

    Mensagem  Alexandre Neves 5/9/2012, 20:29

    Não estudei bem o caso, mas faz-me espécie algum código


    Dim rst As Recordset
    Set rst = CurrentDb.OpenRecordset("SELECT * FROM tbl_Controle")

    If rst![Regional] = Forms!frm_AddRegional_Compactador!Regional.Value And rst![Data_Diaria] = Forms!frm_AddRegional_Compactador!Data_Diaria Then
    If MsgBox("JÁ FORAM LANÇADAS DIÁRIAS PARA ESTÁ REGIONAL NESTA DATA..." & vbCrLf & _
    vbCrLf & "DESEJA RELANÇAR ESTES TRECHOS NOVAMENTE? ", vbYesNo, "ATENÇÃO.") = vbYes Then

    If MsgBox("CONFIRMA ADIÇÃO DOS TRECHOS?", vbYesNo, "ADIÇÃO DE TRECHOS.") = vbYes Then
    Set rsclone = Me.RecordsetClone
    Dim bd As DAO.Recordset
    Set bd = CurrentDb.OpenRecordset("tbl_Controle")
    With frm_AddRegional_Compactador
    Do While Not rsclone.EOF
    bd.AddNew
    bd!Regional = rsclone!Regional
    bd!Trecho = rsclone!Trecho
    bd!Placa = rsclone!Placa
    bd!Proprietario = rsclone!Proprietario
    bd!ValorMensal = rsclone!ValorMensal
    bd!DiasUteis = rsclone!DiasUteis
    bd!ValorDiaria = rsclone!ValorDiaria
    bd!TipoAgregado = rsclone!TipoAgregado
    bd!Data_Diaria = Forms!frm_AddRegional_Compactador!Data_Diaria
    bd!IDUsuario = Forms!frm_AddRegional_Compactador!Usuario
    bd.Update
    rsclone.MoveNext
    Loop
    Set bd = Nothing
    End With
    MsgBox "DIARIAS ADICIONADAS COM SUCESSO!", vbInformation, "ATENÇÃO."
    Forms!frm_ControleGeral_Compactador.Refresh
    DoCmd.Close
    Else
    MsgBox "AÇÃO CANCELADA!", vbInformation, "ATENÇÃO."
    End If
    Else
    DoCmd.Close
    End If
    End If

    A estrutura do código apresentado é:
    - verifica se o 1º registo da tabela tem dados iguais dos 2 campos do formulário enunciados
    (porquê só verificar o 1º registo?)
    - se coincidir, informa que já está lançado e pergunta se quer relançar
    (e se não coincidir?)
    - se disser que quer relançar, ele pede confirmação para adicionar registos
    (então a pergunta anterior não chegava?)
    - confirmar, ele adiciona quantos registos já existem no formulário
    (é isto que pretende?)


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    EvandoNunes
    EvandoNunes
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 45
    Registrado : 24/01/2012

    [Resolvido]Verificar duplicidade - Utilizando como critério vários campos!! Empty Re: [Resolvido]Verificar duplicidade - Utilizando como critério vários campos!!

    Mensagem  EvandoNunes 5/9/2012, 20:51

    Boa tarde Alexandre!

    Em relação a suas perguntas:

    - verifica se o 1º registo da tabela tem dados iguais dos 2 campos do formulário enunciados
    (porquê só verificar o 1º registo?)
    R - Na realidade terei vários registros da mesma Regional divididos em datas, ele deveria fazer a checagem em todos os registros da tabela (Não sei como fazer)

    - se coincidir, informa que já está lançado e pergunta se quer relançar
    (e se não coincidir?)
    R - Se não considir ele terá que confirmar o lançamento e gravar na base

    - se disser que quer relançar, ele pede confirmação para adicionar registos
    (então a pergunta anterior não chegava?)
    R - A intenção é evitar erros por parte do usuário

    - confirmar, ele adiciona quantos registos já existem no formulário
    (é isto que pretende?)
    R - Ao preencher o subformulario com as informações da regional, ele deve gravar todos os trechos na tabela.
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8449
    Registrado : 05/11/2009

    [Resolvido]Verificar duplicidade - Utilizando como critério vários campos!! Empty Re: [Resolvido]Verificar duplicidade - Utilizando como critério vários campos!!

    Mensagem  Alexandre Neves 5/9/2012, 21:42

    Experimente
    Código:
    Dim rst As Recordset
    Dim rs As DAO.Recordset
    Set rst = CurrentDb.OpenRecordset("SELECT * FROM tbl_Controle")

    rst.findfirst "Regional='" & Forms!frm_AddRegional_Compactador!Regional & "' And Trecho='" & Forms!frm_AddRegional_Compactador!Trecho & "' And Data_Diaria=#" & Forms!frm_AddRegional_Compactador!Data_Diaria & "#" [color=green]'veja se precisa alterar tipos de dados ou formatar a data[/color]

    If rst.nomatch Then
      Set rsclone = Me.RecordsetClone
      Set rs = CurrentDb.OpenRecordset("tbl_Controle")
      With frm_AddRegional_Compactador
      Do While Not rsclone.EOF
        rs.AddNew
        rs!Regional = rsclone!Regional
        rs!Trecho = rsclone!Trecho
        rs!Placa = rsclone!Placa
        rs!Proprietario = rsclone!Proprietario
        rs!ValorMensal = rsclone!ValorMensal
        rs!DiasUteis = rsclone!DiasUteis
        rs!ValorDiaria = rsclone!ValorDiaria
        rs!TipoAgregado = rsclone!TipoAgregado
        rs!Data_Diaria = Forms!frm_AddRegional_Compactador!Data_Diaria
        rs!IDUsuario = Forms!frm_AddRegional_Compactador!Usuario
        rs.Update
        rsclone.MoveNext
      Loop
      Set rs = Nothing
      End With
      MsgBox "DIARIAS ADICIONADAS COM SUCESSO!", vbInformation, "ATENÇÃO."
      Forms!frm_ControleGeral_Compactador.Refresh
      DoCmd.Close
    else
      If MsgBox("JÁ FORAM LANÇADAS DIÁRIAS PARA ESTÁ REGIONAL NESTA DATA..." & vbCrLf & _ vbCrLf & "DESEJA RELANÇAR ESTES TRECHOS NOVAMENTE? ", vbYesNo, "ATENÇÃO.") = vbYes Then
        If MsgBox("CONFIRMA ADIÇÃO DOS TRECHOS?", vbYesNo, "ADIÇÃO DE TRECHOS.") = vbYes Then
          Set rsclone = Me.RecordsetClone
          Set rs = CurrentDb.OpenRecordset("tbl_Controle")
          With frm_AddRegional_Compactador
          Do While Not rsclone.EOF
            rs.AddNew
            rs!Regional = rsclone!Regional
            rs!Trecho = rsclone!Trecho
            rs!Placa = rsclone!Placa
            rs!Proprietario = rsclone!Proprietario
            rs!ValorMensal = rsclone!ValorMensal
            rs!DiasUteis = rsclone!DiasUteis
            rs!ValorDiaria = rsclone!ValorDiaria
            rs!TipoAgregado = rsclone!TipoAgregado
            rs!Data_Diaria = Forms!frm_AddRegional_Compactador!Data_Diaria
            rs!IDUsuario = Forms!frm_AddRegional_Compactador!Usuario
            rs.Update
            rsclone.MoveNext
          Loop
          Set rs = Nothing
          End With
          MsgBox "DIARIAS ADICIONADAS COM SUCESSO!", vbInformation, "ATENÇÃO."
          Forms!frm_ControleGeral_Compactador.Refresh
          DoCmd.Close
        Else
          MsgBox "AÇÃO CANCELADA!", vbInformation, "ATENÇÃO."
        End If
      Else
        DoCmd.Close
      End If
    End If


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    EvandoNunes
    EvandoNunes
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 45
    Registrado : 24/01/2012

    [Resolvido]Verificar duplicidade - Utilizando como critério vários campos!! Empty Re: [Resolvido]Verificar duplicidade - Utilizando como critério vários campos!!

    Mensagem  EvandoNunes 10/9/2012, 20:46

    Resolvido!!!!

    Boa tarde! Consegui resolver o problema com o velho e bom Dlookup, adicionando 3 critérios!

    Vejam o código!

    Dim rst As Recordset
    Set rst = CurrentDb.OpenRecordset("SELECT * FROM tbl_Controle")
    On Error GoTo Erro_TrataErro

    If (Not IsNull(DLookup("[Regional]", "tbl_Controle", _
    "[Regional] & [Data_Diaria] & [Frequencia] LIKE'" & Me!Regional & Me!Data_Diaria & Me!Frequencia & "'"))) Then

    If MsgBox("JÁ FORAM LANÇADAS DIÁRIAS PARA ESTÁ REGIONAL NESTA DATA COM ÉSSA FREQUÊNCIA..." & vbCrLf & _
    vbCrLf & "DESEJA RELANÇAR ESTES TRECHOS NOVAMENTE? ", vbYesNo, "ATENÇÃO.") = vbYes Then
    Erro_TrataErro:
    If MsgBox("CONFIRMA ADIÇÃO DOS TRECHOS?", vbYesNo, "ADIÇÃO DE TRECHOS.") = vbYes Then
    Set rsclone = Me.RecordsetClone
    Dim bd As DAO.Recordset
    Set bd = CurrentDb.OpenRecordset("tbl_Controle")
    With frm_AddRegional_Compactador
    Do While Not rsclone.EOF
    bd.AddNew
    bd!Regional = rsclone!Regional
    bd!Trecho = rsclone!Trecho
    bd!Placa = rsclone!Placa
    bd!Proprietario = rsclone!Proprietario
    bd!ValorMensal = rsclone!ValorMensal
    bd!DiasUteis = rsclone!DiasUteis
    bd!ValorDiaria = rsclone!ValorDiaria
    bd!TipoAgregado = rsclone!TipoAgregado
    bd!Data_Diaria = Forms!frm_AddRegional_Compactador!Data_Diaria
    bd!Frequencia = rsclone!Frequencia
    bd!IDUsuario = Forms!frm_AddRegional_Compactador!Usuario
    bd.Update
    rsclone.MoveNext
    Loop
    Set bd = Nothing
    End With
    MsgBox "DIARIAS ADICIONADAS COM SUCESSO!", vbInformation, "ATENÇÃO."
    Forms!frm_ControleGeral_Compactador.Refresh
    DoCmd.Close
    Else
    MsgBox "AÇÃO CANCELADA!", vbInformation, "ATENÇÃO."
    End If
    Else
    DoCmd.Close
    End If
    Else
    If MsgBox("CONFIRMA ADIÇÃO DOS TRECHOS?", vbYesNo, "ADIÇÃO DE TRECHOS.") = vbYes Then
    Set rsclone = Me.RecordsetClone
    Set bd = CurrentDb.OpenRecordset("tbl_Controle")
    With frm_AddRegional_Compactador
    Do While Not rsclone.EOF
    bd.AddNew
    bd!Regional = rsclone!Regional
    bd!Trecho = rsclone!Trecho
    bd!Placa = rsclone!Placa
    bd!Proprietario = rsclone!Proprietario
    bd!ValorMensal = rsclone!ValorMensal
    bd!DiasUteis = rsclone!DiasUteis
    bd!ValorDiaria = rsclone!ValorDiaria
    bd!TipoAgregado = rsclone!TipoAgregado
    bd!Data_Diaria = Forms!frm_AddRegional_Compactador!Data_Diaria
    bd!Frequencia = rsclone!Frequencia
    bd!IDUsuario = Forms!frm_AddRegional_Compactador!Usuario
    bd.Update
    rsclone.MoveNext
    Loop
    Set bd = Nothing
    End With
    MsgBox "DIARIAS ADICIONADAS COM SUCESSO!", vbInformation, "ATENÇÃO."
    Forms!frm_ControleGeral_Compactador.Refresh
    DoCmd.Close
    Else
    MsgBox "AÇÃO CANCELADA!", vbInformation, "ATENÇÃO."
    End If
    End If

    Obrigado a todos pela ajuda!!!

    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8449
    Registrado : 05/11/2009

    [Resolvido]Verificar duplicidade - Utilizando como critério vários campos!! Empty Re: [Resolvido]Verificar duplicidade - Utilizando como critério vários campos!!

    Mensagem  Alexandre Neves 10/9/2012, 21:12

    Boa noite, Evando
    Sempre que resolver algum assunto, marque "Resolvido"
    [Resolvido]Verificar duplicidade - Utilizando como critério vários campos!! MaximoAccess%20ResolvidoMarcado
    Nesta marquei eu


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    EvandoNunes
    EvandoNunes
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 45
    Registrado : 24/01/2012

    [Resolvido]Verificar duplicidade - Utilizando como critério vários campos!! Empty Re: [Resolvido]Verificar duplicidade - Utilizando como critério vários campos!!

    Mensagem  EvandoNunes 10/9/2012, 21:18

    Oh Alexandre! BLZ

    Me desculpe, agora sim!

    Conteúdo patrocinado


    [Resolvido]Verificar duplicidade - Utilizando como critério vários campos!! Empty Re: [Resolvido]Verificar duplicidade - Utilizando como critério vários campos!!

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 19/4/2024, 19:04