none
Erro usando o SELECT COUNT (*) RRS feed

  • Pergunta

  • Olá pessoal, 
    Estou com um problema no COUNT no vb. Quero apresentar em um label o total de funcionários. Porém, o resultado aparece sempre -1. 
    Criei uma função em uma classe e chamei essa função no label. 
    Essa função é a seguinte: 

    Public Function TotFunc() As Double 
    Dim dados As New OleDb.OleDbCommand 
    Dim resp As OleDb.OleDbDataReader 
    Dim tot As Integer = 0 
    Try 
    Conectar() 
    With dados 
    .CommandText = "SELECT COUNT(*) FROM tb_Funcionarios" 
    .CommandTimeout = 10000 
    .CommandType = CommandType.Text 
    .Connection = objCon 
    End With 
    Try 
    resp = dados.ExecuteReader 
    Return True 
    Catch ex As Exception 
    MessageBox.Show("Erro ao procurar o total de funcionários.", "", MessageBoxButtons.OK, MessageBoxIcon.Error) 
    Return False 
    Finally 
    Desconectar() 
    End Try 
    Catch ex As Exception 
    MessageBox.Show("Ocorreu um erro na conexão.", "", MessageBoxButtons.OK, MessageBoxIcon.Error) 
    Return False 
    End Try 
    End Function 

    Alguém poderia me ajudar? Obrigado !

    terça-feira, 1 de fevereiro de 2011 00:05

Respostas

  • Olá

    Como você precisa retornar apenas um único valor da consulta, não precisa utilizar o OleDb.OleDbDataReader, use apenas o Command, desta forma:

    dim totalFuncionarios As Integer
    ...
    totalFuncionarios = dados.ExecuteScalar
    ...

    Att.


    Lucas
    • Sugerido como Resposta Rodrigo Sória terça-feira, 1 de fevereiro de 2011 05:45
    • Marcado como Resposta Eder CostaModerator quinta-feira, 3 de fevereiro de 2011 17:16
    terça-feira, 1 de fevereiro de 2011 02:10
  • Ou então retornar resp(0)

    Ex.:

    resp = dados.ExecuteReader 
    Return resp(0)
    

    Att. Osni
    terça-feira, 1 de fevereiro de 2011 12:33

Todas as Respostas

  • Olá

    Como você precisa retornar apenas um único valor da consulta, não precisa utilizar o OleDb.OleDbDataReader, use apenas o Command, desta forma:

    dim totalFuncionarios As Integer
    ...
    totalFuncionarios = dados.ExecuteScalar
    ...

    Att.


    Lucas
    • Sugerido como Resposta Rodrigo Sória terça-feira, 1 de fevereiro de 2011 05:45
    • Marcado como Resposta Eder CostaModerator quinta-feira, 3 de fevereiro de 2011 17:16
    terça-feira, 1 de fevereiro de 2011 02:10
  • Ou então retornar resp(0)

    Ex.:

    resp = dados.ExecuteReader 
    Return resp(0)
    

    Att. Osni
    terça-feira, 1 de fevereiro de 2011 12:33