Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: vbaAccsess+Word
 
 автор: alecks_lp   (29.01.2009 в 10:30)   личное сообщение
 
 

Исходные данные: 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.

  Ответить  
 
 автор: osmor   (29.01.2009 в 11:21)   личное сообщение
 
 

можно попробовать выделить все методами подчиненной форма
SelLeft
SelWidth
SelTop
SelHeight

т.е.
me.[подчиненная].form.SelLeft = 1
me.[подчиненная].form.SelWidth = 30
me.[подчиненная].form.SelTop = 1
me.[подчиненная].form.SelHeight= 500

потому что DoCmd.RunCommand acCmdSelectAll вроде только в главной форме пытается работать.

  Ответить  
 
 автор: alecks_lp   (29.01.2009 в 12:14)   личное сообщение
 
 


потому что DoCmd.RunCommand acCmdSelectAll вроде только в главной форме пытается работать.

- и если в клавной записей нет, то выдаёт ашипку
- попробую

  Ответить  
 
 автор: alecks_lp   (29.01.2009 в 14:27)   личное сообщение
 
 

вот это проходит

                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

пришлось блокировку с контролов формы убрать

  Ответить  
 
 автор: alecks_lp   (29.01.2009 в 17:04)   личное сообщение
 
 

А не так всё просто. Если первый столбец табличной формы скрыт, а так часто бывает, то не проходит

                frm.SelTop = 1
                frm.SelLeft = 1 

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList