Показать сообщение отдельно
  #2  
Старый 02.04.2024, 20:46
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,025
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

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