Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

rd111072

Divide by zero error encountered

Recommended Posts

E aí, beleza?

 

Tenho uma consulta que é assim:

 

sqlS2= "Select Sum(vlTotal) as salario from vRelC183a where cdcliente <> 8 and cdcliente <> 250 and dtemissao >= '"&data_inicio2&"' "&cdrepres&" and dtemissao <= '"&data_fim2&"' and cdRepres = '0'"

 

essa consulta traz a soma do faturamento mês dos vendedores. Quando coloco qualquer cdRepres funfa. Mas quando coloco cdRepres 0, dá o erro:

 

Microsoft OLE DB Provider for ODBC Drivers erro '80040e14'

 

[Microsoft][ODBC SQL Server Driver]

Divide by zero error encountered. 

 

/sis-vendedor/teste0.asp, line 21

Line 21: set rsS = conexaoDB.execute(sqlS2)

 

O que eu faço em ASP para corrigir esse erro???

 

Lembrando que os valores são decimal (20,5) null, o banco é SQL Server 2005.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Jonathan,

 

'0' é o código do representante "casa". Não representa TODOS.

 

Esse "representante" tem vendas este mês, mas de uma hora pra outra começou a dar este erro.

 

Creio que deva ser algum problema do banco... Mas caso seja ou não seja (já que NÃO posso mexer no banco) como faço pra resolver esse problema em ASP mesmo???

Compartilhar este post


Link para o post
Compartilhar em outros sites

Este erro também é auto-explicativo. A consulta inclui uma operação de divisão, e o denominador é zero (se é diretamente a partir dos dados da tabela, ou calculado dentro da consulta, ou derivados de algum outro lugar (por exemplo, uma contagem ou soma de uma subconsulta)). Você terá que lidar com isso de alguma forma, uma das maneiras mais comum é usar.

 

DECLARE @i INT 
SET @i = 0 
-- ... 
SELECT 5 / @i -- raises error 
GO 
 
DECLARE @i INT 
SET @i = 0 
-- ... 
SELECT 5 / CASE @i WHEN 0 THEN 1 ELSE @i END 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Este erro também é auto-explicativo. A consulta inclui uma operação de divisão, e o denominador é zero (se é diretamente a partir dos dados da tabela, ou calculado dentro da consulta, ou derivados de algum outro lugar (por exemplo, uma contagem ou soma de uma subconsulta)). Você terá que lidar com isso de alguma forma, uma das maneiras mais comum é usar.

 

DECLARE @i INT 
SET @i = 0 
-- ... 
SELECT 5 / @i -- raises error 
GO 
 
DECLARE @i INT 
SET @i = 0 
-- ... 
SELECT 5 / CASE @i WHEN 0 THEN 1 ELSE @i END 

Beleza, amigo...

mas como uso isso denntro do código que postei?

 

O resultado desta consulta nada mais é que a soma(SUM) dos faturamentos do vendedor cujo código de identificação, por acaso, é zero.

Tá estranho isso, porque há outros vendedores sem faturamento mas que não dá este rro. Esse vendedor, pelo contrário, tem até vendas este mês...

Compartilhar este post


Link para o post
Compartilhar em outros sites

você pode usar isso fireto na SQL, ou tb aleter o codigo do user, anun permitindo o value 0

Compartilhar este post


Link para o post
Compartilhar em outros sites

você pode usar isso fireto na SQL, ou tb aleter o codigo do user, anun permitindo o value 0

 

OK. MAs tem uma coisa:

Não me é permitido fazer intervenções diretas no bd SQL da empresa, pois serve também ao aplicativo de uma outra empresa, que NÂO permite essas intervenções... http://forum.imasters.com.br/public/style_emoticons/default/upset.gif

 

Por isso eu busco uma solução no ASP mesmo...

 

Agora, eu tenho que mostrar os registros desse usuário cujo código é zero também, não tem como não mostrar. Não posso "barrá-lo"...

 

Será que tem como, só no ASP, passar por cima do erro e mostrar os registros do zero?

Compartilhar este post


Link para o post
Compartilhar em outros sites

o 0 passado no string SQL , a mesma interpleta de outra maneira, tem alterar o cod. do user, ja k naun tem acesso total a base de dados, ou entre em contato com o DBA do host e peça uma solucaun deles...

Compartilhar este post


Link para o post
Compartilhar em outros sites

o 0 passado no string SQL , a mesma interpleta de outra maneira, tem alterar o cod. do user, ja k naun tem acesso total a base de dados, ou entre em contato com o DBA do host e peça uma solucaun deles...

 

Mas aí é que tá...

 

Se ao invés de:

 

sqlS2= "Select Sum(vlliquido) as salario from vRelC183a where cdcliente <> 8 and cdcliente <> 250 and dtemissao >= '"&data_inicio2&"' "&cdrepres&" and dtemissao <= '"&data_fim2&"' and cdRepres = '0'"

Eu uso:

sqlS2= "Select Sum(vlliquido) as salario from vRelC183a where cdcliente <> 8 and cdcliente <> 250 and dtemissao >= '"&data_inicio2&"' "&cdrepres&" and dtemissao <= '"&data_fim2&"' and [b]nmrepres = 'CASA'[/b]"

Dá o mesmo erro.

 

Parece que de repente o ASP não consegue mais puxar os registros desse usuário (até o mês passado, tava normal).

Compartilhar este post


Link para o post
Compartilhar em outros sites

mude o tipo de campo no banco...

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.