Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Access KILL / 9 сообщений из 9, страница 1 из 1
18.06.2004, 07:28
    #32566438
=viT=
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Access KILL
Ситуация следующая:
Хочу на завершение своей программы открыть 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
18.06.2004, 07:41
    #32566444
=viT=
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Access KILL
В добавок: пока acces еще живёт - запускается в свернутом до минимума окне. Как его развернуть при открытии на весь экран?
...
Рейтинг: 0 / 0
18.06.2004, 09:22
    #32566529
big-duke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Access KILL
может вот так будет проще :
Код: 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
18.06.2004, 10:30
    #32566648
=viT=
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Access KILL
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
18.06.2004, 11:26
    #32566773
big-duke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Access KILL
Так почему не хочешь через API (ShellExecute)?
...
Рейтинг: 0 / 0
18.06.2004, 11:31
    #32566782
=viT=
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Access KILL
Хотелось стандартными средствами, но видимо не получится, буду юзать API.
Спасибо (куда деваться если вариантов нет)...

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


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