|
|
|
перехват сообщений MS Access при закрытии отчета
|
|||
|---|---|---|---|
|
#18+
Такая проблема. К примеру, есть шаблон отчета, который, программно, открывается в режиме конструктора, и в него добавляются несколько объектов (в зависимости от SQL запроса), далее отчет переходит в состояние предварительного просмотра. И уже с ним работает пользователь. Но при закрытии отчета MS Access выбрасывает диалоговое окно о сохранении изменений в отчете. Так вот, каким образом перехватить это событие и подставить свое (к примеру, команду DoCmd.Close acReport, Me.Name, acSaveNo). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2002, 02:55 |
|
||
|
перехват сообщений MS Access при закрытии отчета
|
|||
|---|---|---|---|
|
#18+
Вообще эта команда называется DoCmd.Save А вот интересный у тебя рапорт... может опишешь технологию по подробнее, а то очень интересно зачем програмно отчет открывать в режиме конструктора??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2002, 08:41 |
|
||
|
перехват сообщений MS Access при закрытии отчета
|
|||
|---|---|---|---|
|
#18+
Ой!!! надо чтобы SaveNo, тогда не знаю... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2002, 08:54 |
|
||
|
перехват сообщений MS Access при закрытии отчета
|
|||
|---|---|---|---|
|
#18+
Держи код, но это сырой вариант, его еще потом надо переписать в виде функций, да и к тому же поля в БД надо человеческие сделать. To_boar@takas.lt Sub NewControls() Dim strSQL, frm As String Dim ctlLabel As Control, ctlText As Control Dim God, kod As String Dim intLabelX, i As Integer, intLabelY As Integer Dim c As Recordset Dim dbs As Database ' часть где происходит подготовка даннвых для запроса и его непосредственное выполнение в памяти God = CStr([Forms]![Отчеты]![ПолеСоСписком81]) kod = CStr([Forms]![Отчеты]![Надпись80].[Caption]) Set dbs = CurrentDb strSQL = "SELECT [Ограждения первой группы].Тип_ограждения, Sum([Ограждения первой группы]![Конец_участка(км)]-[Ограждения первой группы]![Начало_участка(км)]) AS dl FROM [Ограждения первой группы]GROUP BY [Ограждения первой группы].Тип_ограждения, [Ограждения первой группы].годучета, [Ограждения первой группы].кодсвязи HAVING ((([Ограждения первой группы].годучета)=" + God + ") AND (([Ограждения первой группы].кодсвязи)=" + kod + "))" Set c = dbs.OpenRecordset(strSQL) ' открывает отчет в режиме конструктора :) frm = "Ведомость Ограждение первой группы" DoCmd.OpenReport frm, acViewDesign intLabelX = 1000: intLabelY = 100 'создает объект в отчете Set ctlText = CreateReportControl(frm, acLabel, acFooter, "", "x1", intLabelX, intLabelY): intLabelY = intLabelY + 300 ctlText.Width = 1500: ctlText.Height = 300: ctlText.FontWeight = 700: ctlText.Caption = "Итого, км:": ctlText.TextAlign = 1 ' Создает в области примечание acFooter Label стандартных размеров. c.MoveFirst: i = 1 Do While Not c.EOF With c Set ctlLabel = CreateReportControl(frm, acLabel, acFooter, "", "", intLabelX, intLabelY) ctlLabel.Name = "xx_" + CStr(i): ctlLabel.Caption = .Fields(0) + " :" ctlLabel.Width = 1500: ctlLabel.Height = 300: ctlLabel.FontWeight = 700 Set ctlText = CreateReportControl(frm, acLabel, acFooter, "", "", intLabelX + 2500, intLabelY) ctlText.Name = "xx" + CStr(i): ctlText.Caption = Format(.Fields(1), "##0.000") ctlText.Width = 1500: ctlText.Height = 300: ctlText.FontWeight = 700 End With c.MoveNext: i = i + 1: intLabelY = intLabelY + 300 Loop ' Восстанавливает окно формы. DoCmd.Restore: c.Close: Set c = Nothing dbs.Close: Set dbs = Nothing ' открывает отчет в режиме предварительного просмотра:) DoCmd.OpenReport frm, acViewPreview End Sub ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2002, 09:47 |
|
||
|
перехват сообщений MS Access при закрытии отчета
|
|||
|---|---|---|---|
|
#18+
Держи код, но это сырой вариант, его еще потом надо переписать в виде функций, да и к тому же поля в БД надо человеческие сделать. To_boar@takas.lt Sub NewControls() Dim strSQL, frm As String Dim ctlLabel As Control, ctlText As Control Dim God, kod As String Dim intLabelX, i As Integer, intLabelY As Integer Dim c As Recordset Dim dbs As Database ' часть где происходит подготовка даннвых для запроса и его непосредственное выполнение в памяти God = CStr([Forms]![Отчеты]![ПолеСоСписком81]) kod = CStr([Forms]![Отчеты]![Надпись80].[Caption]) Set dbs = CurrentDb strSQL = "SELECT [Ограждения первой группы].Тип_ограждения, Sum([Ограждения первой группы]![Конец_участка(км)]-[Ограждения первой группы]![Начало_участка(км)]) AS dl FROM [Ограждения первой группы]GROUP BY [Ограждения первой группы].Тип_ограждения, [Ограждения первой группы].годучета, [Ограждения первой группы].кодсвязи HAVING ((([Ограждения первой группы].годучета)=" + God + ") AND (([Ограждения первой группы].кодсвязи)=" + kod + "))" Set c = dbs.OpenRecordset(strSQL) ' открывает отчет в режиме конструктора :) frm = "Ведомость Ограждение первой группы" DoCmd.OpenReport frm, acViewDesign intLabelX = 1000: intLabelY = 100 'создает объект в отчете Set ctlText = CreateReportControl(frm, acLabel, acFooter, "", "x1", intLabelX, intLabelY): intLabelY = intLabelY + 300 ctlText.Width = 1500: ctlText.Height = 300: ctlText.FontWeight = 700: ctlText.Caption = "Итого, км:": ctlText.TextAlign = 1 ' Создает в области примечание acFooter Label стандартных размеров. c.MoveFirst: i = 1 Do While Not c.EOF With c Set ctlLabel = CreateReportControl(frm, acLabel, acFooter, "", "", intLabelX, intLabelY) ctlLabel.Name = "xx_" + CStr(i): ctlLabel.Caption = .Fields(0) + " :" ctlLabel.Width = 1500: ctlLabel.Height = 300: ctlLabel.FontWeight = 700 Set ctlText = CreateReportControl(frm, acLabel, acFooter, "", "", intLabelX + 2500, intLabelY) ctlText.Name = "xx" + CStr(i): ctlText.Caption = Format(.Fields(1), "##0.000") ctlText.Width = 1500: ctlText.Height = 300: ctlText.FontWeight = 700 End With c.MoveNext: i = i + 1: intLabelY = intLabelY + 300 Loop ' Восстанавливает окно формы. DoCmd.Restore: c.Close: Set c = Nothing dbs.Close: Set dbs = Nothing ' открывает отчет в режиме предварительного просмотра:) DoCmd.OpenReport frm, acViewPreview End Sub ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2002, 09:48 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32071133&tid=1682890]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
165ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
2ms |
| others: | 14ms |
| total: | 277ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...