Гость
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Автоматизация создания MDE / 25 сообщений из 35, страница 1 из 2
26.01.2005, 12:38
    #32884321
gena_20050126
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Автоматизация создания MDE
Народ, подскажите кто в курсе.

[1]
Как создать MDE-файл НЕ через меню "Сервис/Служебные программы/Создать MDE-файл...", а как-нибудь не ручками - либо программно (может, метод объектный какой), либо через параметр командной строки MSA2000.

[2]
Как, опять-таки, программно выполнить обратную конвертацию из MSA2000 в MSA97.
...
Рейтинг: 0 / 0
26.01.2005, 13:09
    #32884468
Hummer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Автоматизация создания MDE
ADE/MDE:
SysCmd(603, [ADP/MDB Path], [ADE/MDE Path])
...
Рейтинг: 0 / 0
26.01.2005, 13:33
    #32884576
gena_20050126
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Автоматизация создания MDE
SysCmd 603 в MSA97 работает нормально, а в MSA2000 ничего не делает и ошибку не генерит. А откуда сведения? Может там про MSA2000 чего сказано?
...
Рейтинг: 0 / 0
26.01.2005, 13:35
    #32884583
Hummer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Автоматизация создания MDE
с 2000 не работал - а вот в Аксесе ХП всё работает нормально.
...
Рейтинг: 0 / 0
27.09.2005, 14:42
    #33290983
АлексейК
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Автоматизация создания MDE
вот понадобилось,

Код: plaintext
1.
2.
3.
Public Sub tst()
SysCmd  603 , CurrentProject.FullName, Replace(CurrentProject.FullName, ".adp", ".ade", , , vbBinaryCompare)

End Sub

не работает и ошибку не выдает
аксесс XP


может еще есть способы?
...
Рейтинг: 0 / 0
27.09.2005, 16:02
    #33291272
АлексейК
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Автоматизация создания MDE
не работает
проверил на двух компах acc2002 sp3 и acc2002 без sp

не ADP не MDB не компилируется
формат файла 2002

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Sub TestMde()
Dim appAccess As Access.Application
Set appAccess = New Access.Application
appAccess.Visible = True
appAccess.SysCmd  603 , CurrentProject.FullName, Replace(CurrentProject.FullName, ".mdp", ".mde", , , vbBinaryCompare)
appAccess.Quit acQuitSaveNone
Set appAccess = Nothing

End Sub
...
Рейтинг: 0 / 0
27.09.2005, 16:04
    #33291281
АлексейК
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Автоматизация создания MDE
авторне ADP не MDB не компилируется

в смысле компелируется и вручную MDE создается а вот программно MDE ADE никак
...
Рейтинг: 0 / 0
27.09.2005, 16:05
    #33291283
ANTIVIR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Автоматизация создания MDE
АлексейКне ADP не MDB не компилируется
формат файла 2002

Если уж у вас не получается, я в панике)))
...
Рейтинг: 0 / 0
27.09.2005, 16:14
    #33291331
АлексейК
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Автоматизация создания MDE
Если уж у вас не получается, я в панике)))


коллективный (сетевой) разум всегда мощнее единичного ...
...
Рейтинг: 0 / 0
27.09.2005, 16:16
    #33291346
ANTIVIR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Автоматизация создания MDE
АлексейК Если уж у вас не получается, я в панике)))


коллективный (сетевой) разум всегда мощнее единичного ... Мне кажется пора закупать соль и спички)))
...
Рейтинг: 0 / 0
27.09.2005, 16:50
    #33291466
АлексейК
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Автоматизация создания MDE
кажись надыбал в чем дело
скорее всего в блокировке открытого файла файловой системой

т.к. перенес этот же код в VBS - в нем работает.

попробую поглумиться над временной копией, но уже из аксесса
...
Рейтинг: 0 / 0
27.09.2005, 17:12
    #33291537
АлексейЕ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Автоматизация создания MDE
Из запасов

Вопрос: Файл MDB в MDE - программно

Анатолий (Киев)

У меня в А2000 эта конструкция тоже не работает.
А вот эта работает прекрасно:

Public Sub CompactCurrentDB()
'Выполняет сжатие текущей БД.
'2071 - индекс позиции меню "Compact and repair database..."
On Error Resume Next
CommandBars.FindControl(1, 2071).accDoDefaultAction
End Sub

