А чем тебе сохранение из, что там у тебя используется, 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 файл будет некорректным.