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
thiagomcosta
Silvio
6 participantes

    Expressão SeImed usando operador "E"

    julianovv
    julianovv
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 680
    Registrado : 14/12/2010

    Expressão SeImed usando operador "E" Empty Expressão SeImed usando operador "E"

    Mensagem  julianovv 3/12/2018, 15:50

    Bom dia. Tenho uma expressão que preciso de duas condições para determinar um campo vazio como "em débito" e sempre aparece o erro de argumento errado.

    Segue a expressão:

    MensDebito: SeImed([diapgto]="" E (Data()>[DataDebito];"Em débito.";""))

    Sendo:

    diapgto - dia que o associado pagou.
    datadebito - a data 30 dias após a data do vencimento.

    Preciso que se o campo 'diapgto' estiver vazio, retorne "em débito" mas somente se o campo 'datadebito' for menor que o dia de hoje.
    Usei """" (Aspas duplas) para 'vazio' e o E como operador.
    Não deu.

    Rolling Eyes


    .................................................................................
    Juliano

    USO O ACCESS 2007 NO XP SP3
    Pentil 4 Duo Core 2 - 3.2 ghz - HD 250 GB ATA II - Placa Asus P5QPL-AM - 2 GB de memória DDR2 667 mhz Kingston - GForce GT220 - Monitor AOC 24 pol G2HE524G2 - Impressora Epson T33 - Scanner Bright.
    Smile
    Silvio
    Silvio
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 5074
    Registrado : 20/04/2011

    Expressão SeImed usando operador "E" Empty Re: Expressão SeImed usando operador "E"

    Mensagem  Silvio 3/12/2018, 16:48

    Boa tarde

    Experimente trocar o " E " pelo " OU "


    .................................................................................
    Caso tenha resolvido a tua duvida, coloque o tópico como resolvido.
    www.maximoaccess.com/t860-resolucao-de-topicos

    "Quase tudo é possível quando se tem determinação e força de vontade. Não desista tão rápido."
    thiagomcosta
    thiagomcosta
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 377
    Registrado : 23/01/2017

    Expressão SeImed usando operador "E" Empty Re: Expressão SeImed usando operador "E"

    Mensagem  thiagomcosta 3/12/2018, 17:28

    E e OU são operadores lógicos completamente diferentes, não é possível substituir um pelo outro.

    Na sua função há parenteses desnecessários, tente:
    Código:
    SeImed([diapgto]="" E Data()>[DataDebito];"Em débito.";"")
    julianovv
    julianovv
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 680
    Registrado : 14/12/2010

    Expressão SeImed usando operador "E" Empty Re: Expressão SeImed usando operador "E".

    Mensagem  julianovv 3/12/2018, 17:58

    Obrigado Tiago mas retornou #erro.

    MensDebito: SeImed([diapgto]="" E Data()>[DataDebito];"Em débito.";"")

    Neutral


    .................................................................................
    Juliano

    USO O ACCESS 2007 NO XP SP3
    Pentil 4 Duo Core 2 - 3.2 ghz - HD 250 GB ATA II - Placa Asus P5QPL-AM - 2 GB de memória DDR2 667 mhz Kingston - GForce GT220 - Monitor AOC 24 pol G2HE524G2 - Impressora Epson T33 - Scanner Bright.
    Smile
    julianovv
    julianovv
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 680
    Registrado : 14/12/2010

    Expressão SeImed usando operador "E" Empty Res: Expressão SeImed usando operador "E".

    Mensagem  julianovv 3/12/2018, 18:02

    Silvio, posso estar enganado mas os operadores E e OU são diferentes. O primeiro indica que existe ligação, que faz parte, e o segundo que é uma alternativa.
    Tentei aqui ambos e deu #erro.

    Rolling Eyes


    .................................................................................
    Juliano

    USO O ACCESS 2007 NO XP SP3
    Pentil 4 Duo Core 2 - 3.2 ghz - HD 250 GB ATA II - Placa Asus P5QPL-AM - 2 GB de memória DDR2 667 mhz Kingston - GForce GT220 - Monitor AOC 24 pol G2HE524G2 - Impressora Epson T33 - Scanner Bright.
    Smile
    Silvio
    Silvio
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 5074
    Registrado : 20/04/2011

    Expressão SeImed usando operador "E" Empty Re: Expressão SeImed usando operador "E"

    Mensagem  Silvio 3/12/2018, 18:26

    Juliano....poste aqui o que tem feito...fica mais fácil !

    A mensagem de numero 3 chegou a ver ??


    Última edição por Silvio em 3/12/2018, 18:28, editado 1 vez(es) (Motivo da edição : acréscimo de texto.)


    .................................................................................
    Caso tenha resolvido a tua duvida, coloque o tópico como resolvido.
    www.maximoaccess.com/t860-resolucao-de-topicos

    "Quase tudo é possível quando se tem determinação e força de vontade. Não desista tão rápido."
    julianovv
    julianovv
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 680
    Registrado : 14/12/2010

    Expressão SeImed usando operador "E" Empty Res: Expressão SeImed usando operador "E".

    Mensagem  julianovv 3/12/2018, 18:55

    Silvio, é difícil mandar todo o banco por aqui mas posso mandar a consulta para você avaliar.

    Consulta_Mensagens

    O campo 'diapgto' é data-hora.

    Neutral


    .................................................................................
    Juliano

    USO O ACCESS 2007 NO XP SP3
    Pentil 4 Duo Core 2 - 3.2 ghz - HD 250 GB ATA II - Placa Asus P5QPL-AM - 2 GB de memória DDR2 667 mhz Kingston - GForce GT220 - Monitor AOC 24 pol G2HE524G2 - Impressora Epson T33 - Scanner Bright.
    Smile
    Silvio
    Silvio
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 5074
    Registrado : 20/04/2011

    Expressão SeImed usando operador "E" Empty Re: Expressão SeImed usando operador "E"

    Mensagem  Silvio 3/12/2018, 19:04

    Juliano...separa a consulta e tabela de origem da mesma....não precisa ter todos os dados nela...apenas alguns como exemplo.

    o Print da tela..em nada ajuda.


    .................................................................................
    Caso tenha resolvido a tua duvida, coloque o tópico como resolvido.
    www.maximoaccess.com/t860-resolucao-de-topicos

    "Quase tudo é possível quando se tem determinação e força de vontade. Não desista tão rápido."
    caiosouza
    caiosouza
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 419
    Registrado : 05/12/2016

    Expressão SeImed usando operador "E" Empty Re: Expressão SeImed usando operador "E"

    Mensagem  caiosouza 3/12/2018, 19:11

    Tenta assim:

    SeImed((ÉNulo([diapgto]) OR [diapgto]="") E Agora()>[DataDebito];"Em débito.";"")

    Ou...

    SeImed((ÉNulo([diapgto]) OR [diapgto]="") E Data()>Format([DataDebito];"dd/mm/yyyy");"Em débito.";"")


    .................................................................................
    Caio Souza

    Engenheiro de Software
    julianovv
    julianovv
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 680
    Registrado : 14/12/2010

    Expressão SeImed usando operador "E" Empty Res: Expressão SeImed usando operador "E".

    Mensagem  julianovv 3/12/2018, 20:32

    Silvio, segue o banco compactado com a consulta. Para controlar os resultados, altere os dois campos de datas das tabelas 'Vencimento' (Tbl_Cadastro_Nomes) e 'Data Pgto' (Tbl_Agendamentos) sempre com 15 ou 30 dias para antes ou depois.

    Consulta Mensagens

    Wink


    .................................................................................
    Juliano

    USO O ACCESS 2007 NO XP SP3
    Pentil 4 Duo Core 2 - 3.2 ghz - HD 250 GB ATA II - Placa Asus P5QPL-AM - 2 GB de memória DDR2 667 mhz Kingston - GForce GT220 - Monitor AOC 24 pol G2HE524G2 - Impressora Epson T33 - Scanner Bright.
    Smile
    Silvio
    Silvio
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 5074
    Registrado : 20/04/2011

    Expressão SeImed usando operador "E" Empty Re: Expressão SeImed usando operador "E"

    Mensagem  Silvio 4/12/2018, 10:27

    Bom dia...

    Manda o formulário também.


    .................................................................................
    Caso tenha resolvido a tua duvida, coloque o tópico como resolvido.
    www.maximoaccess.com/t860-resolucao-de-topicos

    "Quase tudo é possível quando se tem determinação e força de vontade. Não desista tão rápido."
    julianovv
    julianovv
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 680
    Registrado : 14/12/2010

    Expressão SeImed usando operador "E" Empty Res: Expressão SeImed usando operador "E".

    Mensagem  julianovv 4/12/2018, 10:51

    Bom dia. Não tem como enviar o formulário. Ele está associado a centena de outros, com consultas e relatórios, códigos internos como macros e módulos. Eu teria de enviar tudo.
    A coluna 'MensAvisos' é o campo que irá para o corpo da mensagem no formulário de simulação de email e recebe os dados de todas as outras colunas com alias. Esse campo está incompleto porque falta a mensagem de débito de 15 e 30 dias. O resultado que preciso só tem 2 tabelas associadas que poderão ser alteradas.

    Wink


    .................................................................................
    Juliano

    USO O ACCESS 2007 NO XP SP3
    Pentil 4 Duo Core 2 - 3.2 ghz - HD 250 GB ATA II - Placa Asus P5QPL-AM - 2 GB de memória DDR2 667 mhz Kingston - GForce GT220 - Monitor AOC 24 pol G2HE524G2 - Impressora Epson T33 - Scanner Bright.
    Smile
    Silvio
    Silvio
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 5074
    Registrado : 20/04/2011

    Expressão SeImed usando operador "E" Empty Re: Expressão SeImed usando operador "E"

    Mensagem  Silvio 4/12/2018, 11:08

    ok..compreendo !


    .................................................................................
    Caso tenha resolvido a tua duvida, coloque o tópico como resolvido.
    www.maximoaccess.com/t860-resolucao-de-topicos

    "Quase tudo é possível quando se tem determinação e força de vontade. Não desista tão rápido."
    thiagomcosta
    thiagomcosta
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 377
    Registrado : 23/01/2017

    Expressão SeImed usando operador "E" Empty Re: Expressão SeImed usando operador "E"

    Mensagem  thiagomcosta 4/12/2018, 11:26

    Algumas verificações a serem realizadas:
    DataDebito realmente é um campo no formato data? Se não for não tem como comparar com a data atual, tem que converter antes com a função CDate.

    diapagto é um campo em formato data? Se for não é possível fazer a comparação com string vazia "". Mude tudo para NZ(diapgto;0)=0 (assim já inclui os valores nulos lembrado pelo caiosouza).
    Neste caso ficaria assim:
    Código:
    SeImed(Nz([diapgto];0)=0 E Agora()>[DataDebito];"Em débito.";"")
    Silvio
    Silvio
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 5074
    Registrado : 20/04/2011

    Expressão SeImed usando operador "E" Empty Re: Expressão SeImed usando operador "E"

    Mensagem  Silvio 4/12/2018, 11:32

    Mesmo retirando o campo "MensAvisos" da tua consulta...gera um erro de data() ( função Date() indefinida na expressão ).


    .................................................................................
    Caso tenha resolvido a tua duvida, coloque o tópico como resolvido.
    www.maximoaccess.com/t860-resolucao-de-topicos

    "Quase tudo é possível quando se tem determinação e força de vontade. Não desista tão rápido."
    julianovv
    julianovv
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 680
    Registrado : 14/12/2010

    Expressão SeImed usando operador "E" Empty Res: Expressão SeImed usando operador "E".

    Mensagem  julianovv 4/12/2018, 12:02

    O campo DataDebito é um alias calculado com uma expressão. Não existe na tabela.

    DataDebito: [DataVencimento]+30

    A coluna ContaDias faz uma limitação de dados que ainda não consegui decifrar. Parece que interfere em todos os resultados e acredito que tem a ver com a data atual. Os dados para obter os resultados estão corretos mas o resultado é sempre #erro ou -1. Apague o critério '<=30 E >=0' e verá a confirmação dessa limitação.

    ContaDias: DifData("d";Data();[DataVencimento])

    Vá entender!

    Rolling Eyes


    .................................................................................
    Juliano

    USO O ACCESS 2007 NO XP SP3
    Pentil 4 Duo Core 2 - 3.2 ghz - HD 250 GB ATA II - Placa Asus P5QPL-AM - 2 GB de memória DDR2 667 mhz Kingston - GForce GT220 - Monitor AOC 24 pol G2HE524G2 - Impressora Epson T33 - Scanner Bright.
    Smile
    Silvio
    Silvio
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 5074
    Registrado : 20/04/2011

    Expressão SeImed usando operador "E" Empty Re: Expressão SeImed usando operador "E"

    Mensagem  Silvio 4/12/2018, 12:36

    Juliano qual a tua versão do Access ?

    Uso a 2010 32Bits aqui.

    Mesmo retirando o campo mencionado acima na minha mensagem anterior, e retirando o critério que disse, ainda continua dando erro de função Data()


    .................................................................................
    Caso tenha resolvido a tua duvida, coloque o tópico como resolvido.
    www.maximoaccess.com/t860-resolucao-de-topicos

    "Quase tudo é possível quando se tem determinação e força de vontade. Não desista tão rápido."
    thiagomcosta
    thiagomcosta
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 377
    Registrado : 23/01/2017

    Expressão SeImed usando operador "E" Empty Re: Expressão SeImed usando operador "E"

    Mensagem  thiagomcosta 4/12/2018, 12:46

    Experimentou trocar a condição para Nz([diapgto];0)=0 ao invés de [diapgto]=""?
    Silvio
    Silvio
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 5074
    Registrado : 20/04/2011

    Expressão SeImed usando operador "E" Empty Re: Expressão SeImed usando operador "E"

    Mensagem  Silvio 4/12/2018, 12:50

    Quanto ao erro de função Data(), faça o teste substituindo o Data() pela sintaxe Now()

    No aguardo da resposta.


    .................................................................................
    Caso tenha resolvido a tua duvida, coloque o tópico como resolvido.
    www.maximoaccess.com/t860-resolucao-de-topicos

    "Quase tudo é possível quando se tem determinação e força de vontade. Não desista tão rápido."
    julianovv
    julianovv
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 680
    Registrado : 14/12/2010

    Expressão SeImed usando operador "E" Empty Res: Expressão SeImed usando operador "E".

    Mensagem  julianovv 4/12/2018, 12:57

    Silvio, uso a versão 2007 32 bits. Usei muitos anos o 2003 mas vi depois que a nova extensão estava dando problema demais e troquei.

    Wink


    .................................................................................
    Juliano

    USO O ACCESS 2007 NO XP SP3
    Pentil 4 Duo Core 2 - 3.2 ghz - HD 250 GB ATA II - Placa Asus P5QPL-AM - 2 GB de memória DDR2 667 mhz Kingston - GForce GT220 - Monitor AOC 24 pol G2HE524G2 - Impressora Epson T33 - Scanner Bright.
    Smile
    Alvaro Teixeira
    Alvaro Teixeira
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7919
    Registrado : 15/03/2013

    Expressão SeImed usando operador "E" Empty Re: Expressão SeImed usando operador "E"

    Mensagem  Alvaro Teixeira 4/12/2018, 14:00

    Olá a todos,

    Juliano, teste assim:
    Código:
    MensDebito: IIF(Len([diapgto] & "")=0 AND (Date()>[DataDebito]);"Em débito.";"")

    Abraço a todos
    julianovv
    julianovv
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 680
    Registrado : 14/12/2010

    Expressão SeImed usando operador "E" Empty Res: Expressão SeImed usando operador "E".

    Mensagem  julianovv 4/12/2018, 14:10

    Tiago, não deu certo. Tentei usar Nz([diapgto];0)=0 e retornou #erro.

    Mad


    .................................................................................
    Juliano

    USO O ACCESS 2007 NO XP SP3
    Pentil 4 Duo Core 2 - 3.2 ghz - HD 250 GB ATA II - Placa Asus P5QPL-AM - 2 GB de memória DDR2 667 mhz Kingston - GForce GT220 - Monitor AOC 24 pol G2HE524G2 - Impressora Epson T33 - Scanner Bright.
    Smile
    thiagomcosta
    thiagomcosta
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 377
    Registrado : 23/01/2017

    Expressão SeImed usando operador "E" Empty Re: Expressão SeImed usando operador "E"

    Mensagem  thiagomcosta 4/12/2018, 14:20

    Eu fiz deste jeito aqui (na imagem anexa) e parou de dar erro. Estou trabalhando com o campo certo da consulta?
    Anexos
    Expressão SeImed usando operador "E" AttachmentForum1.png
    Você não tem permissão para fazer download dos arquivos anexados.
    (48 Kb) Baixado 9 vez(es)
    julianovv
    julianovv
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 680
    Registrado : 14/12/2010

    Expressão SeImed usando operador "E" Empty Res: Expressão SeImed usando operador "E".

    Mensagem  julianovv 4/12/2018, 15:22

    Silvio, segue então em "modo full" o banco para analisar. Não teve outro jeito. Pode ser um pouco demorado pra baixar. Não achei a solução.
    Ele está na versão 2007.

    Banco Cadastro de Associados

    Wink


    .................................................................................
    Juliano

    USO O ACCESS 2007 NO XP SP3
    Pentil 4 Duo Core 2 - 3.2 ghz - HD 250 GB ATA II - Placa Asus P5QPL-AM - 2 GB de memória DDR2 667 mhz Kingston - GForce GT220 - Monitor AOC 24 pol G2HE524G2 - Impressora Epson T33 - Scanner Bright.
    Smile
    julianovv
    julianovv
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 680
    Registrado : 14/12/2010

    Expressão SeImed usando operador "E" Empty Res: Expressão SeImed usando operador "E".

    Mensagem  julianovv 4/12/2018, 15:24

    Tiago, tentei esse também. Não deu.

    Neutral


    .................................................................................
    Juliano

    USO O ACCESS 2007 NO XP SP3
    Pentil 4 Duo Core 2 - 3.2 ghz - HD 250 GB ATA II - Placa Asus P5QPL-AM - 2 GB de memória DDR2 667 mhz Kingston - GForce GT220 - Monitor AOC 24 pol G2HE524G2 - Impressora Epson T33 - Scanner Bright.
    Smile
    Silvio
    Silvio
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 5074
    Registrado : 20/04/2011

    Expressão SeImed usando operador "E" Empty Re: Expressão SeImed usando operador "E"

    Mensagem  Silvio 4/12/2018, 15:31

    Juliano, tentou a ideia do Teixeira..na mensagem 21 ?


    .................................................................................
    Caso tenha resolvido a tua duvida, coloque o tópico como resolvido.
    www.maximoaccess.com/t860-resolucao-de-topicos

    "Quase tudo é possível quando se tem determinação e força de vontade. Não desista tão rápido."
    julianovv
    julianovv
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 680
    Registrado : 14/12/2010

    Expressão SeImed usando operador "E" Empty Res: Expressão SeImed usando operador "E".

    Mensagem  julianovv 4/12/2018, 16:45

    Silvio, sim, tentei todas as dicas que me passaram. Todas retornaram #erro.
    Tentei reformular toda a expressão desconsiderando o campo 'diapgto' como vazio, pressupondo que ele não estará nunca vazio e usando ao invés do 'diapgto', o 'contadias' e mesmo assim não deu.

    Ficou assim:

    MensDebito1: SeImed([contadias]>30 E ([diapgto]<[DataDebito]);"Em débito.";""))

    Sendo:

    ContaDias: DifData("d";Data();[DataVencimento]) => conta os dias até o vencimento.

    diapgto - campo da tbl_Agendamentos no formato data abreviada.

    DataVencimento - campo da tbl_Cadastro_Nomes no formato data abreviada.

    DataDebito: [DataVencimento]+30 => Exibe a data 30 dias depois do vencimento.

    E pra piorar tudo ainda preciso eliminar o mês e ano do campo de vencimento. Precisa ser o mês e ano vigentes ou seja, se mês que vem vai vencer novamente, então o mês vai mudar e o ano muda na virada. Não dá para o usuário do banco ficar sempre mudando esses dados.

    Rolling Eyes


    .................................................................................
    Juliano

    USO O ACCESS 2007 NO XP SP3
    Pentil 4 Duo Core 2 - 3.2 ghz - HD 250 GB ATA II - Placa Asus P5QPL-AM - 2 GB de memória DDR2 667 mhz Kingston - GForce GT220 - Monitor AOC 24 pol G2HE524G2 - Impressora Epson T33 - Scanner Bright.
    Smile
    Silvio
    Silvio
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 5074
    Registrado : 20/04/2011

    Expressão SeImed usando operador "E" Empty Re: Expressão SeImed usando operador "E"

    Mensagem  Silvio 4/12/2018, 17:43

    É uma boa pratica padronizar as datas ( data abreviada, formato dd/mm/aaaa) em tuas tabelas.
    Creio que fazendo isso ficará um pouco mais simples resolver.


    .................................................................................
    Caso tenha resolvido a tua duvida, coloque o tópico como resolvido.
    www.maximoaccess.com/t860-resolucao-de-topicos

    "Quase tudo é possível quando se tem determinação e força de vontade. Não desista tão rápido."
    Alvaro Teixeira
    Alvaro Teixeira
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7919
    Registrado : 15/03/2013

    Expressão SeImed usando operador "E" Empty Re: Expressão SeImed usando operador "E"

    Mensagem  Alvaro Teixeira 5/12/2018, 10:37

    Olá a todos,

    Juliano, antes de tudo deve compilar o seu porjeto e corrigir os erros.
    Depois estive a verificar a consulta e não consegui identificar onde está apresentar o erro.
    Por ultimo acho que não percebi bem a sua dúvida (utilizador alterar todos os meses...??)

    Independentemente do erro, o que pretende obter através da consulta?
    Qual o objetivo

    Abraço
    julianovv
    julianovv
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 680
    Registrado : 14/12/2010

    Expressão SeImed usando operador "E" Empty Res: Expressão SeImed usando operador "E".

    Mensagem  julianovv 5/12/2018, 11:51

    Silvio, vou deixar essa etapa para o final quando a consulta estiver realmente funcionando, a menos que essa padronização tenha que alterar tudo.
    Obrigado!

    Wink


    .................................................................................
    Juliano

    USO O ACCESS 2007 NO XP SP3
    Pentil 4 Duo Core 2 - 3.2 ghz - HD 250 GB ATA II - Placa Asus P5QPL-AM - 2 GB de memória DDR2 667 mhz Kingston - GForce GT220 - Monitor AOC 24 pol G2HE524G2 - Impressora Epson T33 - Scanner Bright.
    Smile
    julianovv
    julianovv
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 680
    Registrado : 14/12/2010

    Expressão SeImed usando operador "E" Empty Res: Expressão SeImed usando operador "E".

    Mensagem  julianovv 5/12/2018, 12:07

    Bom dia ahteixeira, o objetivo é criar textos automáticos para que o campo 'Mensagem' (MensAvisos) da visualização do email esteja pronto para copiar. Seriam textos para 15 dias e 30 dias até o vencimento para lembrar o associado da data e textos de débito para 15 ou 30 dias depois do vencimento e esse último é que está dando erro.
    O campo 'ContaDias' com a expressão DifData("d";Data();[DataVencimento]) parece interferir em toda consulta mas atende bem a parte de contar os dias para as mensagens de status que virão na tela inicial. Ex. "Faltam 15 dias para o vencimento".

    Rolling Eyes


    .................................................................................
    Juliano

    USO O ACCESS 2007 NO XP SP3
    Pentil 4 Duo Core 2 - 3.2 ghz - HD 250 GB ATA II - Placa Asus P5QPL-AM - 2 GB de memória DDR2 667 mhz Kingston - GForce GT220 - Monitor AOC 24 pol G2HE524G2 - Impressora Epson T33 - Scanner Bright.
    Smile
    julianovv
    julianovv
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 680
    Registrado : 14/12/2010

    Expressão SeImed usando operador "E" Empty Res: Expressão SeImed usando operador "E".

    Mensagem  julianovv 5/12/2018, 12:57

    Silvio, fiz uma nova alteração para criar mensagens de débito com 30 dias usando a função 'Difdata'.

    ContaDiasDeb: SeImed([ContaDias30]>29;"Venceu a" & " " & [ContaDias30] & " " & "dias.";"Dentro do prazo.") E SeImed([ContaDias30]=0;"Em dia.";"")

    Sendo:

    ContaDias30: DifData("d";Data();[DataVencimento]+29)
    Sem critério.

    Foi só inserir outra expressão com o operador E e deu erro de '-1'.

    Vá entender!

    Rolling Eyes


    .................................................................................
    Juliano

    USO O ACCESS 2007 NO XP SP3
    Pentil 4 Duo Core 2 - 3.2 ghz - HD 250 GB ATA II - Placa Asus P5QPL-AM - 2 GB de memória DDR2 667 mhz Kingston - GForce GT220 - Monitor AOC 24 pol G2HE524G2 - Impressora Epson T33 - Scanner Bright.
    Smile
    thiagomcosta
    thiagomcosta
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 377
    Registrado : 23/01/2017

    Expressão SeImed usando operador "E" Empty Re: Expressão SeImed usando operador "E"

    Mensagem  thiagomcosta 5/12/2018, 18:26

    -1 é verdadeiro, ela está pegando o resultado do primeiro SEIMED juntamente com o resultado do segundo SEIMED. Com estes dois resultados ele faz a operação lógica E e então retorna o resultado final que é VERDADEIRO, ou seja, -1.

    Uma dica: não precisa fazer "Venceu a" & " " &, isso só polui o seu código. Faça apenas "Venceu a " &

    Outra dica: Experimente usar consultas mais simples. Divida as consultas. Facilita tanto a leitura, a manutenção e agiliza o processamento do computador. Já baixei processamentos de mais de 4 minutos para menos de 10 segundo apenas alterando as consultas.
    julianovv
    julianovv
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 680
    Registrado : 14/12/2010

    Expressão SeImed usando operador "E" Empty Res: Expressão SeImed usando operador "E".

    Mensagem  julianovv 6/12/2018, 15:58

    Tiago, realmente houve uma melhora boa em diminuir as tabelas. Deixei essa consulta apenas para as mensagens.
    Voltei na expressão (Nz([diapgto];0) alterando o restante. Dessa vez o "E" funcionou. Vá entender!

    MensDebito1: SeImed(Nz([diapgto];0)=0 E [ContaDias30]>30;"Em débito.";"")

    Sendo:

    ContaDias30: DifData("d";Data();[DataVencimento]+29)

    Esse campo é para o subformulário que exibe a lista de associados e seus status de pagamento então é só uma frase curta.

    Wink


    .................................................................................
    Juliano

    USO O ACCESS 2007 NO XP SP3
    Pentil 4 Duo Core 2 - 3.2 ghz - HD 250 GB ATA II - Placa Asus P5QPL-AM - 2 GB de memória DDR2 667 mhz Kingston - GForce GT220 - Monitor AOC 24 pol G2HE524G2 - Impressora Epson T33 - Scanner Bright.
    Smile
    julianovv
    julianovv
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 680
    Registrado : 14/12/2010

    Expressão SeImed usando operador "E" Empty Res: Expressão SeImed usando operador "E".

    Mensagem  julianovv 6/12/2018, 16:08

    Silvio, tentei padronizar as datas e não deu certo. Não acertei na expressão. Preciso que o usuário digite apenas o dia e automaticamente o mês e ano sejam alterados para mês e ano atuais. Tentei criar um valor padrão na tabela e não deu certo.

    Mad



    .................................................................................
    Juliano

    USO O ACCESS 2007 NO XP SP3
    Pentil 4 Duo Core 2 - 3.2 ghz - HD 250 GB ATA II - Placa Asus P5QPL-AM - 2 GB de memória DDR2 667 mhz Kingston - GForce GT220 - Monitor AOC 24 pol G2HE524G2 - Impressora Epson T33 - Scanner Bright.
    Smile
    thiagomcosta
    thiagomcosta
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 377
    Registrado : 23/01/2017

    Expressão SeImed usando operador "E" Empty Re: Expressão SeImed usando operador "E"

    Mensagem  thiagomcosta 6/12/2018, 16:55

    Não entendi se a última parte é num parâmetro de filtro de consulta, mas veja a função "DateSerial(ano,mês,dia)"

    Ficaria algo como: DateSerial(Ano(Data()), Mês(Data()), [Digite o dia])
    julianovv
    julianovv
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 680
    Registrado : 14/12/2010

    Expressão SeImed usando operador "E" Empty Res: Expressão SeImed usando operador "E".

    Mensagem  julianovv 6/12/2018, 18:32

    Thiago, não é consulta para digitar uma data ou consulta parâmetro. Ela é digitada no campo 'DataVencimento' e a data completa com o mês e ano vigentes deveriam entrar em outro campo ou se possível no próprio campo da tabela usando o valor padrão. Concatenar os dados dá certo mas não funciona para cálculos em expressões.


    .................................................................................
    Juliano

    USO O ACCESS 2007 NO XP SP3
    Pentil 4 Duo Core 2 - 3.2 ghz - HD 250 GB ATA II - Placa Asus P5QPL-AM - 2 GB de memória DDR2 667 mhz Kingston - GForce GT220 - Monitor AOC 24 pol G2HE524G2 - Impressora Epson T33 - Scanner Bright.
    Smile
    thiagomcosta
    thiagomcosta
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 377
    Registrado : 23/01/2017

    Expressão SeImed usando operador "E" Empty Re: Expressão SeImed usando operador "E"

    Mensagem  thiagomcosta 7/12/2018, 10:51

    A função é a mesma, utilize DATESERIAL, que transforma 3 números em uma data. Procure a documentação desta função, acredito que seja ela mesma que resolverá seu problema.
    julianovv
    julianovv
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 680
    Registrado : 14/12/2010

    Expressão SeImed usando operador "E" Empty Res: Expressão SeImed usando operador "E".

    Mensagem  julianovv 10/12/2018, 14:12

    Bom dia Thiago, não tive muito sucesso com a função 'dataserial'. Tentei criar outra expressão que preciso, calculando o mês anterior mas também não deu certo. Usei a expressão:
    DateSerial(Ano(Data()), Mês(Data())-1,1). Será que é algum 'bug' no Access 2007? Nada funciona!

    Rolling Eyes


    .................................................................................
    Juliano

    USO O ACCESS 2007 NO XP SP3
    Pentil 4 Duo Core 2 - 3.2 ghz - HD 250 GB ATA II - Placa Asus P5QPL-AM - 2 GB de memória DDR2 667 mhz Kingston - GForce GT220 - Monitor AOC 24 pol G2HE524G2 - Impressora Epson T33 - Scanner Bright.
    Smile
    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 11016
    Registrado : 04/11/2009

    Expressão SeImed usando operador "E" Empty Re: Expressão SeImed usando operador "E"

    Mensagem  JPaulo 10/12/2018, 14:17

    Olá;

    Já postei diversas vezes isto;

    Código:
    Datas no Ms Access

    Mostra mês e ano, anterior ao atual;
    Format(DateSerial(Year(Date());Month(Date())-1;1);"mmmm-yyyy")

    Mostra o mês anterior, entre o dia 1 e o dia 31 (se existir):
    >=DateSerial(Year(Date());Month(Date())-1;1) And <=DateSerial(Year(Date());Month(Date())-1;31)

    O mês corrente: DateSerial(Year(Date()), Month(Date()), 1)
    O próximo mês: DateSerial(Year(Date()), Month(Date()) + 1, 1)
    O último dia do mês corrente: DateSerial(Year(Date()), Month(Date()) + 1, 0)
    O último dia do mês seguinte: DateSerial(Year(Date()), Month(Date()) + 2, 0)
    O primeiro dia do mês anterior: DateSerial(Year(Date()), Month(Date()), -1, 1)
    O último dia do mês anterior: DateSerial(Year(Date()), Month(Date()), 0)
    O primeiro dia do trimestre corrente: DateSerial(Year(Date()), Int((Month(Date()) - 1) / 3) * 3 + 1, 1)
    O último dia do trimestre corrente: DateSerial(Year(Date()), Int((Month(Date()) - 1) / 3) * 3 + 4, 0)
    O primeiro dia da semana corrente (assumindo Domingo = dia 1): Date() - WeekDay(Date()) + 1
    O último dia da semana corrente: Date() - WeekDay(Date()) + 7
    O primeiro dia da semana corrente (usando o padrão da caixa de diálogo Opções): Date() - WeekDay(Date(), 0) + 1
    O último dia da semana corrente: Date() - WeekDay(Date(), 0) + 7
    O Primeiro dia do ano atual:  DateSerial(Year(Date()),1,1)

    Ultima semana de segunda a domingo;
    Between DateAdd("d";-5-Weekday(Date());Date()) And DateAdd("d";1-Weekday(Date());Date())


    .................................................................................
    Contribua com o maximoaccess nos links abaixo, ajude a melhorar este que é o seu site na NET.

    Pay-Pal R$ Aqui
    Pay-Pal € Aqui

    Ou ainda: Aqui (Novo)

    Sucesso e Bons Estudos
    Success and Good Studies

    Expressão SeImed usando operador "E" Folder_announce_new Utilize o Sistema de Busca do Fórum...
    Expressão SeImed usando operador "E" Folder_announce_new 102 Códigos VBA Gratuitos...
    Expressão SeImed usando operador "E" Folder_announce_new Instruções SQL como utilizar...

    Conteúdo patrocinado


    Expressão SeImed usando operador "E" Empty Re: Expressão SeImed usando operador "E"

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 19/4/2024, 14:53