VER TOTAL DE REGISTRO DO SELECT

F001E 18/02/2013 11:57:33
#419264
Bom dia a Todos....
Tenho esse Código do Anexo, funciona certo, mas eu queria que o Reader me mostrasse quantos Registro tem o Select para eu jogar o total desses Registro no Bar.Properties.Maximum.
Tipo Bar.Properties.Maximum = reader.RowCount....
Mas reader.RowCount não existe...alguem tem uma ideia ?
JABA 18/02/2013 12:10:24
#419268
int TotalRegistros = oCMD.ExecuteNonQuery
RXGOMES 18/02/2013 12:10:30
#419269
Basta colocar a função count no select

[Ô]Select count(historico) contador, histico ....
JABA 18/02/2013 12:22:11
#419270
string SQL = [Ô]SELECT COUNT(*) as Counter FROM Table; SELECT * FROM Table[Ô];
SqlCommand Cmd = new SqlCommand( SQL, Conn);
SqlDataReader RS = Cmd.ExecuteReader();
int iCount = (int)RS[[Ô]Counter[Ô]];
RS.NextResult();
while( RS.Read() ){
// seu codigo
}
F001E 18/02/2013 14:56:17
#419285
Então....nenhum desses deu certo não...
AJSO 18/02/2013 17:51:38
#419305
Caro F001E

tenta isso.................


DataTable dt = new DataTable();
dt.Load(reader);
//int numRows= dt.Rows.Count;
Bar.Properties.Maximum = dt.Rows.Count;

Boa Sorte
LITTLEBOY 18/02/2013 18:35:38
#419309
Resposta escolhida
Se você carregar um dataset em vez de um Reader você conseguirá obter o numero de linhas antes do [Ô]While[Ô]
aqui há um trecho de codigo que uso:
Citação:


var objCmd = new SqlCommand(strSql, objConn) { CommandType = CommandType.StoredProcedure };
var objDta = new SqlDataAdapter(objCmd);
var Ds = new DataSet();

objDta.Fill(Ds, strTbName);


var dt= Ds.Tables[strTbName];
Bar.Properties.Maximum=dt.Rows.Count;
// em vez de usar um laço while use foreach
foreach (DataRow drow in dt.Rows)
{
ObjGRUPO.DATA_CADASTRO=Convert.ToDateTime(drow[[Ô]DATA_CADASTRO[Ô]]);

}


desta maneira acho mais produtivo para você. qualquer duvida estamos ai.
F001E 19/02/2013 10:53:13
#419339
LITTLEBOY...desse jeito q vc montou é mais produtivo mesmo...ficou melhor....e também resolveu um problema q esta tento com o DataReader...
Valews....
Tópico encerrado , respostas não são mais permitidas