...

Serge Gavrilov

Создать MDE
Id = 2073
Создать ADE
Id = 4135
...
Рейтинг: 0 / 0
27.09.2005, 17:14
    #33291546
АлексейК
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Автоматизация создания MDE
все, получилось
дело было в блокировке исходного файла открытого аксессом

так работает:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Dim fso
Set fso = CreateObject("scripting.filesystemobject")
CurrentProject.Application.SysCmd  504 ,  16483  ' компилировать и сохранить все модули
fso.copyFile CurrentProject.FullName, CurrentProject.Path & "\TMP" & CurrentProject.Name
SysCmd  603 , CurrentProject.Path & "\TMP" & CurrentProject.Name, Replace(CurrentProject.FullName, ".adp", ".ade", , , vbBinaryCompare)
'SaveFileToDB "select * from dbo.ClientFiles where filename  =  '" & CurrentProject.Name & "'", CurrentProject.Name, 1, Replace(CurrentProject.FullName, ".adp", ".ade", , , vbBinaryCompare)
Kill CurrentProject.Path & "\TMP" & CurrentProject.Name
Set fso = Nothing
...
Рейтинг: 0 / 0
27.09.2005, 17:16
    #33291555
ANTIVIR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Автоматизация создания MDE
АлексейКвсе, получилось
Так бы сразу ))) Выкладывая соль и спички
...
Рейтинг: 0 / 0
27.09.2005, 18:16
    #33291724
АлексейЕ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Автоматизация создания MDE
Яйца теже, вид с другого боку

Код: 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.
Sub CreateMDE()

