Supongamos que el Edit donde pones la fecha es "Fecha"
Código:
Query1.SQL.Add('select SUM (costo)');
Query1.SQL.Add('from tutabla');
Query1.SQL.Add('where fecha=:f');
Query.ParamByName('f').AsDateTime := StrToDate(Fecha.Text);
Query.Open;
Si en lugar de utilizar un TEdit utilizas un componente de fechas estilo al TDateTimePicker o TDateEdit (de las RX y que personalmente me gusta más), la asignación sería algo así
Código:
Query.ParamByName('f').AsDateTime := Fecha.Date;
Para el tema de coger un rango de fechas, utiliza el
between dentro de la consulta SQL
Código:
Query1.SQL.Add('select SUM (costo)');
Query1.SQL.Add('from tutabla');
Query1.SQL.Add('where fecha between :fini and :ffin');
Query.ParamByName('f').AsDateTime := StrToDate(FechaIni.Text);
Query.ParamByName('f').AsDateTime := StrToDate(FechaFin.Text);
Query.Open;
Por cierto, los parámetros también puedes escribirlos directamente en la consulta SQL
Código:
Query1.SQL.Add('select SUM (costo)');
Query1.SQL.Add('from tutabla');
Query1.SQL.Add('where fecha =' +
QuotedStr(FormatDateTime('mm/dd/yyyy', FechaIni.Date)));
Tu eliges el método, pero yo suelo utilizar el primero para evitar esas transformaciones de fecha,....
Para el tema de visualizarlo en un TDbGrid, éste tiene la propiedad Datasource donde le puedes asignar un TDataSource, el cual, a su vez tiene la propiedad Dataset a la que le puedes asignar el TQuery (o el componente que utilices para lanzar SQLs)