Ir para conteúdo

POWERED BY:

Arquivado

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

mistério

Retornar Valor R$ 0,00

Recommended Posts

Tenho uma select que faz a busca de contas à pagar e contas à receber.

 

Como faço para quando não tiver Valor à Receber em um dos dias da SELECT, para o sistema preencher a coluna com valor R$ 0,00 ao invés de pular o dia ?

 

SQLstring2= " SET DATEFORMAT DMY "&_
				" SELECT day (TR.Data_ContaReceber) As DIA, month(TR.Data_ContaReceber) AS MÊS, "&_
				" year(TR.Data_ContaReceber) AS ANO, SUM(TR.Valor_ContaReceber)AS RECEBER "&_
				" FROM TContaReceber TR WHERE TR.Data_ContaReceber BETWEEN "&_
				" '"&DATA_INI&"' and '"&DATA_FIM&"' "&_
				" GROUP BY day (Data_ContaReceber), month(Data_ContaReceber), year(Data_ContaReceber) "&_
				" ORDER BY year(Data_ContaReceber), month(Data_ContaReceber), day (Data_ContaReceber) "

Set rsQuery2 = Conn.Execute(SQLstring2)

	
	IF NOT rsQuery.Eof Then
		While Not rsQuery.Eof 
		
			
TPagar 		= TPagar + rsQuery("PAGAR")
TReceber	= TReceber + rsQuery2("RECEBER")
SALDO 		= rsQuery("PAGAR") - rsQuery2("RECEBER")
TSaldo		= TSaldo + SALDO

%>
  <tr class="style3">
	<td width="30"> </td>
	<td width="51" align="center"> <% = rsQuery("DIA") %>/<% = rsQuery("MÊS") %>/<% = rsQuery("ANO") %></td>
	<td width="230" align="right"> R$ </td>
	<td width="230" align="right"><%=FormatNumber(rsQuery("PAGAR"),2)%> </td>
	<td width="263" align="right"> R$ </td>
	<td width="263" align="right"><%=FormatNumber(rsQuery2("RECEBER"),2)%> </td>
	<td width="230" height="25" align="right"> R$ </td>
	<td width="230" align="right"><%=FormatNumber(SALDO,2)%></td>
  </tr>	
 
 <%
	rsQuery.MoveNext
	rsQuery2.MoveNext
	Wend
	End If
rsQuery.Close
rsQuery2.Close
Set rsQuery = Nothing
Set rsQuery2 = Nothing
%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

você pode fazer tanto no select quanto no código que você usa para mostrar o resultado.

na consulta, troque o "SUM(TR.Valor_ContaReceber)AS RECEBER "

por

case when sum(tr.valor_conta_receber) is not null then sum(tr.valor_conta_receber) else '0,00' end as RECEBER

Compartilhar este post


Link para o post
Compartilhar em outros sites

Deu o seguinte erro:

 

Implicit conversion from data type varchar to money is not allowed. Use the CONVERT function to run this query.

 

O que devo fazer ???

 

você pode fazer tanto no select quanto no código que você usa para mostrar o resultado.

na consulta, troque o "SUM(TR.Valor_ContaReceber)AS RECEBER "

por

case when sum(tr.valor_conta_receber) is not null then sum(tr.valor_conta_receber) else '0,00' end as RECEBER

Compartilhar este post


Link para o post
Compartilhar em outros sites

TReceber = TReceber + rsQuery2("RECEBER")

provável que esse teu TReceber esteja definido como int ou float aí não aceita a vírgula.

 

o negócio é fazer no próprio código, esquece fazer no SQL

usa

FormatNumber(TReceber ,2)
quando for exibir na tela

Compartilhar este post


Link para o post
Compartilhar em outros sites

O problema é o seguinte:

 

É se o DIA for nulo, a linha dever aparecer e o valor ficar R$ 0.00.

 

Entendeu ???

 

TReceber = TReceber + rsQuery2("RECEBER")

provável que esse teu TReceber esteja definido como int ou float aí não aceita a vírgula.

 

o negócio é fazer no próprio código, esquece fazer no SQL

usa

FormatNumber(TReceber ,2)
quando for exibir na tela

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

cria uma tabela DATA1

create table DATA1 (

c_data date)

cadastra todas as datas

agora faz um join entre as duas tabelas, usando os campos data para se relacionarem

 

select a1.c_data, a2.campos 
from data1 a1
inner join tabela_antiga a2 on (a1.c_data = a2.data)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Todos os dias que estão entre a data início e a data fim selecionadas no text box precisam ser visualizadas na tela.

 

Funciona assim:

 

No dia que não tiver contar à receber, o valor deve aparecer R$ 0.00 e no dia que não houve contas à pagar o valor R$ 0.00. Mas o que tiver (tanto receber ou pagar) deverá aparecer normalmente.

 

Você tem algum e-mail para onde eu possa te mandar um exemplo feito no excel ???

 

cria uma tabela DATA1

create table DATA1 (

c_data date)

cadastra todas as datas

agora faz um join entre as duas tabelas, usando os campos data para se relacionarem

 

select a1.c_data, a2.campos 
from data1 a1
inner join tabela_antiga a2 on (a1.c_data = a2.data)

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.