Показать сообщение отдельно
  #1  
Старый 22.11.2010, 10:57
SpecDrum SpecDrum вне форума
Прохожий
 
Регистрация: 22.11.2010
Сообщения: 1
Репутация: 10
По умолчанию Экспорт отчета в Excel

Здравствуйте, уважаемые эксперты!
Используется Delphi 7 + база Access. Помогите пожалуйста, уже замучился.
Необходимо программно вывести отчет по запросу в Excel, при этом в запросе выборка идет по введенному пользователем параметру. Как это реализовать? Неужели выводить построчно записи на лист Excel?
В Access есть функция экспорта отчета в Excel, но никак не удается ее использовать, чтобы все работало правильно. Нужно, чтобы стандартный Access'овский диалог ввода параметра запроса не появлялся, потому что значение параметра устанавливается созданным мной в Delphi диалогом.
Отчет называется Employees, в базе он уже создан и настроен, и работает. Дело в том, что в Access мне удавалось решить эту задачу при помощи VBA, даже несколькими способами, но при использование этих инструкций в Delphi приводило к различным ошибкам.
Как решить проблему? Буду очень благодарен любой помощи!

Процедура экспорта в Excel, но при ее использовании помимо вывода моего диалога, также после него появляется стандартный диалог Access с запросом ввода того же параметра.
Код:
procedure TEmployeeIDReportDialog.EmployeeIDReportExport;
// формирование отчета по таб. номеру и экспорт в Excel
var
  AccessApp: _Application;
  EmployeeIDExportFileName: String;
begin
  EmployeeIDExportFileName := ExtractFilePath(paramstr(0)) + 'Отчет по таб. номеру ' + IntToStr(EmployeeIDReportDialog.EmployeeID) + '.xls';
  try
    AccessApp := CoAccessApplication.Create;
    if AccessApp.Version >= '11' then
       AccessApp.AutomationSecurity := 1;  //1 = msoAutomationSecurityLow
    AccessApp.OpenCurrentDatabase(ExtractFilePath(paramstr(0)) + '\Permits.mdb', False, MainForm.DBPass);
    AccessApp.DoCmd.OutputTo(acReport, 'Employees', 'Microsoft Excel (*.xls)',
          EmployeeIDExportFileName, True, '', 0);
  finally
    AccessApp.CloseCurrentDatabase;
    AccessApp.Quit(acQuitSaveNone);
  end;
end;
Admin: Пользуемся тегами!
Ответить с цитированием