TRATAMENTO DE VALOR NULO NUMA SQL

WEBIER 26/11/2010 11:26:19
#358270
tenho a seguinte sql

Set rsPedidos = BD.OpenRecordset([Ô]select * from PEDIDOS where COD_PEDIDO = [Ô] & Pedido)
Set rsFunc = BD.OpenRecordset([Ô]Select * from FUNCIONARIO where CODIGO = [Ô] & rsPedidos!COD_FUNCIONARIO)


no caso, o campo COD_FUNCIONARIO está nulo em alguns registros, ai sempre q peço para exibir dar erro... mas quando NÃO ESTÁ NULO esse campo, mostra normal.

como faço para tratar isso nessa mesma linha da sql ?
MADMAX 26/11/2010 11:45:28
#358272
Set rsPedidos = BD.OpenRecordset([Ô]select * from PEDIDOS where COD_PEDIDO = [Ô] & Pedido)
Set rsFunc = BD.OpenRecordset([Ô]Select * from FUNCIONARIO where CODIGO = [Ô] & rsPedidos!COD_FUNCIONARIO)

Assim ele não trara os nulos na query
Set rsPedidos = BD.OpenRecordset([Ô]select * from PEDIDOS where COD_FUNCIONARIO IS NOT NULL AND COD_PEDIDO = [Ô] & Pedido)
Agaora se vc quiser trazer os nulos tera de trarar no vbmesmo se o campo que esta vindo não esta nulo
if isnull(rsPedidos!COD_FUNCIONARIO) then
msgbox [Ô]NULL[Ô]
else
msgbox [Ô]NOT NULL[Ô]
endif





MGALDINO 26/11/2010 11:46:23
#358273
Para tratar campo Numérico o Ideal é tratar na construção do banco deixando o campo como default 0.

Mais vai ai a solução para esse caso.

coloque isnull.

Set rsPedidos = BD.OpenRecordset([Ô]select * from PEDIDOS where COD_PEDIDO = [Ô] & Pedido)
Set rsFunc = BD.OpenRecordset([Ô]Select * from FUNCIONARIO where CODIGO = [Ô] & iif isnull(rsPedidos!COD_FUNCIONARIO,0,rsPedidos!COD_FUNCIONARIO))

Caso for Null Passa 0 para instrução ao contrario passa o valor do campo mesmo.
LROSSI 26/11/2010 11:50:50
#358276
Set rsFunc = BD.OpenRecordset([Ô]Select if(isnull(CODIGO),[ô][ô], CODIGO), FUNCIONARIO.* from FUNCIONARIO where CODIGO = [Ô] & rsPedidos!COD_FUNCIONARIO)
Tópico encerrado , respostas não são mais permitidas