SOMAR DADOS DE UMA TABELA

SNNIFFER 08/12/2010 23:30:14
#359154
Pessoal,

Estou fazendo uma função, onde é realizado uma consulta no banco MySQL, e com o resultado, é somado um campo chamado [ô]Valor[ô], ou seja, será somado o campo [ô]Valor[ô] de todos os dados que a consulta encontrar.
Estou fazendo assim:

[txt-color=#e80000]Set desp = New ADODB.Recordset
Dim TotDesp As Currency

SQL = [Ô]Select * from caixa[Ô]
desp.Open [Ô]Select sum(valor) as valor from caixa where tipo = [ô][Ô] & [Ô]debito[Ô] & [Ô][ô] and data = [ô][Ô] & txtData.Text & [Ô][ô][Ô], gConexao
TotDesp = CCur(desp([Ô]valor[Ô]))
txtDespesas.Text = Format(CDbl(desp([Ô]valor[Ô])), [Ô]Currency[Ô])
txtDespesas.Text = Format(txtDespesas.Text, [Ô]Currency[Ô])
[/txt-color]


Executando o código acima, e se encontrado dados, funciona bem, mas, o problema é se não for encontrado nenhum dado, é apresentado um erro, [txt-color=#e80000][Ô]Invalid Use of Null[Ô],[/txt-color] preciso de um tratamento de erro, para ser informado por uma mensagem se não for encontrado nada.

Vlw
LLAIA 08/12/2010 23:44:15
#359155
Set desp = New ADODB.Recordset
Dim TotDesp As Currency

SQL = [Ô]Select * from caixa[Ô]
desp.Open [Ô]Select sum(valor) as valor from caixa where tipo = [ô][Ô] & [Ô]debito[Ô] & [Ô][ô] and data = [ô][Ô] & txtData.Text & [Ô][ô][Ô], gConexao

If Not IsNull(desp([Ô]valor[Ô])) Then

TotDesp = Format(desp([Ô]valor[Ô]),[Ô]currency[Ô])
txtDespesas.Text = Format(TotDesp,[Ô]currency[Ô])

Else

txtDespesas.Text = [Ô]0,00[Ô]

End If
SNNIFFER 09/12/2010 00:33:08
#359156
é isto mesmo, funcionou legal, mas, não consegui fazer com que somasse as casas decimais, ou seja, apenas está somando os inteiros.


Vlw
LLAIA 09/12/2010 00:52:01
#359157
qual é o tipo de dados do campo valor?
LLAIA 09/12/2010 01:34:27
#359159
o tipo não é Moeda ou Unidade Monetária ?
SNNIFFER 09/12/2010 01:48:57
#359160
Modifiquei todos para Currency, e aconteceu que, na soma o sistema está jogando o valor 0,00, ou seja, não está encontrando valor.
LLAIA 09/12/2010 09:07:21
#359166
Set desp = New ADODB.Recordset
Dim TotDesp As Currency

SQL = [Ô]Select * from caixa[Ô]
desp.Open [Ô]Select sum(valor) as valor from caixa where tipo = [ô][Ô] & [Ô]debito[Ô] & [Ô][ô] and data = [ô][Ô] & txtData.Text & [Ô][ô][Ô], gConexao

If desp.Recordset <> 0 Then

If Not IsNull(desp([Ô]valor[Ô])) Then

TotDesp = Format(desp([Ô]valor[Ô]),[Ô]currency[Ô])
txtDespesas.Text = Format(TotDesp,[Ô]currency[Ô])

Else

txtDespesas.Text = [Ô]0,00[Ô]

End If

Else

MsgBox [Ô]Nenhum registro encontrado.[Ô]

End If


Dessa forma, verifique se tem algum registro sendo retornado.
SNNIFFER 09/12/2010 22:03:27
#359237
Bom LLAIA, fiz tudo, e nada, a unica informação no txtdespesas.text é [Ô]0,00[Ô], e fiz uma analise no código e verifiquei que ele encontra sim os dados, mas, não exibe de forma correta ou seja não soma.


Vlw
LLAIA 09/12/2010 22:45:29
#359238
colocando breakpoints no código ele tá passando por onde?
LROSSI 10/12/2010 08:59:31
#359249
Select if(isnull(sum(valor)),0,sum(valor)) as valor from caixa where tipo = [ô][Ô] & [Ô]debito[Ô] & [Ô][ô] and data = [ô][Ô] & txtData.Text & [Ô][ô][Ô],
SNNIFFER 14/12/2010 09:29:17
#359495
Pessoal valeu a ajuda, mas, consegui com este código:

[txt-color=#e80000]Set desp = New ADODB.Recordset
desp.Open [Ô]Select valor,tipo,data from caixa where tipo = [ô][Ô] & [Ô]debito[Ô] & [Ô][ô] and data = [ô][Ô] & txtData.Text & [Ô][ô][Ô], gConexao
TotDesp = 0
While Not desp.EOF
TotDesp = TotDesp + CCur(desp([Ô]valor[Ô]))
desp.MoveNext

txtDespesas.Text = TotDesp
txtDespesas.Text = Format(txtDespesas.Text, [Ô]Currency[Ô])
Wend[/txt-color]
Tópico encerrado , respostas não são mais permitidas