Hombre, 5 horas no es mucho desde que pusiste el original.
La base de datos dices ser SQL, pero no dices cual
En todo caso, el RecordCount no suele estar implementado en tablas SQL, ya que es costoso averiguar los datos.
Si no hay registros en un rango de fechas, no suele dar error nada, simplemente se muestra vacía la consulta. "DataSetrepofechas.IsEmpty" es true y puedes informar al usuario de que la consulta no devolvió datos, por ende, no es necesario ver el informe ni su presentación preliminar.
Deberías plantearlo así:
Código Delphi
[-]
PathBD := ExtractFilePath(Application.ExeName);
CadenaConexion := 'Provider=SQLOLEDB.1;Password=center;Persist Security '+
'Info=True;User ID=center;Initial Catalog=CE;Data Source=jocey';
DataSetrepofechas.ConnectionString := CadenaConexion;
DataSetrepofechas.CommandText := 'select * from principal WHERE Fecha_Inicio Between :dia1 and :dia2';
DataSetrepofechas.Parameters.Parambyname('dia1').Value := datetimepicker1.date;
DataSetrepofechas.Parameters.Parambyname('dia2').Value := datetimepicker2.date;
DataSetrepofechas.Open;
if DataSetrepofechas.IsEmpty then
begin
ShowMessage('No hay registros ')
end
else
begin
textcurso.Caption := DataSetrepofechas.fieldbyname('Nombre_Curso').value;
textlugar.Caption := DataSetrepofechas.fieldbyname('Lugar_Ejecucion').value;
textcliente.Caption := DataSetrepofechas.fieldbyname('Cliente').value;
textcontrato.Caption := DataSetrepofechas.fieldbyname('No_Contrato').value;
textfecha.Caption := DataSetrepofechas.fieldbyname('Fecha_Inicio').value;
textestado.Caption := DataSetrepofechas.fieldbyname('Estado_Curso').value;
textdias.Caption := DataSetrepofechas.fieldbyname('dias').value;
formrefechas.QuickRep1.Preview;
DataSetrepofechas.Last;
DataSetrepofechas.Close;
end;
end;
end;
Así no tendrás tampoco problemas de formatos de fecha dd/mm/yyyy o mm/dd/yyyy etc.
Saludos