GD Access    GD Access    Grupo de Discussão  Ir para Categorias  Grupos técnicos  Ir para Fóruns  Access    Como usar Seimed numa consulta retornando É Nulo ou É Negado Nulo
Go
Novo
Procurar
Notificar
Ferramentas
Responder
  
Como usar Seimed numa consulta retornando É Nulo ou É Negado Nulo
 Login/Cadastrar
 
Iniciante

postado
sds aos participantes do forum!

depois das devidas consultas, percorrer diversos tópicos, não conseguí resposta para um problema com o uso de Seimed, É Nulo ou É Negado Nulo. li também o tópico "Você sabe trabalhar com nulos?". trata-se do seguinte: numa consulta com 11.000 registros, um campo chamado "Fabricante", na sua propriedade na tabela está Requerido=Não, por muitas vezes não se ter o nome do fabricante a ser informado. nessa consulta, na sua grade, quando ela é executada sem nenhum critério (no campo fabricante ou qualquer outro) são obtidos todos os registros que tem e que não tem fabricante preenchido. quando se coloca como critério da consulta a expressão É Nulo, nesse campo fabricante, são obtidos só os registros que não contem o campo fabricante preenchido. ao se colocar como critério a expressão É Negado Nulo, são obtidos só os registros que contem o campo fabricante preenchidos. isso é bem simples e é o que resolveria meu problema se o access interpretasse essa linha abaixo, que digitei no critério do campo Fabricante, da consulta:

SEIMED([MinhaPergunta]=1;É Nulo;É Negado Nulo)

ou seja: quando um controle chamado MinhaPergunta tiver o valor 1, o critério obtido para o campo fabricante seria o simples É Nulo, que eu posso digitar diretamente no campo fabricante da grade da consulta. quando o controle chamado MinhaPergunta tiver um valor diferente de 1, o critério obtido para o campo fabricante seria o simples É Negado Nulo, que posso inserir diretamente no campo fabricante da grade da consulta e obter os registros que estão preenchidos com o fabricante. mas ao executar a consulta, quando MinhaPergunta é respondida com o valor 1, o
access retorno um erro tipo "...a expressão foi digitada de forma incorreta ou é complexa demais...", e quando o valor é diferente de 1 o access "roda" a consulta e não mostra nenhum registro. como faço para fazer o access entender esse raciocínio? tem algo a ver com sintaxe?
se alguém puder me ajudar o mais breve possível agradeço de pronto. preciso usar esse critério de É Nulo e É Negado Nulo em vários controles de outros campos que farão parte de um filtro de um formulário, para se encontrar os registros que atendam a uma necessidade especifica. agradeço quem puder me dar um exemplo de como resolver essa instrução ou me enviar um exemplo.

ps.: devido a estar sempre viajando, geralmente demoro a responder. espero que entendam.

sds a todos !
 
Postagens: 15 | Registrado: 24 May 2006Reply With QuoteReport This Post
Diretor

postado Hide Post
quote:
SEIMED([MinhaPergunta]=1;É Nulo;É Negado Nulo)

Tente a expressão:

CampoCalculado: SeImed([MinhaPergunta]=1;"";[Fabricante])

Ou então:
CampoCalculado: SeImed([MinhaPergunta]=1;"É Nulo";"É Negado Nulo")
 
Postagens: 4130 | Registrado: 01 February 2001Reply With QuoteReport This Post
Iniciante

postado Hide Post
sds JorgeHF,
vou tentar acompanhar as respostas do forum, enquanto não saio em viagem. vamos lá:
no seu exemplo quando MinhaPergunta é respondida diferente de 1 (1° exemplo), o access retorna os registros cujo campo fabricante foi preenchido, mas quando a resposta é 1, ele retorna a consulta com um único registro vazio. no outro exemplo ao executar a consulta só obtenho um único registro vazio.
todas essas formas mais convencionais de de forçar o access aceitar através de uma "pergunta", a resposta É Nulo / É Negado Nulo, eu já tentei inclusive, como exemplo abaixo

SeImed([MinhaPergunta]=1;[Fabricante]="";[Fabricante]) ou SeImed([MinhaPergunta]=1;[Fabricante]=Nulo;[Fabricante=É Negado Nulo) ou
SeImed([MinhaPergunta]=1;([Descrição].[Fabricante])É Nulo;([Descrição].[Fabricante])É Negado Nulo)

o interessante (ou "desinteressante", já que não obtenho o resultado desejado), é que o access aceita dentro da grade da consulta a expressão É Nulo/É Negado Nulo, mas ao obter essas expressões através de uma resposta o comportamento dele é imprevisto. valeu pelas dicas. tô tentando do lado de cá resolver isso. pelo jeito essa solução pode ajudar a mais gente.

sds,
 
Postagens: 15 | Registrado: 24 May 2006Reply With QuoteReport This Post
Diretor

postado Hide Post
Observe que a expressão que postei está sendo usada em um CampoCalculado e não no critério da consulta.

Já que você tem o campo Fabricante acho que bastaria utilizar os critérios É Nulo ou É Negado Nulo sem usar o SeImed.

Pelo que entendí a necessidade talvez seja identificar os nulos.

Por outro lado acho que a expressão com o SeImed como critério, da maneira como foi colocada dará erro.

Não sei se você chegou a testar no CampoCalculado.

O resultado dos 2 CamposCalculados é o seguinte:

MinhaPergunta CampoCalculado1 CampoCalculado2
.....................Primeiro...............É Negado Nulo
1.............................................É Nulo
.....................Terceiro...............É Negado Nulo
 
Postagens: 4130 | Registrado: 01 February 2001Reply With QuoteReport This Post
Iniciante

postado Hide Post
JorgeHF,
dentro do formulário, pra testar o resultado, já tinha criado uma caixa de texto "Texto1", que era o critério para o campo "Fabricante" na consulta, ficando assim o critério: [Formulários]![F_Descrição Geral]![Texto1]. na caixa de texto Texto1, no evento Após Atualizar: Me.Requery. ao digitar É Nulo / É Negado Nulo, na caixa de texto e dar um enter, o retorno é sempre um registro vazio no formulário.

Com a sua obervação agora, sobre utilizar um campo calculado, conseguí algo que parece promissor. Vou precisar de um "tempinho", não sei se ainda hoje, para continuar a solução desse problema. assim que tiver uma novidade, espero que a solução. eu me manifesto.

obrigado pelo empenho,
sds!
 
Postagens: 15 | Registrado: 24 May 2006Reply With QuoteReport This Post
Programador Pleno

postado Hide Post
Nao sei se entendi bem, mas se vc quer fazer um filtro em formulario a maneiroa mais facil eh:

Dim strFilter As String

If Nz([MinhaPergunta]) = 1 Then
strFilter = "IsNull([Fabricante])"
Else
strFilter = "Not IsNull([Fabricante])"
End If

Me.FilterOn = True
Me.Filter = strFilter

Vanderlei S. Matheus
 
Postagens: 244 | Localização: Grand Cayman | Registrado: 10 June 2002Reply With QuoteReport This Post
Programador Pleno

postado Hide Post
Se precisar usar em uma consulta mesmo da pra fazer uma gambiarra. Coloque em um módulo:

Function PutNull() As String

PutNull = vbNullString

End Function

E depois o critério da consulta fica assim:

SeImed([LaPergunta?]=1;PutNull();[FABRICANTE])  

Mas acho mais certo utilizar o filtro que o colega Vanderlei sugeriu.


______________________________
msn: dimitrimitsuo@hotmail.com
e-mail: dimitrimitsuo@yahoo.com.br
 
Postagens: 197 | Registrado: 24 October 2006Reply With QuoteReport This Post
Iniciante

postado Hide Post
Primeiro ola a todos sou novo por aqui e queria agradecer a todos pois ja resolvi muita coisa som o help do forum.
bom eu tive a mesma necessidade que o colega leaoleal e resolvi da seguinte forma, na consulta coloque em uma nova coluna a expressão
teste: SeImed([fabricante] É Nulo;"vazios";"cadastrados") e no criterio coloque Como Formulários![seuform]![seucampo] , para editar basta criar um novo form baseado na sua consulta.
espero ter ajudado.
 
Postagens: 2 | Registrado: 24 September 2008Reply With QuoteReport This Post
Iniciante

postado Hide Post
a todos boa noite! devido a viagens contantes, o tempo me é curto e não posso ser tão prestativo nas respostas como vocês o são para comigo. peço desculpas.
optei para tentar resolver esse meu problema, a sujestão do JorgeHF que é também a sugerida pelo Cezar. as outras me pareceram mais avançadas e gostaria de testar noutra oportunidade.
na grade da consulta ao se colocar a simples expressão "Expr1:[Fabricante] é negado nulo", já consigo um resultado da seguinte maneira:
para os campos "Fabricante" que contém o nome do fabricante o resultado é: -1
para os campos "Fabricante" que não contém o nome do fabricante o resultado é: 0
com a resposta -1 e 0 já é possivel aplicar um critério, pois agora não se precisa trabalhar com campos que retornam valores nulos. dessa forma criei o seguinte critério:

SeImed([Formulários]![F_Descrição Geral]![Localizar Por Fabricante]="(Com Fabricante)";-1;SeImed([Formulários]![F_Descrição Geral]![Localizar Por Fabricante]="(Sem Fabricante)";0;SeImed([Formulários]![F_Descrição Geral]![Localizar Por Fabricante]="(Tudo)";0;[Fabricante]=[Formulários]![F_Descrição Geral]![Localizar Por Fabricante]))) Ou SeImed([Formulários]![F_Descrição Geral]![Localizar Por Fabricante]="(Tudo)";-1)

no formulário "F_Descrição Geral", a caixa de combinação "Localizar Por Fabricante', contém os parâmetros para o critério da consulta. como a escolha sempre retorna um valor diferente de nulo (-1 e 0), evita-se os transtornos do uso de nulos.
nesse momento considero resolvido esse problema. gostaria de agradecer ao manifesto de todos, pelo empenho em me ajudar. espero que tenha ajudado a mais alguém.

sds!
 
Postagens: 15 | Registrado: 24 May 2006Reply With QuoteReport This Post
  Powered by Social Strata  
 

GD Access    GD Access    Grupo de Discussão  Ir para Categorias  Grupos técnicos  Ir para Fóruns  Access    Como usar Seimed numa consulta retornando É Nulo ou É Negado Nulo

©