Опять та же ошибка. Какая разница что попадает в текст запроса: имя функции или имя переменной - результат будет один - нулевой.
Нулевым результат будет еще и потому, что с ADOQuery так не поступают.
После присвоения текста запроса квери надо открыть (потом не забыть закрыть) и взять из него значение:
Код:
Form4.ADOQuery1.SQL.Text := 'select count(*) as Cnt from chitateli where [datereg]="'+daten+'"';
Form4.ADOQuery1.Open;
Cells[i, 1] := Form4.ADOQuery1. FieldValues['Cnt'];
Form4.ADOQuery1.Close;