А чем тебе сохранение из, что там у тебя используется, ADOQuery/ADOTable не устраивает? DBGrid действительно только отображает данные. В принципе, можно добраться и до данных в самом DBGrid, но, как мне кажется, это бестолковое занятие, все-равно доступ к данным идет через какой-то DataSet компонент, вот из него и надо сохранять.
По поводу самого сохранения, нужно понимать что надо сохранять и в каком формате. И как сконфигурирован компонент доступа к данным (есть ли скрытые поля и надо ли их сохранять,нужен ли заголовок с именами колонок и надо ли использовать имена полей или названия и т.д.)
Простой пример:
Код:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | 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 файл будет некорректным.