Boa noite!
Me desculpe, não sou expert, mas apesar do título, você não está
usando o ClientDataSet para efetuar a consulta, e sim, o SqlDataSet e
no ClientDataSet você está apenas exibindo o resultado desta consulta.
Acontece que o SqlDataSet é um componente Unidirecional, não sendo
possível navegar pelos registros, então você deve fazer o seguinte:
SqlDataSet->DataSetProvider->ClientDataSet-DataSource
Na propriedade Options do DataSetProvider deve ser habilitada a opção
AllowCommandText, e a consulta deve ser realizada no ClientDataSet que
é Bidirecional, que no seu caso ficaria mais ou menos assim:
procedure TfrmAgenda.Calendario;
begin
mostraData := FormatDateTime('dd-mm-', MonthCalendar1.Date);
mostraRegiao := ComboBox1.Text;
cdsConAgenda.Close;
cdsConAgenda.CommandText := '';//esta linha é desnessária, mas uso
por hábito
cdsConAgenda.CommandText := 'SELECT a.hora FROM calendario a INNER
JOIN '+
'calendario b ON a.controle = b.controle where b.dataagenda = '+
+ FoematDateTime('dd-mm-', MonthCalendar1.Date) + ''' and ' +
' b.zonaatuacao = ''' + ComboBox1.Text + ;
cdsConAgenda.Open;
end;
Espero ter ajudado, mas qualquer dúvida, estamos ai!
Fraterno abraço,
Carlos