powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Access KILL
9 сообщений из 9, страница 1 из 1
Access KILL
    #32566438
Фотография =viT=
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ситуация следующая:
Хочу на завершение своей программы открыть file.mdb
В модуле формы:
Код: plaintext
1.
2.
3.
4.
Private Sub Form_Unload(Cancel As Integer)
    InitAccess
    OpenMDB "C:\file.mdb"
End Sub

В модуле AccesApp.bas
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
Option Explicit
'Якобы файл ресурсов =)
Const FILE_NOTEXIST As String = "Указанный файл отсутствует!"

Public appAccess As Object
'Public appAccess As Access.Application

Sub InitAccess()
'(c)Pinchuk Vitaly
'#Created:  18 . 04 . 04  -  08 : 27 
'Обращение к Access

    On Error Resume Next
    'Попытка получить объект из оперативной памяти
    Set appAccess = GetObject(, "Access.Application")
    If Err.Number <>  0  Then
        'Объекта в памяти не было - создаём его
        Set appAccess = CreateObject("Access.Application")
        'Set appAccess = New Access.Application
    End If
    Err.Clear
    On Error GoTo  0 
End Sub

Sub OpenMDB(sPath As String)
'(c)Pinchuk Vitaly
'#Created:  18 . 04 . 04  -  08 : 27 
'Открытие заданной БД

    'Проверить, существует ли файл
    If Len(Dir$(sPath)) >  0  Then
        appAccess.OpenCurrentDatabase sPath, False
        appAccess.Visible = True
    Else
        MsgBox FILE_NOTEXIST
    End If
End Sub

Дык вот - как только я дохожу до End Sub (Form_Unload) процесс MSACCESS.EXE прибивается, я подозреваю, что из-за ссылок подчищаемых самим VB6. Как заставить жить объект AccessApp в другом процессе?

PS: а без куков блин, форум с недавнего времени начал глючить с аутентификацией =(
...
Рейтинг: 0 / 0
Access KILL
    #32566444
Фотография =viT=
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В добавок: пока acces еще живёт - запускается в свернутом до минимума окне. Как его развернуть при открытии на весь экран?
...
Рейтинг: 0 / 0
Access KILL
    #32566529
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
может вот так будет проще :
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Private Declare Function ShellExecute& Lib "shell32.dll" Alias "ShellExecuteA" (ByVal _
hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal _
lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long)
Private Const SW_SHOWMAXIMIZED =  3 
Private Sub Form_Unload(Cancel As Integer)
Dim strPath As String
Dim lngRes As Long
    strPath = "c:\db1.mdb"
    lngRes = ShellExecute( 0 &, "open", strPath, vbNullString, vbNullString, SW_SHOWMAXIMIZED)
End Sub
...
Рейтинг: 0 / 0
Access KILL
    #32566648
Фотография =viT=
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2big-duke:
Я сначала пробовал Shell:
Код: plaintext
1.
2.
Dim s as Long
s = Shell("C:\file.mdb", vbMaximizedFocus)
Это выдавало ошибку:
Microsoft Visual Basic
Run-time error '5':
Invalid procedure call or argument

Поскольку mdb так не запускается - его надо открывать через параметр MSACCES.EXE
Отсюда следует вариант:
Код: plaintext
s = Shell("C:\Program Files\Microsoft Office\Office10\MSACCESS.EXE " & "C:\file.mdb", vbMaximizedFocus)
НО по идее msaccess может лежать в другой папке, и вообще быть любой версии.
Поэтому я попытался сделать как написано в первом сообщении...

Спасибо за ответ, может есть еще решения?
...
Рейтинг: 0 / 0
Access KILL
    #32566773
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так почему не хочешь через API (ShellExecute)?
...
Рейтинг: 0 / 0
Access KILL
    #32566782
Фотография =viT=
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хотелось стандартными средствами, но видимо не получится, буду юзать API.
Спасибо (куда деваться если вариантов нет)...

PS: Видимо Shell не такой же гибкий как ShellExecute, а жаль.
...
Рейтинг: 0 / 0
Access KILL
    #32566931
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кстати про Shell
shell "msaccess c:\db1.mdb" - работает, так как к пути к офисным файлам прописаны имхо в системных переменных или еще где-нибудь :).
...
Рейтинг: 0 / 0
Access KILL
    #32567179
Фотография =viT=
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ё-моё как же я сразу-то не догадался! спасиб...
...
Рейтинг: 0 / 0
Access KILL
    #32567458
Фотография =viT=
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
big-dukeshell "msaccess c:\db1.mdb" - работает
Поверил на слово, а на самом деле оказалось, что у меня не сработало - пришлось все-таки API юзать.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Access KILL
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]