|
|
|
| Исходные данные: xp SP3, Access 2003, клиент .mde, таблицы на server2000, объект табличная форма подгружается рекордсетом
Задача: вывод на печать строк(всех или выбранных) подчинённой формы
Решение: печать в Word
Проблема: если пользователь не выбрал ни одной строки, то попытка программно выделить все строки приводит к ошибке 2046 "Команда или макрокоманда (Выделить всё) в данное время недоступна"
Код :
Result = Me.subForm1.Form.SelHeight
If Result = 0 Then
'Если ни одной записи не выделено, попытаться напечатать все записи
' SendKeys "^a"
DoCmd.RunCommand acCmdSelectAll
If MsgBox("Напечатать все записи?", vbOKCancel, "") = vbCancel Then Exit Function
End If
DoCmd.RunCommand acCmdCopy
Set objWord = CreateObject("Word.Application")
objWord.Documents.Add DocumentType:=wdNewBlankDocument
Set objWindow = objWord.ActiveDocument.ActiveWindow
objWindow.Activate
objWindow.WindowState = wdWindowStateMaximize
objWord.WindowState = wdWindowStateMaximize
objWord.Selection.TypeText Text:="Список событий: "
objWord.Selection.TypeParagraph
objWord.Selection.PasteAndFormat (wdPasteDefault)
objWord.Visible = True
|
Стандартную кнопку меню "Выделить все" я на панель формы повесил и работает, но хотелось бы побороть vba. | |
|
| |
|
|
|
| можно попробовать выделить все методами подчиненной форма
SelLeft
SelWidth
SelTop
SelHeight
т.е.
me.[подчиненная].form.SelLeft = 1
me.[подчиненная].form.SelWidth = 30
me.[подчиненная].form.SelTop = 1
me.[подчиненная].form.SelHeight= 500
|
потому что DoCmd.RunCommand acCmdSelectAll вроде только в главной форме пытается работать. | |
|
| |
|
|
|
|
потому что DoCmd.RunCommand acCmdSelectAll вроде только в главной форме пытается работать.
|
- и если в клавной записей нет, то выдаёт ашипку
- попробую | |
|
| |
|
|
|
| вот это проходит
Set frm = Me.subForm1.Form
frm.SelTop = 1
frm.SelLeft = 1
frm.SelHeight = frm.RecordsetClone.RecordCount
frm.SelWidth = frm.RecordsetClone.Fields.Count
--------------------------------------------------------------------
frm.SelHeight = 0
|
пришлось блокировку с контролов формы убрать
| |
|
| |
|
|
|
| А не так всё просто. Если первый столбец табличной формы скрыт, а так часто бывает, то не проходит
frm.SelTop = 1
frm.SelLeft = 1
|
| |
|
| |