powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Автоматизация создания MDE
35 сообщений из 35, показаны все 2 страниц
Автоматизация создания MDE
    #32884321
gena_20050126
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Народ, подскажите кто в курсе.

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

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

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

End Sub

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


может еще есть способы?
...
Рейтинг: 0 / 0
Автоматизация создания MDE
    #33291272
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не работает
проверил на двух компах 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
Автоматизация создания MDE
    #33291281
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторне ADP не MDB не компилируется

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

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


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


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

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

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

Вопрос: Файл 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
Автоматизация создания MDE
    #33291546
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
все, получилось
дело было в блокировке исходного файла открытого аксессом

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

Код: 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
Автоматизация создания MDE
    #33291555
ANTIVIR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АлексейКвсе, получилось
Так бы сразу ))) Выкладывая соль и спички
...
Рейтинг: 0 / 0
Автоматизация создания MDE
    #33291724
АлексейЕ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Яйца теже, вид с другого боку

Код: 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
Автоматизация создания MDE
    #33291951
MsDatabaseru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 АлексейЕ

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

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

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

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

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

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

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

Код: 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
Автоматизация создания MDE
    #33292472
Dr. Den
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну вот теперь совсем другое дело! Все заработало!

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

Код: 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
Автоматизация создания MDE
    #36315844
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
отключи антивир,
попробуй прибить в диспетчере задач все процессы msaccess.
по идее может мешать зависший процесс- или пререзапусти комп
...
Рейтинг: 0 / 0
Автоматизация создания MDE
    #36315916
КД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> отключи антивир
отключил

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

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

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

Возник вопрос.
Как можно в этой процедуре прописать запрет Shift при запуске в MDE, не отображать окно БД и др подобные вещи, а mdb чтоб такого запрета не было.

Я так понимаю,м ожно перед созданием нового объекта аппликейшн выставить AllowBypassKey и прочие переменные такого рода.
А потом после того как mde был создан вернуть в mdb все обратно.

а вот не прибегая к таким манипуляциям можно сделатЬ?
...
Рейтинг: 0 / 0
Автоматизация создания MDE
    #36329284
MsDatabaseru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мне кажется что логичнее в ярлыке запуска mde указать ключ /runtime
...
Рейтинг: 0 / 0
Автоматизация создания MDE
    #36329675
Фотография Serge Gavrilov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
QWERiONЯ так понимаю,м ожно перед созданием нового объекта аппликейшн выставить AllowBypassKey и прочие переменные такого рода.
Вы можете выставить все эти свойства непосредственно в mde
...
Рейтинг: 0 / 0
Автоматизация создания MDE
    #36339528
QWERiON
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
подскажите пожалуйста!
Не понимаю в чем дело, но не создает mde пишет ss=0 пробовал пошагово.. не работает.

Код: plaintext
ss = accapp.SysCmd( 603 , CurrentProject.path & "\TMP" & CurrentProject.Name, Replace(CurrentProject.FullName, ".mdb", ".mde", , , vbBinaryCompare))
возвращает 0

Может быть связано с тем что база защищена файлом рабочей группы?

з.ы. пробовал на новом пустом mdb без файла раб. групп там все ок. .. отрабатывает хорошо и также хорошо создается файлик.
...
Рейтинг: 0 / 0
Автоматизация создания MDE
    #36339614
QWERiON
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да действительно дело в нем.
попросил админа, чтоб он мне сделал рабочий файл файлом по умолчанию :) заработало.. только база почемуто теперь два раза просит ввести логин пароль =)
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Автоматизация создания MDE
    #38383394
sahard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может кому пригодится

экспереминтировал в access 2010 с предложенными вариантами
вот такой код создал скомпилированный "accde"

были вставлены две новые строчки
accapp.AutomationSecurity = 1 'MsoAutomationSecurityLow
accapp.UserControl = False

без них не работало

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
Sub my()
Dim ss
Dim fso
Dim accapp As Access.Application
Set accapp = New Access.Application
Set fso = CreateObject("scripting.filesystemobject")
accapp.AutomationSecurity = 1 'MsoAutomationSecurityLow
accapp.UserControl = False

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, ".accdb", ".accde", , , vbBinaryCompare))
Kill CurrentProject.Path & "\TMP" & CurrentProject.Name
Set fso = Nothing
Set accapp = Nothing
MsgBox "Выполнено = " & ss

End Sub
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Автоматизация создания MDE
    #38798120
Начивок
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Помогите пожалуйста не могу создать MDE файл, Access 2002-2003. База большой, весить оно : 60-таблица, 10-запросы, 70-формы, 10-отчеты, 2-макросы, 10-модули

please help......................................please help
...
Рейтинг: 0 / 0
Автоматизация создания MDE
    #38800242
Начивок
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пожалуйста помогите! У меня есть база имеющий 60-таблица, 10-запросы, 70-формы, 10-отчеты, 2-макросы, 10-модули. Не могу создать MDE пожалуйста помогите. Видно что база большой, если можно то программным путем можно создать MDE, кто знает помогите очень нужна.
...
Рейтинг: 0 / 0
Автоматизация создания MDE
    #38801371
sahard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Автоматизация создания MDE
    #39613151
xaxexixo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
КД,
после
CurrentProject.Application.SysCmd 504, 16483
вставьте
t = Timer: While Timer < t + 1: DoEvents: Wend
и не надо нажимать ф8
...
Рейтинг: 0 / 0
35 сообщений из 35, показаны все 2 страниц
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Автоматизация создания MDE
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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