|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Экспорт отчета в 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, 22.11.2010 в 11:02. |
#2
|
||||
|
||||
Если мне не изменяет память то к экселю можно подключиться как в бд (через адо например). Ну и значит делаем select к базе аксесса и потом insert в бд(эксель). думаю прокатит
Последний раз редактировалось Admin, Сегодня в 10:32. |