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

    Expressão SeImed usando operador "E"

    Compartilhe
    avatar
    julianovv
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

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

    Expressão SeImed usando operador "E"

    Mensagem  julianovv em 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 P5LD2-X - 2 GB de memória DDR2 667 mhz Kingston - GForce GT220 - Monitor 17" LCD 732N Samsung - Impressora Epson T33
    [Você precisa estar registrado e conectado para ver esta imagem.]
    avatar
    Silvio
    Developer
    Developer

    Respeito às Regras 100%

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

    Re: Expressão SeImed usando operador "E"

    Mensagem  Silvio em 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.
    [Você precisa estar registrado e conectado para ver este link.]
    avatar
    thiagomcosta
    Avançado
    Avançado

    Respeito às Regras 100%

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

    Re: Expressão SeImed usando operador "E"

    Mensagem  thiagomcosta em 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.";"")
    avatar
    julianovv
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

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

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

    Mensagem  julianovv em 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 P5LD2-X - 2 GB de memória DDR2 667 mhz Kingston - GForce GT220 - Monitor 17" LCD 732N Samsung - Impressora Epson T33
    [Você precisa estar registrado e conectado para ver esta imagem.]
    avatar
    julianovv
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

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

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

    Mensagem  julianovv em 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 P5LD2-X - 2 GB de memória DDR2 667 mhz Kingston - GForce GT220 - Monitor 17" LCD 732N Samsung - Impressora Epson T33
    [Você precisa estar registrado e conectado para ver esta imagem.]
    avatar
    Silvio
    Developer
    Developer

    Respeito às Regras 100%

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

    Re: Expressão SeImed usando operador "E"

    Mensagem  Silvio em 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) (Razão : acréscimo de texto.)


    .................................................................................
    Caso tenha resolvido a tua duvida, coloque o tópico como resolvido.
    [Você precisa estar registrado e conectado para ver este link.]
    avatar
    julianovv
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

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

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

    Mensagem  julianovv em 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 P5LD2-X - 2 GB de memória DDR2 667 mhz Kingston - GForce GT220 - Monitor 17" LCD 732N Samsung - Impressora Epson T33
    [Você precisa estar registrado e conectado para ver esta imagem.]
    avatar
    Silvio
    Developer
    Developer

    Respeito às Regras 100%

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

    Re: Expressão SeImed usando operador "E"

    Mensagem  Silvio em 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.
    [Você precisa estar registrado e conectado para ver este link.]
    avatar
    caiosouza
    Avançado
    Avançado

    Respeito às Regras 100%

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

    Re: Expressão SeImed usando operador "E"

    Mensagem  caiosouza em 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.";"")


    .................................................................................
    A persistência leva ao sucesso!
    avatar
    julianovv
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

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

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

    Mensagem  julianovv em 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 P5LD2-X - 2 GB de memória DDR2 667 mhz Kingston - GForce GT220 - Monitor 17" LCD 732N Samsung - Impressora Epson T33
    [Você precisa estar registrado e conectado para ver esta imagem.]
    avatar
    Silvio
    Developer
    Developer

    Respeito às Regras 100%

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

    Re: Expressão SeImed usando operador "E"

    Mensagem  Silvio em 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.
    [Você precisa estar registrado e conectado para ver este link.]
    avatar
    julianovv
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

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

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

    Mensagem  julianovv em 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 P5LD2-X - 2 GB de memória DDR2 667 mhz Kingston - GForce GT220 - Monitor 17" LCD 732N Samsung - Impressora Epson T33
    [Você precisa estar registrado e conectado para ver esta imagem.]
    avatar
    Silvio
    Developer
    Developer

    Respeito às Regras 100%

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

    Re: Expressão SeImed usando operador "E"

    Mensagem  Silvio em 4/12/2018, 11:08

    ok..compreendo !


    .................................................................................
    Caso tenha resolvido a tua duvida, coloque o tópico como resolvido.
    [Você precisa estar registrado e conectado para ver este link.]
    avatar
    thiagomcosta
    Avançado
    Avançado

    Respeito às Regras 100%

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

    Re: Expressão SeImed usando operador "E"

    Mensagem  thiagomcosta em 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.";"")
    avatar
    Silvio
    Developer
    Developer

    Respeito às Regras 100%

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

    Re: Expressão SeImed usando operador "E"

    Mensagem  Silvio em 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.
    [Você precisa estar registrado e conectado para ver este link.]
    avatar
    julianovv
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

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

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

    Mensagem  julianovv em 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 P5LD2-X - 2 GB de memória DDR2 667 mhz Kingston - GForce GT220 - Monitor 17" LCD 732N Samsung - Impressora Epson T33
    [Você precisa estar registrado e conectado para ver esta imagem.]
    avatar
    Silvio
    Developer
    Developer

    Respeito às Regras 100%

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

    Re: Expressão SeImed usando operador "E"

    Mensagem  Silvio em 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.
    [Você precisa estar registrado e conectado para ver este link.]
    avatar
    thiagomcosta
    Avançado
    Avançado

    Respeito às Regras 100%

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

    Re: Expressão SeImed usando operador "E"

    Mensagem  thiagomcosta em 4/12/2018, 12:46

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

    Respeito às Regras 100%

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

    Re: Expressão SeImed usando operador "E"

    Mensagem  Silvio em 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.
    [Você precisa estar registrado e conectado para ver este link.]
    avatar
    julianovv
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

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

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

    Mensagem  julianovv em 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 P5LD2-X - 2 GB de memória DDR2 667 mhz Kingston - GForce GT220 - Monitor 17" LCD 732N Samsung - Impressora Epson T33
    [Você precisa estar registrado e conectado para ver esta imagem.]
    avatar
    ahteixeira
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

    Re: Expressão SeImed usando operador "E"

    Mensagem  ahteixeira em 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
    avatar
    julianovv
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

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

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

    Mensagem  julianovv em 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 P5LD2-X - 2 GB de memória DDR2 667 mhz Kingston - GForce GT220 - Monitor 17" LCD 732N Samsung - Impressora Epson T33
    [Você precisa estar registrado e conectado para ver esta imagem.]
    avatar
    thiagomcosta
    Avançado
    Avançado

    Respeito às Regras 100%

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

    Re: Expressão SeImed usando operador "E"

    Mensagem  thiagomcosta em 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
    Forum1.png
    Você não tem permissão para fazer download dos arquivos anexados.
    (48 Kb) Baixado 6 vez(es)
    avatar
    julianovv
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

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

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

    Mensagem  julianovv em 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 P5LD2-X - 2 GB de memória DDR2 667 mhz Kingston - GForce GT220 - Monitor 17" LCD 732N Samsung - Impressora Epson T33
    [Você precisa estar registrado e conectado para ver esta imagem.]
    avatar
    julianovv
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

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

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

    Mensagem  julianovv em 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 P5LD2-X - 2 GB de memória DDR2 667 mhz Kingston - GForce GT220 - Monitor 17" LCD 732N Samsung - Impressora Epson T33
    [Você precisa estar registrado e conectado para ver esta imagem.]
    avatar
    Silvio
    Developer
    Developer

    Respeito às Regras 100%

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

    Re: Expressão SeImed usando operador "E"

    Mensagem  Silvio em 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.
    [Você precisa estar registrado e conectado para ver este link.]
    avatar
    julianovv
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

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

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

    Mensagem  julianovv em 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 P5LD2-X - 2 GB de memória DDR2 667 mhz Kingston - GForce GT220 - Monitor 17" LCD 732N Samsung - Impressora Epson T33
    [Você precisa estar registrado e conectado para ver esta imagem.]
    avatar
    Silvio
    Developer
    Developer

    Respeito às Regras 100%

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

    Re: Expressão SeImed usando operador "E"

    Mensagem  Silvio em 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.
    [Você precisa estar registrado e conectado para ver este link.]
    avatar
    ahteixeira
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

    Re: Expressão SeImed usando operador "E"

    Mensagem  ahteixeira em 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
    avatar
    julianovv
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

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

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

    Mensagem  julianovv em 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 P5LD2-X - 2 GB de memória DDR2 667 mhz Kingston - GForce GT220 - Monitor 17" LCD 732N Samsung - Impressora Epson T33
    [Você precisa estar registrado e conectado para ver esta imagem.]
    avatar
    julianovv
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

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

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

    Mensagem  julianovv em 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 P5LD2-X - 2 GB de memória DDR2 667 mhz Kingston - GForce GT220 - Monitor 17" LCD 732N Samsung - Impressora Epson T33
    [Você precisa estar registrado e conectado para ver esta imagem.]
    avatar
    julianovv
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

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

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

    Mensagem  julianovv em 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 P5LD2-X - 2 GB de memória DDR2 667 mhz Kingston - GForce GT220 - Monitor 17" LCD 732N Samsung - Impressora Epson T33
    [Você precisa estar registrado e conectado para ver esta imagem.]
    avatar
    thiagomcosta
    Avançado
    Avançado

    Respeito às Regras 100%

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

    Re: Expressão SeImed usando operador "E"

    Mensagem  thiagomcosta em 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.
    avatar
    julianovv
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

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

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

    Mensagem  julianovv em 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 P5LD2-X - 2 GB de memória DDR2 667 mhz Kingston - GForce GT220 - Monitor 17" LCD 732N Samsung - Impressora Epson T33
    [Você precisa estar registrado e conectado para ver esta imagem.]
    avatar
    julianovv
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

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

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

    Mensagem  julianovv em 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 P5LD2-X - 2 GB de memória DDR2 667 mhz Kingston - GForce GT220 - Monitor 17" LCD 732N Samsung - Impressora Epson T33
    [Você precisa estar registrado e conectado para ver esta imagem.]
    avatar
    thiagomcosta
    Avançado
    Avançado

    Respeito às Regras 100%

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

    Re: Expressão SeImed usando operador "E"

    Mensagem  thiagomcosta em 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])
    avatar
    julianovv
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

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

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

    Mensagem  julianovv em 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 P5LD2-X - 2 GB de memória DDR2 667 mhz Kingston - GForce GT220 - Monitor 17" LCD 732N Samsung - Impressora Epson T33
    [Você precisa estar registrado e conectado para ver esta imagem.]
    avatar
    thiagomcosta
    Avançado
    Avançado

    Respeito às Regras 100%

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

    Re: Expressão SeImed usando operador "E"

    Mensagem  thiagomcosta em 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.
    avatar
    julianovv
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

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

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

    Mensagem  julianovv em 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 P5LD2-X - 2 GB de memória DDR2 667 mhz Kingston - GForce GT220 - Monitor 17" LCD 732N Samsung - Impressora Epson T33
    [Você precisa estar registrado e conectado para ver esta imagem.]
    avatar
    JPaulo
    Moderador
    Moderador

    Respeito às Regras 100%

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

    Re: Expressão SeImed usando operador "E"

    Mensagem  JPaulo em 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.

    [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver este link.]

    Ou ainda: Aqui (Novo)

    Sucesso e Bons Estudos
    Success and Good Studies

    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]

      Data/hora atual: 18/12/2018, 21:54