FUNCAO SQL COUNT NAO FUNCIONA

MOREIRA 13/04/2007 11:09:51
#211699
bom dia a todos...
estou fazendo 3 funções sql. para contar e mostrar em 3 lebal... mas só consigo contar a ultima sql dessa função......

Function Buscar()
Set rst1 = New ADODB.Recordset
sSql = "Select count(*) as Aberto From TblCobranca where status = 'aberto'"
sSql = "Select count(*) as Pago From TblCobranca where status = 'Pago'"
sSql = "Select count(*) as naopago From TblCobranca where status = 'naopago'"
rst1.Open sSql, Conexao, 3
lblNaopago.Caption = rst1!naopago
lblPago.Caption = rst1!pago
lblAberto.Caption = rst1!aberto
rst1.Close
End Function


o db é access
VBAPRENDE 13/04/2007 11:30:15
#211707
dica ferifica se o nome da tabela esta escrita em minusculo ou maisculo se servidor for linux da erro.

Outra coisa sempre que você utilizar o rstl você deve fechar para executar o proximo comando sql.
USUARIO.EXCLUIDOS 13/04/2007 11:37:58
#211709
Meu, mas vc cria a variavel sSql, atribui um valor na primeira linha, na segunda vc substitui esse valor e na terceira substitui de novo, seu código é o mesmo que:

Function Buscar()
Set rst1 = New ADODB.Recordset
sSql = "Select count(*) as naopago From TblCobranca where status = 'naopago'"
rst1.Open sSql, Conexao, 3
lblNaopago.Caption = rst1!naopago
lblPago.Caption = rst1!pago
lblAberto.Caption = rst1!aberto
rst1.Close
End Function


Mas tipo, eu lembro de já ter respondido isso pra você, não?

Mas enfim, tente assim:

Function Buscar()
Dim SqlAberto As String, SqlPago As String
Set rst1 = New ADODB.Recordset

SqlAberto = "Select count(*) From TblCobranca where status = 'aberto'"
SqlPago = "Select count(*) From TblCobranca where status = 'Pago'"
sSql = "Select count(*) as naopago, (" & SqlAberto & ") as Aberto, (" & SqlPago & ") as Pago From TblCobranca where status = 'naopago'"

rst1.Open sSql, Conexao, 3
lblNaopago.Caption = rst1!naopago
lblPago.Caption = rst1!pago
lblAberto.Caption = rst1!aberto
rst1.Close
End Function



Qualquer dúvida poste...flw
RXGOMES 13/04/2007 11:59:42
#211715
Pode se user o group by

select count(*) from tabcobranca where status in('aberto','pago',naopago') group by status, order by status

lblaberto.caption = rs(0)
lblnaopago.caption = rs(1)
lblpago.caption = rs(2)

LIONHEART 13/04/2007 13:40:52
#211739
Matioli, matou mais errou rs!

Vc esqueceu de abrir as 3 conexoes ...



Function Buscar()
Dim SqlAberto As String, SqlPago As String
Set rst1 = New ADODB.Recordset

SqlAberto = "Select count(*) From TblCobranca where status = 'aberto'"
SqlPago = "Select count(*) From TblCobranca where status = 'Pago'"
sSql = "Select count(*) as naopago, (" & SqlAberto & ") as Aberto, (" & SqlPago & ") as Pago From TblCobranca where status = 'naopago'"

rst1.Open sSql, Conexao, 3
lblNaopago.Caption = rst1!naopago
Rst1.Close

rst1.Open SqlPago, Conexao, 3
lblPago.Caption = rst1!pago
Rst1.Close

rst1.Open SqlAberto, Conexao, 3
lblAberto.Caption = rst1!aberto
rst1.Close

End Function

USUARIO.EXCLUIDOS 13/04/2007 13:49:42
#211743
Citação:

LIONHEART escreveu:
Matioli, matou mais errou rs!

Vc esqueceu de abrir as 3 conexoes ...



ai ai ai...

Leia direito meu código, eu embuti as três querys numa só, fazendo subquerys, repare que junto tudo na sSql, mas o GROUP BY também é uma boa RXGOMES, só que tem que ser feito da seguinte forma:

Function Buscar()
Set rst1 = New ADODB.Recordset
sSql = "Select count(*) As Total, status From TblCobranca GROUP BY status"
rst1.Open sSql, Conexao, 3
Do While Not rst1.EOF
Select Case LCase(rst1("status"))
Case "aberto"
lblAberto.Caption = rst1("Total")
Case "pago"
lblPago.Caption = rst1("Total")
Case "naopago"
lblAberto.Caption = rst1("Total")
End Select

rst1.MoveNext
Loop
rst1.Close
End Function
LUIS.HERRERA 13/04/2007 16:51:05
#211801
Resposta escolhida
Lion brincadeira!

Você pediu e o Matioli atendeu, ou seja, agora Matou e Mostrou o PAU, digo explicou o código que já tinha mostrado.

Brincadeira Lion

Matioli

Galera Sem [S24] (Gostei desses bonequinhos novos).
USUARIO.EXCLUIDOS 13/04/2007 18:23:48
#211832
Eu falo, nesse VBM só tem loco...[S20]
Tópico encerrado , respostas não são mais permitidas