Dim strWsh As String, strTempFile As String, hFile As Integer
Dim WshShl


   Set WshShl = CreateObject("WScript.Shell")
   strTempFile = WshShl.ExpandEnvironmentStrings("%TEMP%") & "\CreateMDE.vbs"

    strWsh = "Set AccMDE = CreateObject(""Access.Application"")" & vbCrLf _
            & "Set AccApp = GetObject(""" & CurrentDb.Name & """)" & vbCrLf _
            & "AccApp.Application.SysCmd 504, 16483 " & vbCrLf _
            & "AccApp.DoCmd.Quit" & vbCrLf _
            & "AccMDE.Application.SysCmd 603, """ & CurrentProject.FullName & """, """ & replace(CurrentProject.FullName, ".mdb", ".mde", , , vbBinaryCompare) & """" & vbCrLf _
            & "Set FSO = CreateObject(""Scripting.FileSystemObject"")" & vbCrLf _
            & "Set File = fso.GetFile(""" & strTempFile & """)" & vbCrLf _
            & "File.Delete" & vbCrLf _
            & "Set WshShell = CreateObject(""WScript.Shell"")" & vbCrLf _
            & "WshShell.Run """ & replace(CurrentProject.FullName, ".mdb", ".mde", , , vbBinaryCompare) & """"

   hFile = FreeFile
   Open strTempFile For Output Access Write As hFile
   Print #hFile, strWsh
   Close hFile

   WshShl.Run """" & strTempFile & """"
End Sub
...
Рейтинг: 0 / 0
27.09.2005, 21:22
    #33291951
MsDatabaseru
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Автоматизация создания MDE
2 АлексейЕ

тоже вариант
...
Рейтинг: 0 / 0
27.09.2005, 21:29
    #33291956
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Автоматизация создания MDE
а зачем такое нада?
...
Рейтинг: 0 / 0
27.09.2005, 22:05
    #33291989
mwsdatabaseru
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Автоматизация создания MDE
вадяа зачем такое нада?

вобщем то конечно обычному неленивому человеку это ненадо
всегда можно вручную откомпилировать сжать отсоединить проект от базы и закинуть каждому юзеру на компьютер (заставив или дождавшись закрытия приложения)

все это от большой лени
вношу правки в проект, проверяю работоспособность
нажимаю кнопку вызывающую код в администраторском аддине, после чего проект автоматически подготавливается и распространяется пользователям

если серьезно то автоматизация собственной рутины, при числе пользователей от десятков (тем более если они разнесены территориально) позволяет экономить уйму времени которое можно потратить на самообразование, общение в интернете и прочее..
...
Рейтинг: 0 / 0
28.09.2005, 05:22
    #33292128
Dr. Den
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Автоматизация создания MDE
АлексейК
Код: plaintext
SysCmd  603 , CurrentProject.Path & "\TMP" & CurrentProject.Name, Replace(CurrentProject.FullName, ".adp", ".ade", , , vbBinaryCompare)

У меня не работает и никаких ошибок не показывает. А я уж было обрадовался...
...
Рейтинг: 0 / 0
28.09.2005, 09:25
    #33292324
АлексейК
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Автоматизация создания MDE
еще надо чтобы проект :
1 был того же формата что и аксесс в котором запущен
(по умолчанию у аксесса XP формат файла 2000)
2 проект должен компилироваться (быть без ошибок в коде)

проверить можно созданием *.[a,m]de вручную

и еще проверь создается ли временный файл с этим именем
...
Рейтинг: 0 / 0
28.09.2005, 09:36
    #33292343
АлексейК
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Автоматизация создания MDE
вот что еще надыбал, всетаки Сергей гаврилов был прав относительно другого апликейшена. а у меня приведенный пример работал из за того что вызывался из аддина

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Public Sub Savemde()
Dim ss
Dim fso
Dim accapp As Access.Application
Set accapp = New Access.Application
Set fso = CreateObject("scripting.filesystemobject")
CurrentProject.Application.SysCmd  504 ,  16483  ' компилировать и сохранить все модули
fso.copyFile CurrentProject.FullName, CurrentProject.Path & "\TMP" & CurrentProject.Name
ss = accapp.SysCmd( 603 , CurrentProject.Path & "\TMP" & CurrentProject.Name, Replace(CurrentProject.FullName, ".mdb", ".mde", , , vbBinaryCompare))
Kill CurrentProject.Path & "\TMP" & CurrentProject.Name
Set fso = Nothing
Set accapp = Nothing
MsgBox "Выполнено = " & ss
End Sub

SysCmd возвращает не ошибку а переменную если 0 - не создано
1 - ок
...
Рейтинг: 0 / 0
28.09.2005, 10:29
    #33292472
Dr. Den
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Автоматизация создания MDE
Ну вот теперь совсем другое дело! Все заработало!

зы
Лень - путь к совершенству)
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
17.11.2009, 18:43
    #36315673
КД
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Автоматизация создания MDE
запускаю описанную АлексеемК процедуру

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Public Sub Savemde()
Dim ss
Dim fso
Dim accapp As Access.Application
Set accapp = New Access.Application
Set fso = CreateObject("scripting.filesystemobject")
CurrentProject.Application.SysCmd  504 ,  16483  ' компилировать и сохранить все модули
fso.copyFile CurrentProject.FullName, CurrentProject.Path & "\TMP" & CurrentProject.Name
ss = accapp.SysCmd( 603 , CurrentProject.Path & "\TMP" & CurrentProject.Name, Replace(CurrentProject.FullName, ".mdb", ".mde", , , vbBinaryCompare))	'на этой строке как бы "зависает"
Kill CurrentProject.Path & "\TMP" & CurrentProject.Name
Set fso = Nothing
Set accapp = Nothing
MsgBox "Выполнено = " & ss
End Sub


когда у меня кончилось терпение, и я снял выполнение в Диспетчере Задач, то в папке обнаружил созданные TMP и mde файлы. Так вроде бы и ничего, но закралось сомнение – чего это оно так долго? и все ли там прошло как надо? Запуск mde показал, что всё вроде работает, но вдруг где засада? Вручную mde создаётся в секунды.
...
Рейтинг: 0 / 0
17.11.2009, 20:45
    #36315844
АлексейК
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Автоматизация создания MDE
отключи антивир,
попробуй прибить в диспетчере задач все процессы msaccess.
по идее может мешать зависший процесс- или пререзапусти комп
...
Рейтинг: 0 / 0
17.11.2009, 21:41
    #36315916
КД
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Автоматизация создания MDE
> отключи антивир
отключил

> попробуй прибить в диспетчере задач все процессы msaccess
не вполне понял, что там прибить (выполнение кода, что ли?), ну ладно.

Всё равно зависал при пошаговом прохождении процедуры. Стоило начать процедуру по F8 и продолжить её по Ctrl+F8 (установленном в конце) – как всё прошло быстро. Вот так.

Спасибо большое!
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Автоматизация создания MDE / 25 сообщений из 35, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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