Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Печать отчёта [D7, XP]


Washington ©   (2007-03-05 19:07:00) 

Ситуация такая. Имеется отчёт в БД Access. С помощью Delphi (вернее, программы созданной в Delphi) надо открыть этот отчёт и отправить на печать.


UMU   (2007-03-07 19:11:00) [1]

Washington, проверь e-mail, там пример.


Washington   (2007-03-07 13:07:00) [2]

Нет, уже не Invalid variant operation. Теперь операция не доступна.


Washington   (2007-03-07 12:49:00) [3]

Библиотеку ComObj подключил. Теперь говорит Invalid variant operation.
конечно есть. А если какое-то очередное извращение, устанавливающееся отдельно, то хто его знает. А справку я даже на великом и могучем читал. Вроде всё правильно. Ничо нового там нет.


UMU   (2007-03-07 10:30:00) [4]


> В чём ошибка?


попробуй подключить библиотеку ComObj


Сергей М.   (2007-03-06 15:23:00) [5]


> Washington   (06.03.07 14:41) [3]


БДAccess и ПриложениеMSAccess - вовсе не одно и тоже.

Разницу осюсяешь ?

ПриложениеMSAccess присутствует на данной машине ?


Плохиш   (2007-03-06 15:10:00) [6]


> Washington   (06.03.07 14:41) [3]


> В чём ошибка?

В нежелании пользоваться прилагаемой к делфи справкой.


Washington   (2007-03-06 14:41:00) [7]

Попробовал так. Вроде всё бы нормально, но функции GetActiveOleObject и CreateOleObject ему не нравятся. Говорит Undeclared identifier. В var'е всё замётано. В чём ошибка?


UMU   (2007-03-05 21:12:00) [8]

var
 Access: Variant;
begin
 // Открываем Access
 try
   Access := GetActiveOleObject('Access.Application');
 except
   Access := CreateOleObject('Access.Application');
 end;
 Access.Visible := True;

 // Открываем базу данных
 // Второй параметр указывает - будет ли база открыта в Exclusive режиме
 Access.OpenCurrentDatabase('C:\My Documents\Books.mdb', True);

 // открываем отч¸т
 {Значение второго пораметра может быть одним из следующих
 acViewDesign, acViewNormal, or acViewPreview. acViewNormal,
 которые устанавливаются по умолчанию, для печати отч¸та.
 Если Вы не используете библиотеку типов, то можете определить
 эти значения следующими:

 const
 acViewNormal = $00000000;
 acViewDesign = $00000001;
 acViewPreview = $00000002;

 Третий параметр - это имя очереди для текущей базы данных.
 Четв¸ртый параметр - это строка для SQL-евского WHERE -
 то есть строка SQL, минус WHERE.}

 Access.DoCmd.OpenReport('Titles by Author', acViewPreview, EmptyParam,
   EmptyParam);

 < ... >

 // Закрываем базу данных
 Access.CloseCurrentDatabase;

 // Закрываем Access
 {const
 acQuitPrompt = $00000000;
 acQuitSaveAll = $00000001;
 acQuitSaveNone = $00000002;}
 Access.Quit(acQuitSaveAll);
end;


торможу 8-)


UMU   (2007-03-05 21:11:00) [9]

попробуй вот так:


> var
>   Access: Variant;
> begin
>   // Открываем Access
>   try
>     Access := GetActiveOleObject('Access.Application');
>   except
>     Access := CreateOleObject('Access.Application');
>   end;
>   Access.Visible := True;
>
>   // Открываем базу данных
>   // Второй параметр указывает - будет ли база открыта в
> Exclusive режиме
>   Access.OpenCurrentDatabase('C:\My Documents\Books.mdb',
>  True);
>
>   // открываем отч¸т
>   {Значение второго пораметра может быть одним из следующих
>   acViewDesign, acViewNormal, or acViewPreview. acViewNormal,
>
>   которые устанавливаются по умолчанию, для печати отч¸та.
>
>   Если Вы не используете библиотеку типов, то можете определить
>   эти значения следующими:
>
>   const
>   acViewNormal = $00000000;
>   acViewDesign = $00000001;
>   acViewPreview = $00000002;
>
>   Третий параметр - это имя очереди для текущей базы данных.
>
>   Четв¸ртый параметр - это строка для SQL-евского WHERE
> -
>   то есть строка SQL, минус WHERE.}
>
>   Access.DoCmd.OpenReport('Titles by Author', acViewPreview,
>  EmptyParam,
>     EmptyParam);
>
>   < ... >
>
>   // Закрываем базу данных
>   Access.CloseCurrentDatabase;
>
>   // Закрываем Access
>   {const
>   acQuitPrompt = $00000000;
>   acQuitSaveAll = $00000001;
>   acQuitSaveNone = $00000002;}
>   Access.Quit(acQuitSaveAll);
> end;


Наверх

Титульная страница Поиск, карта сайта Написать письмо