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


2 participantes

    [Resolvido]Duplicidade

    avatar
    lestatsjm
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 4
    Registrado : 11/07/2013

    [Resolvido]Duplicidade Empty [Resolvido]Duplicidade

    Mensagem  lestatsjm 11/7/2013, 19:11

    Pessoal, boa tarde!

    Preciso de uma grande ajuda de vocês.

    Tenho dentro de um formulário dois campos Data Inicial, que é digitado pelo usuário e Data Final que é gerado por um código VBA que criei. A minha dificuldade é, preciso encontrar entre essas duas datas (Data Inicial e Final), no momento em que clico no botão Salvar, que seja  especificado se há registros duplicados na Tabela (Não precisa dizer quais são), mas que seja permitido salvar esse Novo Registro, assim mesmo. Quero Somente um aviso.

    Por Exemplo

    Cadastrei a seguinte informação

    Turma xxxxxx
    Horário 08:00 as 12:00, 13:00 as 17:00 ou 17:00 as 21:00
    Dias de Aulas: Escolhido pelo usuário (Seg, Ter, Qua, Qui e Sex)
    Qtd de Aulas: 4
    Data Inicial: Digitado pelo Usuário
    Data Final: Gerado automaticamente pelo sistema

    Quando cadastrar a nova informação deve ser observado
    Se o Instrutor esta trabalhando no novo horário especificado, no novo dia da semana especificado, entre a data inicial e final.


    Alguém pode me ajudar.
    avatar
    Convidado
    Convidado


    [Resolvido]Duplicidade Empty Re: [Resolvido]Duplicidade

    Mensagem  Convidado 12/7/2013, 23:17

    Ajudaria se postasse um exemplo para que possamos ver isto pra ti.


    Cumprimentos.
    avatar
    lestatsjm
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 4
    Registrado : 11/07/2013

    [Resolvido]Duplicidade Empty Exemplo

    Mensagem  lestatsjm 15/7/2013, 13:53

    Piloto, bom dia!

    Escrevi o Código abaixo:

    Dim rst As DAO.Recordset
    Dim strCriteria As String
    strCriteria = "([Instrutor] = '" & Me.Instrutor & "') and ([Horário] = '" & Me.Horário & "') and ([txtDataInicial] = '" & Me.txtDataInicial & "') and ([txtDataFinal] = '" & Me.txtDataFinal & "')"
    Set rst = Me.RecordsetClone
    If rst.NoMatch Then
    Cancel = False
    Exit Sub
    Else
    If MsgBox("Já existe regência para o Professor no período indicado!" & Chr(10) + Chr(13) & "O registro será salvo!", vbOKOnly + vbInformation, "Sistema Morpheus - Duplicidade") = vbOKOnly Then
    Cancel = True
    Me.Undo
    Me.Bookmark = rst.Bookmark
    End If
    End If
    Set rst = Nothing
    End Sub


    O problema é que a msg aparece a qualquer momento, havendo ou não registros duplicados.

    Abs
    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]Duplicidade Empty Re: [Resolvido]Duplicidade

    Mensagem  Cláudio Más 15/7/2013, 14:29

    Você criou o filtro, mas não aplicou ao recordset.

    Tente assim:

    Dim rst As DAO.Recordset
    Dim rst2 As DAO.Recordset
    Dim strCriteria As String
    strCriteria = "([Instrutor] = '" & Me.Instrutor & "') and ([Horário] = '" & Me.Horário & "') and ([txtDataInicial] = '" & Me.txtDataInicial & "') and ([txtDataFinal] = '" & Me.txtDataFinal & "')"
    Set rst = Me.RecordsetClone
    rst.Filter = strCriteria
    Set rst2 = rst.OpenRecordset
    If rst2.EOF Then
    Cancel = False
    Exit Sub
    Else
    If MsgBox("Já existe regência para o Professor no período indicado!" & Chr(10) + Chr(13) & "O registro será salvo!", vbOKOnly + vbInformation, "Sistema Morpheus - Duplicidade") = vbOKOnly Then
    Cancel = True
    Me.Undo
    Me.Bookmark = rst.Bookmark
    End If
    End If
    Set rst = Nothing
    Set rst2 = Nothing
    End Sub
    avatar
    lestatsjm
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 4
    Registrado : 11/07/2013

    [Resolvido]Duplicidade Empty Re: [Resolvido]Duplicidade

    Mensagem  lestatsjm 15/7/2013, 14:42

    Amigo, Claudio!

    O Problema continua.

    Não consigo identificar minha falha.

    Obrigado e se puder continuar me ajudando agradeço.



    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]Duplicidade Empty Re: [Resolvido]Duplicidade

    Mensagem  Cláudio Más 15/7/2013, 14:47

    Testei com um critério simples, sobre um único campo.
    Provavelmente agora o erro está aqui:

    strCriteria = "([Instrutor] = '" & Me.Instrutor & "') and ([Horário] = '" & Me.Horário & "') and ([txtDataInicial] = '" & Me.txtDataInicial & "') and ([txtDataFinal] = '" & Me.txtDataFinal & "')"

    Eu precisaria de uma cópia do banco de dados para análise.

    Mas verifique o conteúdo da variável e poste aqui, por favor:

    MsgBox strCriteria

    Se possível, poste todo o código novamente, como está agora.
    avatar
    lestatsjm
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 4
    Registrado : 11/07/2013

    [Resolvido]Duplicidade Empty Re: [Resolvido]Duplicidade

    Mensagem  lestatsjm 15/7/2013, 15:08

    Claudio,

    Segue o Banco!

    O formulário é o Morpheus - Cadastro de Turmas.

    Quando clico em salvar (Lápis) ele deve observar se:

    O Instrutor xxx, está com o Horário xxx duplicado, nos DiasdeAulas Duplicado  entre txtDataInicial e txtDataFinal.

    Ou seja,

    Instrutor: André
    Horário: 08:00 as 12:00
    Dias de Aulas: Segundas-Feiras
    Data Inicial: 01/07/2013
    Data Final: 22/07/2013

    Se tentar cadastrar alguém nessas caracteristicas ele vai me avisar da duplicidade, mas, vai permitir salvar.

    mas se,

    Instrutor: André
    Horário: 08:00 as 12:00
    Dias de Aulas: Terças-Feiras
    Data Inicial: 02/07/2013
    Data Final: 23/07/2013

    Ele permite cadastrar sem avisos, pois o Dia de Aula é diferente.

    e se:

    Instrutor: André
    Horário: 13:00 as 17:00
    Dias de Aulas: Segundas-Feiras
    Data Inicial: 01/07/2013
    Data Final: 22/07/2013

    Ele permite cadastrar sem avisos, pois o Horário é diferente.

    Obrigado
    Anexos
    [Resolvido]Duplicidade AttachmentMorpheus.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (83 Kb) Baixado 9 vez(es)
    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]Duplicidade Empty Re: [Resolvido]Duplicidade

    Mensagem  Cláudio Más 15/7/2013, 15:45

    O banco não tem as alterações que mencionei na mensagem anterior.

    E ainda precisa de alterações no critério:

    Dim rst As DAO.Recordset
    Dim rst2 As DAO.Recordset
    Dim strCriteria As String
    strCriteria = "([Instrutor] = " & Me.Instrutor & ") and ([Horário] = " & Me.Horário & ") and (cstr([txtDataInicial]) = '" & Me.txtDataInicial & "')"
    Set rst = Me.RecordsetClone
    rst.Filter = strCriteria
    Set rst2 = rst.OpenRecordset
    If rst2.EOF Then
    Cancel = False
    Exit Sub
    Else
    If MsgBox("Já existe regência para o Professor no período indicado!" & Chr(10) + Chr(13) & "O registro será salvo!", vbOKOnly + vbInformation, "Sistema Morpheus - Duplicidade") = vbOKOnly Then
    Cancel = True
    Me.Undo
    Me.Bookmark = rst.Bookmark
    End If
    End If
    Set rst = Nothing

    E se deve permitir salvar mesmo com o aviso de duplicidade, pode remover as linhas:

    Cancel = True (que não faz efeito mesmo)
    Me.Undo
    Me.Bookmark = rst.Bookmark

    Ou melhor, retirar o If e ficar somente uma MsgBox:

    MsgBox("Já existe regência para o Professor no período indicado!" & Chr(10) + Chr(13) & "O registro será salvo!", vbOKOnly + vbInformation, "Sistema Morpheus - Duplicidade")
    avatar
    Convidado
    Convidado


    [Resolvido]Duplicidade Empty Re: [Resolvido]Duplicidade

    Mensagem  Convidado 17/7/2013, 17:45

    Boas Claudio, obrigado pela ajuda neste tópico, fiquei sem conexão por esses dias e não pude auxiliar.

    Cumprimentos.


    Última edição por PILOTO em 1/9/2013, 18:05, editado 1 vez(es) (Motivo da edição : Tópico dado como resolvido por falta de resposta)

    Conteúdo patrocinado


    [Resolvido]Duplicidade Empty Re: [Resolvido]Duplicidade

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 21/11/2024, 15:17