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


4 participantes

    [Resolvido]Dificuldades com DCount e DLookup

    SCHWERTNER
    SCHWERTNER
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 27
    Registrado : 07/08/2015

    [Resolvido]Dificuldades com DCount e DLookup Empty [Resolvido]Dificuldades com DCount e DLookup

    Mensagem  SCHWERTNER 27/7/2019, 14:39

    Parece simples, mas estou por desistir. Talvez alguém possa me ajudar.

    Tenho uma Tabela de CADASTRO de equipamentos, que contem um campo chamado NR_CAUTELA e outro MATRICULA. Tenho outra tabela EFETIVO com nomes de quem vai receber estes equipamentos, sendo o campo MATRICULA a chave. Relação entre tabelas feito corretamente.
    Esta pessoa pode receber vários equipamentos para sua cautela.. Quero que o bd me avise quando eu for cadastrar um equipamento, quando o Nº da Cautela for diferente da cadastrada pela primeira vez para a MATRICULA. Resumindo:

    TABELA CADASTRO
    - Campo EQUIPAMENTO
    - Campo NR_CAUTELA
    - Campo MATRICULA

    TABELA EFETIVO
    -Campo MATRICULA
    -Campo NOME

    PROBLEMA: NR_CAUTELA precisa ser sempre IGUAL para a mesma MATRICULA. Se o operador digitar um NR_CAUTELA diferente, fazer o BD me emitir um aviso.

    Já tentei com DCount e DLookup mas não consegui... Se alguém me puder ajudar ficaria grato.. Abraço


    marcos_novack
    marcos_novack
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 72
    Registrado : 19/01/2011

    [Resolvido]Dificuldades com DCount e DLookup Empty Re: [Resolvido]Dificuldades com DCount e DLookup

    Mensagem  marcos_novack 27/7/2019, 16:42

    Olá

    vamos tentar assim, veja se é isso que você quer;

    Código:
    Dim Contador
    Contador = DCount("MATRICULA", "TbCadastro", "NR_CAUTELA = '" & Me!NR_CAUTELA & "'" & " AND MATRICULA = '" & Me.MATRICULA & "'" & " AND EQUIPAMENTO = '" & Me.EQUIPAMENTO & "'")
        
            If Contador = 0 Then
            
            'SE NÃO TIVER UM REGISTRO COM NR_CAUTELA E MATRICULA E EQUIPAMENTO IGUAL CONTINUA deixa salvar
            
            Else
                'SE TIVER REGISTRO COM AS 3 CONDIÇÕES ENTÃO EMITE um ALERTA!

                  Dim seq As String, k
            
                  seq = "EQUIPAMENTO,MATRICLA,NR_CAUTELA"
                  seq = Dlookup(seq, "TbCadastro", "NR_CAUTELA = '" & Me!NR_CAUTELA & "'" & " AND MATRICULA = '" & Me.MATRICULA & "'" & " AND EQUIPAMENTO = '" & Me.EQUIPAMENTO & "'")
                    k = Split(seq, "#")
                
                    If MsgBox("Este cadastro já existe" & vbCrLf & "MATRICULA: " & K(1) & _
                                                          vbCrLf & "NR_CAULETA: " & K(2) & _
                                                          vbCrLf & "EQUIPAMENTO: " & k(0) & _
                                                          vbCrLf & "Deseja continuar?", vbYesNo, "CADASTRO DUPLICADO") = vbYes Then
                                                      
                                                            End If
             End if

    'observação: pode usar só o Dlookup fazer uma viagem só a tabela, testar as 3 condições, coloquei os dois métodos afim.
    SCHWERTNER
    SCHWERTNER
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 27
    Registrado : 07/08/2015

    [Resolvido]Dificuldades com DCount e DLookup Empty VOU TESTAR

    Mensagem  SCHWERTNER 27/7/2019, 20:23

    Obrigado.. Vou testar e postar o resultado... Abraço
    SCHWERTNER
    SCHWERTNER
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 27
    Registrado : 07/08/2015

    [Resolvido]Dificuldades com DCount e DLookup Empty Deu erro

    Mensagem  SCHWERTNER 27/7/2019, 20:56

    Olá Marcos.. Agradecido novamente.
    Estou em fase terminal de um sistema para a PM do RS que é um tanto "sigiloso", motivo pelo qual não informei os nomes corretos dos campos, pelo qual também peço escusas.
    Abaixo estão os nomes corretos e o erro que se apresentou foi na saída do campo "Combinação100" que é o COD_EFETIVO
    A mensagem diz: 'Erro em tempo de execução 3464' Tipo de dados incompatível na expressão de critério. O erro é na Linha 'Contador='Segue o código teu que adaptei.

    Private Sub Combinação100_Exit(Cancel As Integer)
    Dim Contador
    Contador = DCount("COD_EFETIVO", "CADASTRO_ARMAS", "NR_CAUTELA = '" & Me!NR_CAUTELA & "'" & " AND COD_EFETIVO = '" & Me.COD_EFETIVO & "'" & " AND COD_CAD_ARM = '" & Me.COD_CAD_ARM & "'")

    If Contador = 0 Then

    'SE NÃO TIVER UM REGISTRO COM NR_CAUTELA E MATRICULA E EQUIPAMENTO IGUAL CONTINUA deixa salvar

    Else
    'SE TIVER REGISTRO COM AS 3 CONDIÇÕES ENTÃO EMITE um ALERTA!

    Dim seq As String, k

    seq = "COD_CAD_ARM,COD_EFETIVO,NR_CAUTELA"
    seq = DLookup(seq, "CADASTRO_ARMAS", "NR_CAUTELA = '" & Me!NR_CAUTELA & "'" & " AND COD_EFETIVO = '" & Me.COD_EFETIVO & "'" & " AND COD_CAD_ARM = '" & Me.COD_CAD_ARM & "'")
    k = Split(seq, "#")

    If MsgBox("Este cadastro já existe" & vbCrLf & "COD_EFETIVO: " & k(1) & _
    vbCrLf & "NR_CAULETA: " & k(2) & _
    vbCrLf & "COD_CAD_ARM: " & k(0) & _
    vbCrLf & "Deseja continuar?", vbYesNo, "CADASTRO DUPLICADO") = vbYes Then

    End If
    End If
    End Sub


    Explicando um pouco mais, o COD_CAD_ARM é o código do material e campos NrR_CAUTELA e o COD_EFETIVO pertencem todos à tabela CADASTRO_ARMAS.
    O COD_EFETIVO pode receber até dois Equipamentos com o Nr da mesma Cautela. Este procedimento já fiz e avisa quando tentar cadastrar mais que dois equipamentos.
    O problema surge quando é feito o lançamento de um equipamento para o COD_EFETIVO mas para uma cautela diferente da que já foi cadastrada para este COD_EFETIVO.
    marcos_novack
    marcos_novack
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 72
    Registrado : 19/01/2011

    [Resolvido]Dificuldades com DCount e DLookup Empty Re: [Resolvido]Dificuldades com DCount e DLookup

    Mensagem  marcos_novack 27/7/2019, 22:58

    boa boite

    Sobre o erro, para valores do tipo número, não se põe os apóstrofes.
    SCHWERTNER
    SCHWERTNER
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 27
    Registrado : 07/08/2015

    [Resolvido]Dificuldades com DCount e DLookup Empty Ainda com erro

    Mensagem  SCHWERTNER 28/7/2019, 01:23

    Ainda ocorre erro. Tirei os apóstrofes e agora o erro diz: Erro de Sintaxe (vírgula) na expressão da consulta
    seq = "COD_CAD_ARM,COD_EFETIVO,NR_CAUTELA"

    Modifiquei e ficou assim. Gera erro.........

    Private Sub Combinação100_Exit(Cancel As Integer)

    Dim Contador
    Contador = DCount("COD_EFETIVO", "CADASTRO_ARMAS", "NR_CAUTELA = '" & Me!NR_CAUTELA & "'" & " AND COD_EFETIVO = " & Me.COD_EFETIVO & "" & " AND COD_CAD_ARM = " & Me.COD_CAD_ARM & "")

    If Contador = 0 Then

    'SE NÃO TIVER UM REGISTRO COM NR_CAUTELA E MATRICULA E EQUIPAMENTO IGUAL CONTINUA deixa salvar

    Else
    'SE TIVER REGISTRO COM AS 3 CONDIÇÕES ENTÃO EMITE um ALERTA!

    Dim seq As String, k

    seq = "COD_CAD_ARM,COD_EFETIVO,NR_CAUTELA"
    seq = DLookup(seq, "CADASTRO_ARMAS", "NR_CAUTELA = '" & Me!NR_CAUTELA & "'" & " AND COD_EFETIVO = " & Me.COD_EFETIVO & "" & " AND COD_CAD_ARM = " & Me.COD_CAD_ARM & "")
    k = Split(seq, "#")

    If MsgBox("Este cadastro já existe" & vbCrLf & "COD_EFETIVO: " & k(1) & _
    vbCrLf & "NR_CAULETA: " & k(2) & _
    vbCrLf & "COD_CAD_ARM: " & k(0) & _
    vbCrLf & "Deseja continuar?", vbYesNo, "CADASTRO DUPLICADO") = vbYes Then

    End If
    End If

    End Sub
    DamascenoJr.
    DamascenoJr.
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3845
    Registrado : 22/11/2016

    [Resolvido]Dificuldades com DCount e DLookup Empty Re: [Resolvido]Dificuldades com DCount e DLookup

    Mensagem  DamascenoJr. 28/7/2019, 02:17

    O colega sugeriu a dica 2 do artigo do link abaixo. Leia ela direto da fonte e veja o que pode estar errado
    usandoaccess.com.br/dicas/gerar-milhoes-registros-teste-access.asp?id=1


    .................................................................................
    Ajude-se a ser ajudado, anexe seu projeto.
    Sempre tente entender o código,
    não somente copie e cole.
    Positive as mensagens que achar útil clicando no '+' no canto superior direito delas.
    SCHWERTNER
    SCHWERTNER
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 27
    Registrado : 07/08/2015

    [Resolvido]Dificuldades com DCount e DLookup Empty hELP...

    Mensagem  SCHWERTNER 28/7/2019, 02:55

    testei, mas não funcionou.. Alguém conseguiria reproduzir aqui, conforme os exemplos postados, o meu código acima elencado??????
    Estou faz três horas tentando e não saio do chão... A BM do RS agradece...
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Dificuldades com DCount e DLookup Empty Re: [Resolvido]Dificuldades com DCount e DLookup

    Mensagem  Alexandre Neves 28/7/2019, 17:46

    Boa tarde,
    Respeite as regras.
    Escrever tudo em maiúsculas significa gritar. Adeqúe o que escreveu mal
    O título serve para resumir a dúvida, não para corpo de texto. Tratando-se da mesma dúvida mantêm-se o título

    Sobre a dúvida, não percebi que situações podem ocorrer que violem as regras de registo na tabela.
    Crie bd com dados de exemplo


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


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 27
    Registrado : 07/08/2015

    [Resolvido]Dificuldades com DCount e DLookup Empty Dificuldades com DCount e DLookup

    Mensagem  SCHWERTNER 28/7/2019, 19:33

    Me desculpe.. Não foi minha intenção ofender ninguém com as palavras maiúsculas. Escrevi elas somente para destacar os campos ou fazer entender os pontos mais cruciais da minha dificuldade. Quanto ao título da mensagem observarei atentamente. A humildade e o reconhecimento de erros engrandece o caráter da pessoa, e a busca do conhecimento por vezes esbarra em dificuldades. Por este motivo procuro o saber do conhecimento de quem o tem neste excelente e magnifico site.
    marcos_novack
    marcos_novack
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 72
    Registrado : 19/01/2011

    [Resolvido]Dificuldades com DCount e DLookup Empty Re: [Resolvido]Dificuldades com DCount e DLookup

    Mensagem  marcos_novack 29/7/2019, 23:47

    Boa Noite

    Monta um exemplo com as tabelas e o formulário posta aqui, vai ser mais fácil e rápido te ajudar.

    abraço.
    SCHWERTNER
    SCHWERTNER
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 27
    Registrado : 07/08/2015

    [Resolvido]Dificuldades com DCount e DLookup Empty Dificuldades com DCount e DLookup

    Mensagem  SCHWERTNER 30/7/2019, 03:56

    Obrigado Marcos.. Resolvi de outra forma.. Dei um número de cautela a cada militar e assim tudo fica vinculado à ele e ao número.. Abraço e obrigado pela atenção.

    Conteúdo patrocinado


    [Resolvido]Dificuldades com DCount e DLookup Empty Re: [Resolvido]Dificuldades com DCount e DLookup

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 22/11/2024, 12:23