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]Duplicação Não Autorizada Somente Quando Dois Campos estiverem repetindo

    lhfernandes
    lhfernandes
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 35
    Registrado : 12/01/2012

    [Resolvido]Duplicação Não Autorizada Somente Quando Dois Campos estiverem repetindo Empty Duplicação Não Autorizada Somente Quando Dois Campos estiverem repetindo

    Mensagem  lhfernandes 13/9/2012, 17:12

    Boa Tarde Amigos,
    Sou novato no Access e estou com um problema.

    Tenho um formulário que contem um subformulário onde são lançados dados dos funcionários, No formulário tem os dados do próprio funcionário, Nome, Matricula e Cargo e no subformulário contém os dados de movimentação de posto de trabalho, tipo Posto onde trabalha, Código do Posto, Matricula do Funcionário e Status dele no Posto.
    O que preciso é o seguinte:

    Quando se lança os dados preciso que no campo Status fique somente 1 "Ativo" e Inativo pode se ter vários.
    Só que se coloco Indexado Duplicação Não autorizada....só consigo colocar Status uma vez....e são vários funcionários que podem ter muitas mudanças de posto..tendo vários Inativos.

    o ideal seria que na hora do lançamento ele reconhecesse matricula, cod do posto e status "Ativo"....e não permitisse essa combinação.

    Bom, é isso.
    Leandro
    Leandro
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Duplicação Não Autorizada Somente Quando Dois Campos estiverem repetindo Empty Re: [Resolvido]Duplicação Não Autorizada Somente Quando Dois Campos estiverem repetindo

    Mensagem  Leandro 13/9/2012, 17:37

    Se eu entendi direito, você quer verificar três campos e se os três já existirem no form, impedir o lançamento, é isso?

    Se for, eu fiz isso num banco meu, usei a função Dcount (VBA).

    Agora para te ajudar mais precisamente, poste uma parte do seu banco, em access 2000.

    Abraço


    lhfernandes
    lhfernandes
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 35
    Registrado : 12/01/2012

    [Resolvido]Duplicação Não Autorizada Somente Quando Dois Campos estiverem repetindo Empty Re: [Resolvido]Duplicação Não Autorizada Somente Quando Dois Campos estiverem repetindo

    Mensagem  lhfernandes 13/9/2012, 18:17

    Boa tarde Leandro,
    Sim é isso mesmo que preciso.
    Ok...vou converter e postar aqui.

    Obrigado
    lhfernandes
    lhfernandes
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 35
    Registrado : 12/01/2012

    [Resolvido]Duplicação Não Autorizada Somente Quando Dois Campos estiverem repetindo Empty Re: [Resolvido]Duplicação Não Autorizada Somente Quando Dois Campos estiverem repetindo

    Mensagem  lhfernandes 13/9/2012, 19:19

    Bom Leandro,
    Tá ai o Banco de dados,
    Desde já muito Obrigado pela atenção imediata.
    Anexos
    [Resolvido]Duplicação Não Autorizada Somente Quando Dois Campos estiverem repetindo AttachmentControle de Lotação.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (158 Kb) Baixado 16 vez(es)
    lhfernandes
    lhfernandes
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 35
    Registrado : 12/01/2012

    [Resolvido]Duplicação Não Autorizada Somente Quando Dois Campos estiverem repetindo Empty Re: [Resolvido]Duplicação Não Autorizada Somente Quando Dois Campos estiverem repetindo

    Mensagem  lhfernandes 14/9/2012, 14:34

    Bom dia,
    Quando o Leandro me falou que havia usado a função Dcount (VBA) no sistema dele eu fui pesquisar, pois não manjo muito, ai testei isso no subformulário:

    Private Sub Status_AfterUpdate()
    If DCount("[Matricula] & [cod] & [Status]", "tb_lotacao", "Status & Matricula & cod = '" & Me!Status & matricula & cod & "'") > 0 Then
    MsgBox "O Funcionário já está Ativo em outro Posto."
    Me.Undo
    Cancel = True
    End If
    End Sub


    Em partes deu certos, o único problema, é que preciso que ele só me impeça a mudança se o Status estiver como Ativo e permita a mudança quando Inativo.

    Obrigado.
    lhfernandes
    lhfernandes
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 35
    Registrado : 12/01/2012

    [Resolvido]Duplicação Não Autorizada Somente Quando Dois Campos estiverem repetindo Empty Re: [Resolvido]Duplicação Não Autorizada Somente Quando Dois Campos estiverem repetindo

    Mensagem  lhfernandes 17/9/2012, 15:11

    Bom dia Leandro,
    Então, explicando:

    O formulário - frm_movimentaca_lotacao é onde lanço a movimentação dos funcionários nos postos.

    É um formulário que tem um subformulário e no sub é onde fica a questão.
    Preciso que fique um histórico dos postos que o funcionário passa e quando ele muda de posto eu mudo o "Status" dele naquela posto para "Inativo".
    Então posso ter vários "Inativos" para um mesmo funcionário e somente um "Ativo".
    O que preciso é exatamente isso, que quando forem lançar uma mudança de posto, não permita que o usuário deixa mais do que um "Ativo".

    Bom....é isso.
    Obrigado Leandro.
    Leandro
    Leandro
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Duplicação Não Autorizada Somente Quando Dois Campos estiverem repetindo Empty Re: [Resolvido]Duplicação Não Autorizada Somente Quando Dois Campos estiverem repetindo

    Mensagem  Leandro 17/9/2012, 17:44

    Fernandes veja se é isso:


    lhfernandes
    lhfernandes
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 35
    Registrado : 12/01/2012

    [Resolvido]Duplicação Não Autorizada Somente Quando Dois Campos estiverem repetindo Empty Re: [Resolvido]Duplicação Não Autorizada Somente Quando Dois Campos estiverem repetindo

    Mensagem  lhfernandes 17/9/2012, 18:36

    Leandro,
    Obrigado,
    Mas ele está permitindo que eu adicione tanto Inativos, como também Ativos até três registros e depois apresenta a mensagem.
    Eu precisava que ele permitisse qualquer quantidade de Inativos e somente 1 Ativo.

    Obrigado.
    lhfernandes
    lhfernandes
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 35
    Registrado : 12/01/2012

    [Resolvido]Duplicação Não Autorizada Somente Quando Dois Campos estiverem repetindo Empty Re: [Resolvido]Duplicação Não Autorizada Somente Quando Dois Campos estiverem repetindo

    Mensagem  lhfernandes 17/9/2012, 19:04

    Leandro, eu tava analisando aqui e na verdade não preciso que sejam os três campos, na verdade dois já resolvem.

    Matricula e Status.

    Seria isso.
    Quando juntar Matricula + Status e o status for Ativo, permitir só um registro por funcionário.
    Mas quando for Inativo, pode-se adicionar quantos registros quiser.

    Tentei isso mas não deu certo.

    Private Sub Combinação45_Exit(Cancel As Integer)
    If DCount("*", "tb_lotacao", "Matricula='" & matricula & "' and Status='Ativo'") > 0 Then
    MsgBox "O Funcionário já está Ativo em outro Posto." & vbCrLf & "Altere a opção duplicada para depois" & vbCrLf & "se mover para outro registro." & vbCrLf & "Obrigado", vbCritical
    Status = ""
    DoCmd.CancelEvent
    End If
    End Sub

    Obrigado,
    Leandro
    Leandro
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Duplicação Não Autorizada Somente Quando Dois Campos estiverem repetindo Empty Re: [Resolvido]Duplicação Não Autorizada Somente Quando Dois Campos estiverem repetindo

    Mensagem  Leandro 17/9/2012, 19:13

    Então use este código no VBA:
    Private Sub Combinação45_Exit(Cancel As Integer)
    If Me.Status = "ATIVO" And DCount("[Matricula] & [cod] & [Status]", "tb_lotacao", "Status & Matricula & cod = '" & Me!Status & matricula & cod & "'") > 0 Then
    MsgBox "O Funcionário já está Ativo em outro Posto."
    DoCmd.CancelEvent
    End If
    End Sub

    Não é pressão, mas aqui funcionou certinho. Razz

    Abraço


    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Duplicação Não Autorizada Somente Quando Dois Campos estiverem repetindo Empty Re: [Resolvido]Duplicação Não Autorizada Somente Quando Dois Campos estiverem repetindo

    Mensagem  Alexandre Neves 17/9/2012, 19:22

    fernandes,
    Se ainda não leu as regras do fórum, leia-as.
    Solucionou (aqui)) ou não?


    .................................................................................
    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
    lhfernandes
    lhfernandes
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 35
    Registrado : 12/01/2012

    [Resolvido]Duplicação Não Autorizada Somente Quando Dois Campos estiverem repetindo Empty Re: [Resolvido]Duplicação Não Autorizada Somente Quando Dois Campos estiverem repetindo

    Mensagem  lhfernandes 17/9/2012, 19:55

    Boa tarde Alexandre,
    Me desculpe, mas li sim as regras.
    Só estou meio desesperado.
    O Leandro estava me ajudando aqui.


    E não, não resolveu no outro fórum.
    Eu achei que podia pedir ajuda em dois fóruns pra resolver esta questão.
    Gostaria de me desculpar com os dois se eu não podia fazer isso....realmente me perdoem.

    Mas na verdade ainda continua sem solução...
    Meu office é 2010 será esse o problema?

    Obrigado e desculpe mais uma vez.
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Duplicação Não Autorizada Somente Quando Dois Campos estiverem repetindo Empty Re: [Resolvido]Duplicação Não Autorizada Somente Quando Dois Campos estiverem repetindo

    Mensagem  Alexandre Neves 17/9/2012, 20:01

    fernandes,
    Pode pedir ajuda nos dois fóruns, por vezes é melhor porque os membros não são os mesmos. O que me custa é tentar ajudar e andar a ler mensagens repetidas ou deixar de acompanhar o assunto num dos fóruns e~, isso, não é de bom membro do fórum porque todos os membros devem tentar ajudar dentro das suas possibilidades. Depois, eu recebo informação num fórum como o assunto está resolvido e, no outro fórum, informação a dizer que não. Só uma está certa. Qual? está resolvido e anda a cansar os colegas, ou está por resolver e anda a brincar com outros. Sei lá? eu não quero fazer juízos sem apurar a verdade e foi o que fiz.
    Já viu que, se não houvesse este equívoco, o tempo que estou a escrever, estava a fazer outras coisas necessárias?
    Informe, então, qual é o problema


    .................................................................................
    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
    lhfernandes
    lhfernandes
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 35
    Registrado : 12/01/2012

    [Resolvido]Duplicação Não Autorizada Somente Quando Dois Campos estiverem repetindo Empty Re: [Resolvido]Duplicação Não Autorizada Somente Quando Dois Campos estiverem repetindo

    Mensagem  lhfernandes 17/9/2012, 20:18

    Alexandre,
    com o Último código que você me mandou no outro fórum te mandei a seguinte resposta lá:

    Resposta - Alexandre, realmente no bd que te mandei ainda não tinha nomeado o controle.
    Mas fiz o teste aqui e agora ele só aceita cadastrar Inativos....não aceita cadastrar nenhum Ativo.
    O código -

    Private Sub Combinação45_Exit(Cancel As Integer)
    If DCount("*", "tb_lotacao", "Matricula='" & matricula & "' and Status='Ativo'") > 0 Then
    MsgBox "O Funcionário já está Ativo em outro Posto."
    Status = ""
    DoCmd.CancelEvent
    End If
    End Sub

    E com o que o Leandro me mandou-

    Private Sub Combinação45_Exit(Cancel As Integer)
    If Me.Status = "ATIVO" And DCount("[Matricula] & [cod] & [Status]", "tb_lotacao", "Status & Matricula & cod = '" & Me!Status & matricula & cod & "'") > 0 Then
    MsgBox "O Funcionário já está Ativo em outro Posto."
    DoCmd.CancelEvent
    End If
    End Sub

    Quando lanço 1 Ativo no funcionário já da o alerta.

    Obrigado
    E desculpe.
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Duplicação Não Autorizada Somente Quando Dois Campos estiverem repetindo Empty Re: [Resolvido]Duplicação Não Autorizada Somente Quando Dois Campos estiverem repetindo

    Mensagem  Alexandre Neves 17/9/2012, 20:21

    Agora baralhou ao colocar os dois códigos. Com qual é não funciona?
    Com este?

    Private Sub Combinação45_Exit(Cancel As Integer)
    If DCount("*", "tb_lotacao", "Matricula='" & matricula & "' and Status='Ativo'") > 0 Then
    MsgBox "O Funcionário já está Ativo em outro Posto."
    Status = ""
    DoCmd.CancelEvent
    End If
    End Sub


    .................................................................................
    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
    lhfernandes
    lhfernandes
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 35
    Registrado : 12/01/2012

    [Resolvido]Duplicação Não Autorizada Somente Quando Dois Campos estiverem repetindo Empty Re: [Resolvido]Duplicação Não Autorizada Somente Quando Dois Campos estiverem repetindo

    Mensagem  lhfernandes 17/9/2012, 20:30

    Tudo bem,
    Me desculpe denovo.

    Certo, este é o que você me mandou.

    Private Sub Combinação45_Exit(Cancel As Integer)
    If DCount("*", "tb_lotacao", "Matricula='" & matricula & "' and Status='Ativo'") > 0 Then
    MsgBox "O Funcionário já está Ativo em outro Posto."
    Status = ""
    DoCmd.CancelEvent
    End If
    End Sub

    Mas fiz o teste aqui e agora ele só aceita cadastrar Inativos....mas não aceita cadastrar nenhum Ativo.

    Obrigado.
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Duplicação Não Autorizada Somente Quando Dois Campos estiverem repetindo Empty Re: [Resolvido]Duplicação Não Autorizada Somente Quando Dois Campos estiverem repetindo

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

    Mas não era esse o propósito da código?
    Explique com detalhe o 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
    lhfernandes
    lhfernandes
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 35
    Registrado : 12/01/2012

    [Resolvido]Duplicação Não Autorizada Somente Quando Dois Campos estiverem repetindo Empty Re: [Resolvido]Duplicação Não Autorizada Somente Quando Dois Campos estiverem repetindo

    Mensagem  lhfernandes 18/9/2012, 11:18

    Bom dia,

    O propósito do código....é o seguinte:

    Quando eu lançar mudança de posto para um funcionário, preciso que o código:

    1 - Permita o lançamento somente de 1 Ativo, mas preciso de 1 Ativo, que é o posto onde o funcionário está atualmente.
    2 - E preciso que o código permita o lançamento de quanto Inativos forem necessários.

    Assim, quando mudo o funcionário de posto, eu Inativo o Posto anterior que vira histórico e lanço um novo posto que será o Posto Ativo.

    Obrigado
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Duplicação Não Autorizada Somente Quando Dois Campos estiverem repetindo Empty Re: [Resolvido]Duplicação Não Autorizada Somente Quando Dois Campos estiverem repetindo

    Mensagem  Alexandre Neves 18/9/2012, 12:09

    Bom dia,
    Utilize
    If Status = "Ativo" And DCount("*", "tb_lotacao", "Matricula='" & matricula & "' and Status='Ativo'") > 0 Then
    MsgBox "O Funcionário já está Ativo em outro Posto."
    Status = ""
    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
    lhfernandes
    lhfernandes
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 35
    Registrado : 12/01/2012

    [Resolvido]Duplicação Não Autorizada Somente Quando Dois Campos estiverem repetindo Empty Re: [Resolvido]Duplicação Não Autorizada Somente Quando Dois Campos estiverem repetindo

    Mensagem  lhfernandes 18/9/2012, 12:23

    Bom dia Alexandre.

    Show.... Funcionou.

    Só precisei trocar o "0" por "1" e Rodou.

    Assim:

    If Status = "Ativo" And DCount("*", "tb_lotacao", "Matricula='" & matricula & "' and Status='Ativo'") > 1 Then
    MsgBox "O Funcionário já está Ativo em outro Posto."
    Status = ""
    DoCmd.CancelEvent
    End If

    Alexandre, Muito obrigado e me desculpe pela confusão que causei
    Nas próximas farei corretamente.
    Obrigado mesmo.

    Leandro, obrigado também.

    Abraço.

    Conteúdo patrocinado


    [Resolvido]Duplicação Não Autorizada Somente Quando Dois Campos estiverem repetindo Empty Re: [Resolvido]Duplicação Não Autorizada Somente Quando Dois Campos estiverem repetindo

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 7/11/2024, 19:12