One way to do it is to put in a return field which counts the records that are returned. For instance add Count(FIeldName) As RowsAffected as one of your fields. This will however return an extra field for each row, which may not be a good idea. The reason there is no way for the datareader to know how may rows are returned is that it is still connected to the data and not all rows are retrieved yet. You could count the rows as you use them, through a loop, or if you bind them to a control, count them that way. hope this helps, sivilian