MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

Obrigado

Administração do MaximoAccess

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access

    [Resolvido]Verificar se registros já existem no banco - Dois critérios de tipos diferentes Dcount() e DLookup()

    Compartilhe

    byFonseca
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 4
    Registrado : 27/02/2018

    [Resolvido]Verificar se registros já existem no banco - Dois critérios de tipos diferentes Dcount() e DLookup()

    Mensagem  byFonseca em Ter 27 Mar 2018, 20:26

    Prezados, boa tarde.

    Depois de implementar algumas soluções indicadas em outros tópicos e não conseguir obter êxito na aplicação, recorro a vocês a fim de solucionar esse problema, o qual busco correção há alguns dias.

    Tenho um formulário chamado (frm_cadastro_disciplinas) com os seguintes campos principais (nome_disciplina) - tipo texto e (ch_disciplina) - tipo inteiro

    Considero uma disciplina já cadastrada no sistema se ela tiver o mesmo nome e a mesma carga horária. E é essa verificação que preciso fazer na tabela que armazena tais valores.

    Estrutura da tabela (tbl_disciplinas)
    cod_disciplina
    nome_disciplina
    ch_disciplina

    Já utilizei as funções Dcount() e DLoookup() para verificar a ocorrência dos valores no banco, mas sem sucesso (ou não identifica os nomes digitados como iguais ou apresenta erro de tipos incompatíveis.)

    If (Not IsNull(DLookup("[nome_disciplina]", "tbl_disciplinas", "[nome_disciplina] =' " & Me.nome_disciplina & "'" And "[ch_disciplina]" = Me.ch_disciplina))) Then
       MsgBox "Disciplina " & Me.nome_disciplina & " já cadastrada"
       nome_disciplina.SetFocus
       Me!nome_disciplina.Undo 'desfaz a digitação
    Else
       DoCmd.RunCommand acCmdSaveRecord



    OBS.: Outro detalhe é que mesmo apresentando erro de tipos incompatíveis erro 13, o registro é gravado do banco.


    Desde já agradeço a ajuda
    avatar
    formiga10x
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 779
    Registrado : 11/09/2013

    Re: [Resolvido]Verificar se registros já existem no banco - Dois critérios de tipos diferentes Dcount() e DLookup()

    Mensagem  formiga10x em Qua 28 Mar 2018, 02:26

    Tente...

    if dcount("nome_disciplina","tbl_disciplinas","nome_disciplina ='" & me.txtnomeDisciplina & "' And ch_disciplina =" & me.txtChDisciplina & "") then

    msgbox("Disciplina já cadastrada"),vbexclamation,"titulo"
    exit sub
    end if


    .................................................................................
    Abraço
    Formiga10x

    Sempre que possível poste o bd ou parte dele, com uma explicação bem clara e objetiva do que quer.
    “Um homem não está acabado quando enfrenta a derrota. Ele está acabado quando desiste - Richard Nixon”
    Formiga10x

    "Lembro do exato momento em que me dei conta que boa parte de minha vida foi dedicada a localizar erros em meus próprios programas."
    - Maurice Vicent Wilkes

    byFonseca
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 4
    Registrado : 27/02/2018

    Re: [Resolvido]Verificar se registros já existem no banco - Dois critérios de tipos diferentes Dcount() e DLookup()

    Mensagem  byFonseca em Qua 28 Mar 2018, 04:11

    Olá, [formiga10x]. Agradeço a resposta.

    Implementei o código informado, porém ele cadastra a disciplina sem criticar (mesmo o registro já existindo no banco)

    Preciso que ele identifique quando uma disciplina já estiver cadastrada (disciplina cadastrada = mesmo nome e mesma carga horária)

    Segue uma parte do banco que estou utilizando.
    Anexos
    CadastroDisciplina.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (155 Kb) Baixado 10 vez(es)
    avatar
    tauron
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 896
    Registrado : 07/12/2011

    Re: [Resolvido]Verificar se registros já existem no banco - Dois critérios de tipos diferentes Dcount() e DLookup()

    Mensagem  tauron em Qua 28 Mar 2018, 11:00

    tente assim:

    if dcount("nome_disciplina","tbl_disciplinas","nome_disciplina ='" & me.txtnomeDisciplina & "' And ch_disciplina =" & me.txtChDisciplina & "") > 0 then
    avatar
    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

    Re: [Resolvido]Verificar se registros já existem no banco - Dois critérios de tipos diferentes Dcount() e DLookup()

    Mensagem  Alexandre Neves em Qua 28 Mar 2018, 11:24

    Bom dia,
    Comece a noimear de forma normalizada, ajuda em várias situções (novo_cadastro podia ser BtnNovoCadastro)
    Retire o botão de adicionar ao cadastro
    No botão novo_cadastro, coloque
    Código:
    Private Sub novo_cadastro_Click()
        If DCount("nome_disciplina", "tbl_disciplinas", "nome_disciplina ='" & Me.txtnome_disciplina & "' And ch_disciplina=" & Me.txtch_disciplina & "") > 0 Then
            MsgBox ("Disciplina já cadastrada"), vbExclamation, "titulo"
            txtnome_disciplina.SetFocus
            Me!txtnome_disciplina.Undo 'desfaz a digitação
        Else
            DoCmd.GoToRecord , , acNewRec
        End If
        'cursor ativo no primeiro campo
        Me.txtnome_disciplina.SetFocus
    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

    byFonseca
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 4
    Registrado : 27/02/2018

    Re: [Resolvido]Verificar se registros já existem no banco - Dois critérios de tipos diferentes Dcount() e DLookup()

    Mensagem  byFonseca em Qua 28 Mar 2018, 14:18

    Colegas, tauron e Alexandre Neves.

    Fiz algumas adaptações e consegui deixar o código no botão salvar.
    Seguirei as dicas e orientações repassadas nas próximas postagens Smile

    Descobri o que estava errando

    Meu código: If DCount("nome_disciplina", "tbl_disciplinas", "nome_disciplina =' " & Me.txtnome_disciplina & "' And ch_disciplina=" & Me.txtch_disciplina & "") > 0 Then

    Código correto: If DCount("nome_disciplina", "tbl_disciplinas", "nome_disciplina ='" & Me.txtnome_disciplina & "' And ch_disciplina=" & Me.txtch_disciplina & "") > 0 Then

    O problema estava em um espaçamento nessa parte do código "nome_disciplina =' " o correto seria "nome_disciplina ='"

    Agradeço a colaboração de todos!!!
    avatar
    tauron
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 896
    Registrado : 07/12/2011

    Re: [Resolvido]Verificar se registros já existem no banco - Dois critérios de tipos diferentes Dcount() e DLookup()

    Mensagem  tauron em Qua 28 Mar 2018, 17:33

    O forum agradece pelo retorno.

      Data/hora atual: Ter 19 Jun 2018, 01:34