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]Como fazer uma condição If com campo de uma tabela com a Função DLookup()?

    avatar
    ESPEDITO LEAL
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 13
    Registrado : 12/03/2014

    [Resolvido]Como fazer uma condição If com campo de uma tabela com a Função DLookup()? Empty [Resolvido]Como fazer uma condição If com campo de uma tabela com a Função DLookup()?

    Mensagem  ESPEDITO LEAL Qui 19 Jun 2014, 19:14

    Pessoal saudações!

    Sei que o tópico parece ser muito comum, porém, para o que eu estou propondo na rotina que estou criando não
    estou conseguindo. Já fiz de todas as formas e já pesquisei em tudo que esteja relacionado ao Access e não consegui. Só
    me testou apelar para os mestre do MaximoAccess. É o seguinte:

    Tenho duas tabelas com os campos: tblCadastro (Cód, Nome, Rol) e ListaAssembleias (Cód, Cód_Assembleia, CódigoBarras, Nome, Rol)  

    Na tblCadastro no campo Rol fica registrado as informações "PRINCIPAL" E "SEPARADO" que já estão pré cadastrados.
    Gostaria de quando eu digitar no campo CódigoBarras do formulário que está relacioando com a tabela ListaAssembleias faça um pesquisa na tabela tblCadastro e se no CódigoBarra digitado do formulário ao pesquisar o campo rol na tblCadastro for "SEPARADO" o sistema emita uma mensagem que esse membro cadastrado está em rol SEPARADO.

    Estou usando o seguinte código que está funcionando direitinho. Estou querendo apenas adicionar essa nova rotina nesse código.

    Private Sub CódigoBarras_BeforeUpdate(Cancel As Integer)
    Dim Salvo As Boolean

    If (Not IsNull(DLookup("[CódigoBarras]", "ListaAssembleias", "[CódigoBarras] ='" & Me!CódigoBarras & "' And [Cód_Assembleia]= " & CódigoAssembleia & ""))) Then
    MsgBox "Este membro já está cadastrado nesta Assembléia. Verifique se há duplicidade!", vbInformation, "Membro Cadastrado"
    Cancel = True 'cancela o evento.
    Me!CódigoBarras.Undo  'desfaz a digitação.

    ElseIf Me.Dirty Then 'Pede confirmação para salvar.
    If MsgBox("Deseja salvar a inclusão deste membro na Assembléia?", vbYesNo + vbQuestion, _
    "Salvar Registro!") = vbNo Then
    Me.Undo
    Salvo = True
    End If
    End If
    Me.AllowEdits = False

    End Sub

    Se alguém puder me ajudar ficarei muito agradecido!
    Noobezinho
    Noobezinho
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 4145
    Registrado : 29/06/2012

    [Resolvido]Como fazer uma condição If com campo de uma tabela com a Função DLookup()? Empty Re: [Resolvido]Como fazer uma condição If com campo de uma tabela com a Função DLookup()?

    Mensagem  Noobezinho Qui 19 Jun 2014, 21:25

    Olá Espedito

    Bem vindo ao fórum!

    Acredito que o que você deseja, não tenha nada haver com o código que postou, ou seja, não é uma decisão a ser tomada, então,
    eu coloquei essa parte no final do teu código, veja:

    * Verifique se o nome do teu controle no formulário é Cód também.

    '================================================
    Private Sub CódigoBarras_BeforeUpdate(Cancel As Integer)
    Dim Salvo As Boolean

    If (Not IsNull(DLookup("[CódigoBarras]", "ListaAssembleias", "[CódigoBarras] ='" & Me!CódigoBarras & "' And [Cód_Assembleia]= " & CódigoAssembleia & ""))) Then
    MsgBox "Este membro já está cadastrado nesta Assembléia. Verifique se há duplicidade!", vbInformation, "Membro Cadastrado"
    Cancel = True 'cancela o evento.
    Me!CódigoBarras.Undo  'desfaz a digitação.

    ElseIf Me.Dirty Then 'Pede confirmação para salvar.
    If MsgBox("Deseja salvar a inclusão deste membro na Assembléia?", vbYesNo + vbQuestion, _
    "Salvar Registro!") = vbNo Then
    Me.Undo
    Salvo = True
    End If
    End If

    If Dlookup("[Cód]","tblCadastro","[Cód]= " & Me.Cód & " AND [Prol] = SEPARADO") Then
      msgbox "Membro em Rol [SEPARADO]",vbInformation,"Aviso"
    End I
    f

    Me.AllowEdits = False

    End Sub

    '====================================================

    Teste, como fiz o código no bloco de notas, talvez tenha que consertar algo.

    Abraços

    Noob


    .................................................................................
    A pergunta que não quer calar:
    Por quê quando alguém vem pedir ajuda e conforme o caso pedimos
    para enviar parte do projeto, não temos mais continuidade do tópico?  
    Crê que temos bolas de cristal ou está com medo que "roubemos"  a
    idéia/projeto dele?  Twisted Evil
    Se é tão bom assim...


    Ajude a ser ajudado:
    Seja objetivo na dúvida, dê os detalhes do que precisa, sem rodeios.
    Quando anexar teu projeto, diga onde está o problema, ganhamos mais tempo
    sem precisar procurar o mesmo.
    avatar
    ESPEDITO LEAL
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 13
    Registrado : 12/03/2014

    [Resolvido]Como fazer uma condição If com campo de uma tabela com a Função DLookup()? Empty Re: [Resolvido]Como fazer uma condição If com campo de uma tabela com a Função DLookup()?

    Mensagem  ESPEDITO LEAL Qui 19 Jun 2014, 22:40

    Noobezinho

    Muito obrigado por sua atenção. Estarei testando o seu código agora a noite e volto para
    dizer algo.

    Um grande abraço!
    avatar
    ESPEDITO LEAL
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 13
    Registrado : 12/03/2014

    [Resolvido]Como fazer uma condição If com campo de uma tabela com a Função DLookup()? Empty Re: [Resolvido]Como fazer uma condição If com campo de uma tabela com a Função DLookup()?

    Mensagem  ESPEDITO LEAL Sex 20 Jun 2014, 14:35

    Noobezinho bom dia!

    Testei seu código porém dá a mensagem de erro: Erro em tempo de execução ‘3463’:
    Tipo de dados incompatíveis na expressão de critério.

    Sei que isso está relacionado aos tipos de dados dos campos por exemplo:
    o campo Cód é um numérico e o campo Rol é um texto. Sei também que isso se
    trata com o uso das aspas duplas para numéricos e aspas simples para textos na concatenação
    porém não estou conseguindo fazer da forma correta.

    Fazendo um resumo do que pretendo do formulário é o seguinte:
    Neste formulário eu incluio um membro através do código de barra, se esse membro não estiver
    na ListaAssembleia o sistema pede a confirmação ou não da inclusão.
    Se ele já estiver cadastrado o sistema emite um mensagem dizendo que ele já está cadastrado e não salva o registro.

    Essa rotina está rodando certina. O que eu queria e não estou conseguindo é que o sistema também verificasse antes de
    incluir o membro se ele está em rol SEPARADO. Se o membro estiver em rol PRINCIPAL ele pede a confirmação para a
    inclusão se não ele não salva.


    Mais uma vez agradeço muito a atenção!!!
    Noobezinho
    Noobezinho
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 4145
    Registrado : 29/06/2012

    [Resolvido]Como fazer uma condição If com campo de uma tabela com a Função DLookup()? Empty Re: [Resolvido]Como fazer uma condição If com campo de uma tabela com a Função DLookup()?

    Mensagem  Noobezinho Sex 20 Jun 2014, 18:58

    Olá Espedito

    Quando o Campo Cód é numérico NÃO usa Aspas alguma.
    Aspas usa-se somente em Strings.

    Numa senteça SQL por exemplo inicia-se com aspas duplas  "Select..." e termina com aspas duplas

    Quando dentro de uma sentença que contenha um campo/controle cujo valor é uma string, para que o Access não se
    confunda com as aspas, usamos também aspa simples.
    Por exemplo:

    DCount("*";"TblClintes","[EstadoCivil]=  ' " & me.EstadoCivil & " ' "

    Veja que separei a aspas simples das aspas comum, somente para ilustrar.Dentro do código não pode haver espaços.
    Nesse caso, EstadoCivil poderá ser "Solteiro", "Casado", etc...


    No código que te passei:

    If Dlookup("[Cód]","tblCadastro","[Cód]= " & Me.Cód & " AND [Prol] = SEPARADO") Then

    Deve ficar assim, tem que testar:

    If Dlookup("[Cód]","tblCadastro","[Cód]= " & Me.Cód & " AND [Prol] = 'SEPARADO'") Then

    Coloquei Aspas simples em torno de SEPARADO.
    Como pode ver, temos que prestar bastante atenção quando lidamos com strings.

    Acredito que tenha colocado os valores "PRINCIPAL" e "SEPARADO" na origem de linha de uma combobox, certo?

    Se quiser evitar dores de cabeça com strings, sugiro que use valores numérico, assim poderá trabalhar sem essas benditas aspas simples.
    A origem da linha da combobox ficaria assim:
    1;"PRINCIPAL";2;"SEPARADO"
    Lembre-se de aumentar o numero de colunas para 2.

    Noob


    .................................................................................
    A pergunta que não quer calar:
    Por quê quando alguém vem pedir ajuda e conforme o caso pedimos
    para enviar parte do projeto, não temos mais continuidade do tópico?  
    Crê que temos bolas de cristal ou está com medo que "roubemos"  a
    idéia/projeto dele?  Twisted Evil
    Se é tão bom assim...


    Ajude a ser ajudado:
    Seja objetivo na dúvida, dê os detalhes do que precisa, sem rodeios.
    Quando anexar teu projeto, diga onde está o problema, ganhamos mais tempo
    sem precisar procurar o mesmo.
    avatar
    ESPEDITO LEAL
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 13
    Registrado : 12/03/2014

    [Resolvido]Como fazer uma condição If com campo de uma tabela com a Função DLookup()? Empty Re: [Resolvido]Como fazer uma condição If com campo de uma tabela com a Função DLookup()?

    Mensagem  ESPEDITO LEAL Dom 22 Jun 2014, 16:11

    Noobezinho

    Desculpa na demora em responder.
    Com suas explicação e seu código e algumas alterações necessário conseguimos implementar o
    que eu desejava para essa rotina.

    Quero agradecer a sua atenção e a sua ajuda. Muito obrigado e que Deus lhe abençoe!

    Um grande abraço!
    avatar
    ESPEDITO LEAL
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 13
    Registrado : 12/03/2014

    [Resolvido]Como fazer uma condição If com campo de uma tabela com a Função DLookup()? Empty Re: [Resolvido]Como fazer uma condição If com campo de uma tabela com a Função DLookup()?

    Mensagem  ESPEDITO LEAL Dom 22 Jun 2014, 16:15

    Quero parabenizar o fórum pela iniciativa de compartilha o conhecimento.

    Estou fechando o tópico como resolvido.
    Noobezinho
    Noobezinho
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 4145
    Registrado : 29/06/2012

    [Resolvido]Como fazer uma condição If com campo de uma tabela com a Função DLookup()? Empty Re: [Resolvido]Como fazer uma condição If com campo de uma tabela com a Função DLookup()?

    Mensagem  Noobezinho Dom 22 Jun 2014, 21:26

    Valeu pelo Retorno, Mano

    Boa sorte !

    Noob


    .................................................................................
    A pergunta que não quer calar:
    Por quê quando alguém vem pedir ajuda e conforme o caso pedimos
    para enviar parte do projeto, não temos mais continuidade do tópico?  
    Crê que temos bolas de cristal ou está com medo que "roubemos"  a
    idéia/projeto dele?  Twisted Evil
    Se é tão bom assim...


    Ajude a ser ajudado:
    Seja objetivo na dúvida, dê os detalhes do que precisa, sem rodeios.
    Quando anexar teu projeto, diga onde está o problema, ganhamos mais tempo
    sem precisar procurar o mesmo.

      Data/hora atual: Qui 27 Jan 2022, 00:33