Usuário com melhor resposta
Transformar NULL em 0

Pergunta
-
Prezados Colegas,
Estou com um probleminha que gostaria que me ajudassem a resolver.
O valor de um determinado campo que estou lendo na tabela em um BD no SQl Server 2005, e NULL e quero que ele seja transformado em 0 (Zero).
Eis o codigo que estou usando:
str = "SELECT OrcCodigoControle, OrcValor, OrcHTD, OrcInicioPeriodo, OrcTerminoPeriodo FROM Orcamento WHERE OrcCodigo =" & Request.QueryString("Codigo")
Set rsOrcamento = Server.CreateObject("Adodb.Recordset")
rsOrcamento.open str, Conexao, 1, 3
'---------------------------------------------------------------
'Recebe as HORAS TRABALHADAS DIA
if rsOrcamento.recordcount = 1 Then
Htd = Cint(rsOrcamento("OrcHTD")) 'Tentei aqui, transformar o NULL em 0, para ser testado na linha abaixo.
if Htd = 0 Then 'Testo aqui, se o valor de Htd e 0, entao na linha abaixo ele atribui 1 ao valor de HTD, pois HTD sera o divisor em uma outra linha do sistema
Htd=1
end if
end if
'-----------------------
O sistema me apresentou a seguinte msg de erro:
Microsoft VBScript runtime error '800a005e' Invalid use of Null: 'Cint'Entendi que o Cint nao deve ser utilizado para a conversao do valor NULL em um numero.
Como e que faco entao para transformar o valor NULL em 0 ?
Aguardo sua ajuda.
Inciaindo em C#
Respostas
-
Januário,
Você deve utilizar a função ISNULL do SQL Server.
str = "SELECT OrcCodigoControle, OrcValor, ISNULL(OrcHTD, 0) as OrcHTD, OrcInicioPeriodo, OrcTerminoPeriodo FROM Orcamento WHERE OrcCodigo =" & Request.QueryString("Codigo")
Set rsOrcamento = Server.CreateObject("Adodb.Recordset")
rsOrcamento.open str, Conexao, 1, 3
Também notei pelo seu post que você utiliza o valor de OrcHTD para a divisão, testando se ele é zero e substituindo por 1. Talvez seja até melhor voce utilizar o ISNULL(OrcHTD, 1) onde o SQL irá substituir os valores nulos por 1 e não precisar fazer o teste se OrcHTD é 0...
MCT / MCITP - Database Administrator MCITP - Database Developer 2008- Sugerido como Resposta Junior Galvão - MVPMVP quarta-feira, 22 de abril de 2009 13:00
- Marcado como Resposta Harley Araujo quarta-feira, 12 de agosto de 2009 18:12
Todas as Respostas
-
Januário,
Você deve utilizar a função ISNULL do SQL Server.
str = "SELECT OrcCodigoControle, OrcValor, ISNULL(OrcHTD, 0) as OrcHTD, OrcInicioPeriodo, OrcTerminoPeriodo FROM Orcamento WHERE OrcCodigo =" & Request.QueryString("Codigo")
Set rsOrcamento = Server.CreateObject("Adodb.Recordset")
rsOrcamento.open str, Conexao, 1, 3
Também notei pelo seu post que você utiliza o valor de OrcHTD para a divisão, testando se ele é zero e substituindo por 1. Talvez seja até melhor voce utilizar o ISNULL(OrcHTD, 1) onde o SQL irá substituir os valores nulos por 1 e não precisar fazer o teste se OrcHTD é 0...
MCT / MCITP - Database Administrator MCITP - Database Developer 2008- Sugerido como Resposta Junior Galvão - MVPMVP quarta-feira, 22 de abril de 2009 13:00
- Marcado como Resposta Harley Araujo quarta-feira, 12 de agosto de 2009 18:12
-