А чем тебе сохранение из, что там у тебя используется, ADOQuery/ADOTable не устраивает? DBGrid действительно только отображает данные. В принципе, можно добраться и до данных в самом DBGrid, но, как мне кажется, это бестолковое занятие, все-равно доступ к данным идет через какой-то DataSet компонент, вот из него и надо сохранять.
По поводу самого сохранения, нужно понимать что надо сохранять и в каком формате. И как сконфигурирован компонент доступа к данным (есть ли скрытые поля и надо ли их сохранять,нужен ли заголовок с именами колонок и надо ли использовать имена полей или названия и т.д.)
Простой пример:
	Код:
	var
  sl : TStringList;
  I : Integer;
  S : String;
begin
  sl := TStringList.Create;
  try
    MyAdoQuery.First;
    While Not MyAdoQuery.Eof Do
      begin
        S := '';
        For I := 0 To MyAdoQuery.Fields.Count-1 Do
          begin
            S := S + MyAdoQuery.Fields[i].AsString;
            If I < MyAdoQuery.Fields.Count-1 then S := S + ',';
          end;
        sl.Add(S);
        MyAdoQuery.Next;
      end;
    sl.SaveToFile('export.csv');
  finally
    sl.Free;
  end;
end; 
 
Это без проверок - в случае наличия запятой или двойных кавычек в поле сгенерированный csv файл будет некорректным.