Exporting information from the customer directory to a file

Material from ADGroupWiki
Go to navigation Go to search

Пример получения информации о заказчиках с выгрузкой результатов в файл.

uses                                                                                            
 SysUtils, Classes;

const
  delim = '|'; // разделитель данных в строке
//  nl = #$0D#$0A; // признак конца строки
 
procedure SaveClientsInfoToFile(fn: string);
// процедура выгружает информацию о клиентах во внешний файл
var
  f: TStringStream; // поток для выгрузки во внешний файл
  line, pass, dealer_code, nl: string;
  i: integer;
  client: TZakazchikItem; // клиент
begin
  nl := Chr(13) + Chr(10); 
  
  f := TStringStream.Create; // создаем поток для выгрузки данных
  line := 'id'+delim+'code'+delim+'city'+delim+'phone'+delim+'email'+delim+'pass'+delim+'direction'+delim+'type'+delim+'region'+nl;
  // формируем заголовок (для понимания какие данные в колонке)
  f.WriteString(line); // пишем заголовок в поток 

  for i:=0 to gd.Zakazchik.Items.Count-1 do // проходимся по всем клиентам    
  begin                                         
    pass := ; // обнуляем значения пароля
    dealer_code := ; // и кода дилера
                                 
    client := gd.Zakazchik.Items.GetByNum(i); // получаем информацию о клиенте
       
    if client.Typ = 2 then // если клиент - дилер
    begin                  
      pass := client.Param2.GetDealerPass(gd.GlobalPar.DealerDatabaseId); // достаем его пароль
      dealer_code := client.Param2.FDealerCode; // читаем значение кода дилера
    end;
    
    line := // формируем поля для отображения (последовательность должна соответствовать перечислению в заголовке!)
      IntToStr(client.Id) + delim +              
      dealer_code + delim +  
      client.City + delim +
      client.Tel + delim +
      client.Email + delim +
      pass + delim +
      client.Napr + delim +
      IntToStr(client.Typ) + delim +
      client.Oblast +                 
      nl; 

    f.WriteString(line); // пишем информацию о клиенте в поток
  end;
  
  f.SaveToFile(fn); // сохраняем поток в файл
  f.Free; // освобождаем поток
end;

begin
  SaveClientsInfoToFile('clients.txt');  
end;