Открытие таблицы (удаленной базы)

Ммихалыч
Дата: 29.11.2006 20:37:15
Блин вроде, простой пример и не канает ни фига (прям беда какая-то), может поможет кто...

Sub OpenTable()
  Dim objAccess As Access.Application
  Set objAccess = New Access.Application
  Const PATH As String = "C:\"
  
    objAccess.OpenCurrentDatabase PATH & "123.mdb"
    objAccess.DoCmd.OpenTable "Alphabetical_Output"
    
    'objAccess.DoCmd.CloseTable "Alphabetical_Output"
  
End Sub


Sub OpenTable()

Dim appAccess As New Access.Application
    Dim strDB As String

    ' Initialize string to database path.
    Const strConPathToSamples = "C:\"

    strDB = strConPathToSamples & "123.mdb"
    ' Create new instance of Microsoft Access.
    Set appAccess = _
        CreateObject("Access.Application")
    ' Open database in Microsoft Access window.
    
    With appAccess
    
    .OpenCurrentDatabase strDB
 
   .DoCmd.openTable "Alphabetical_Output"
   
   End With
End Sub


Вобщем оба метода открывают другую базу, а открыть таблицу или любой другой объект не получается, при нажатии кнопки открыть (в проверке безопасности) приложение закрывается...
Может подскажет кто другой метод открытия объектов удаленной базы ?
Karfaqen
Дата: 29.11.2006 21:30:33
Поставьте Msgbox перед выходом из вашей функции и вы обнаружите и открытый вами второй Access и открытую в нем таблицу - если конечно сделаете перед этим objAccess.Visible=True ;)

Ммихалыч
при нажатии кнопки открыть (в проверке безопасности) приложение закрывается...
Оно закрывается у вас не при нажатии кнопки открыть, а позже - при выходе из вашей процедуры OpenTable, ибо в этот момент уничтожаются локальные переменные этой процедуры - в том числе и объявленная там Dim objAccess As Access.Application - со всеми ее потрохами.
Ммихалыч
Дата: 17.12.2006 00:37:09
схожий вопрос, как активировать загруженный объект в базе. (для активной базы)

Пробую вот так и чего-то "визибл" ему не нравится :(

Private Sub aaaé()
Dim objAccess As Access.Application
Dim intAnswer As Integer
Set objAccess = CurrentProject.Application
objAccess.Visible = True
intAnswer = MsgBox("Îòêðûòü òàáëèöó Alphabetical_Output?", vbYesNo + vbQuestion)
    Select Case intAnswer
        Case vbYes
            With objAccess
            DoCmd.OpenTable "Alphabetical_Output", acViewNormal
             '.Visible = True
            DoCmd.SelectObject acTable, "Alphabetical_Output", True
            End With
Владимир Саныч
Дата: 17.12.2006 00:43:09
Ммихалыч
With objAccess
...
'.Visible = True

Это то же самое, что
objAccess.Visible = True
Один раз эта команда уже была (несколькими строчками выше). Зачем она тут еще раз?

Ммихалыч
DoCmd.SelectObject acTable, "Alphabetical_Output", True

Посмотрите по хелпу, что обозначает True в третьем параметре команды SelectObject.
Ммихалыч
Дата: 19.12.2006 17:36:02
Бляха муха пробую и False и True, и Yes и No один хрен не переводит фокус метод SelectObject, может он к таблицам не применим ? Maximize, minimize работает....


Как перевести фокус на любой открытый объект (в данном случае таблицу) в рабочей базе ???
Karfaqen
Дата: 19.12.2006 18:05:14
Ммихалыч
Как перевести фокус на любой открытый объект (в данном случае таблицу) в рабочей базе ???
Программно вот так:
DoCmd.SelectObject acTable, "ИмяТаблицы"

Другое дело, если у вас в этот момент активным будет другое приложение (скажем, Notepad или еще один MSAccess), то вы ничего не почувствуете. Но стоит вам активизировать тот MSAccess, в отношении которого выполнился вышеуказанный код, как вы тут же увидите, что фокус там стоит в окне именно этой таблицы.
Ммихалыч
Дата: 19.12.2006 18:34:26
запуская открытие таблицы из модуля, соответственно фокус на окне модуля, задача перевести фокус на новый открывающийся (вшийся) объект, с вариантом false по умолчанию как Вы написали не работает...
Ммихалыч
Дата: 19.12.2006 18:34:52
других открытых приложение вроде как нет