Microsoft Access. Trabalhando com consultas e valores nulos

1

isso pode parecer uma pergunta fácil, mas não consigo entender. Eu tenho uma tabela com vários campos. 3 deles (SizeA, SizeB, SizeC) são números e eu tenho um formulário que usa uma consulta para consultar a tabela. Agora, o tamanho A sempre não é nulo, mas SizeB e C podem ser nulos. Este é o critério que eu uso para sizeA, B e C:

Like IIf([forms]![Search Fittings]![SizeA_Text]="0","*",[forms]![Search Fittings]![SizeA_Text])
Like IIf([forms]![Search Fittings]![SizeB_Text]="0","*",[forms]![Search Fittings]![SizeB_Text])
Like IIf([forms]![Search Fittings]![SizeC_Text]="0","*",[forms]![Search Fittings]![SizeC_Text])

Como você pode ver, o if verifica se o campo de formulário Size * _Text é igual a 0 ou não. O problema é que as entradas da tabela com SizeB ou SizeC não configuradas (portanto são nulas) NÃO aparecem na pesquisa. A solução pode se parecer com o seguinte:

Like IIf([forms]![Search Fittings]![SizeC_Text]="0",Like "*" Or Is Null,[forms]![Search Fittings]![SizeC_Text])

mas não funciona. você tem alguma sugestão de como eu posso perceber essa lógica?

Obrigado Guido

    
por guidout 21.03.2015 / 17:23

2 respostas

0

coloque o campo na função nz .

NZ atribuirá o segundo argumento se o primeiro for nulo.

nz("SuperUser","default") = "SuperUser"
nz(NULL,"default") = "default"

isso mudaria o teste que você tem para algo assim (repita para os testes que você precisa fazer):

Like IIf(nz([forms]![Search Fittings]![SizeB_Text],"")="0"
         ,"*"
         ,nz([forms]![Search Fittings]![SizeB_Text],"")
        )
    
por 26.03.2015 / 19:11
0

Você precisa usar um critério um pouco mais complexo, não é possível fazer isso dentro de um iif() (você não pode testar a entrada da sua tabela para o valor nulo dentro de uma instrução like ).

([...sizeC_text]="0" and isnull(<your field>)) or <your field> like iif([...sizeC_text]="0","*",[...sizeC_text])

Observe também que esta condição está correta se você usá-lo no VBA, se você colocá-lo em uma expressão SQL do que substituir a função isnull() para ... Is Null

    
por 27.03.2015 / 09:00