Как сделать mde в access 2010?

Как сделать mde в access 2010?

Приветствую всех! Дело такое, возможно ли так зишить БД Access, что бы ничего не было видно, например таблиц, запросов, при открытии в программе Access, видел что делают в MDE, но у меня 1н к 1му перенеслась..


SPIRIT ( 2004-02-16 12:12 ) [1]

а пароль поставить на базу целиком ?


Layner ( 2004-02-16 12:52 ) [2]

пароль в UDL по F4 виден как на ренгене..


sniknik ( 2004-02-16 13:27 ) [3]

UDL с безопасностью несовместим, даже если не пароль на юзера накладывать то чтобы под ним войти там надо будет разрешение дать на запись пароля, а записаный прочитать легко простым текстовым редактором.
формируй строку подключения сам, пароль шифруй и только перед конектом разшифровывай (или поставь чтобы его у юзера запрашивало).


SPIRIT ( 2004-02-16 13:41 ) [4]


SPIRIT ( 2004-02-16 13:42 ) [5]


> sniknik © (16.02.04 13:27) [3]
согласен
+ я еще ручками расширение меняю на *.xdb


Layner ( 2004-02-16 16:52 ) [6]

+ я еще ручками расширение меняю на *.xdb
Да, но это от «дурака».
В принципе сформировать строку подключения можно без проблем в приложении, но тогда его не сменить 🙁
Я думаю, что можно как то компилировать MDB, и будет обычный 2й файл, хотя работать с ним можно как с БД, но только из своего приложения.


sniknik ( 2004-02-16 17:41 ) [7]

> В принципе сформировать строку подключения можно без проблем в приложении, но тогда его не сменить 🙁
пусть пользователь задает, сам прячь/шифруй куданибудь. и никому не говори куда спрятал (пароль имею в виду).

> Я думаю, что можно как то компилировать MDB, и будет обычный 2й файл, хотя работать с ним можно как с БД, но только из своего
> приложения.
а вот тут подробнее как это «компилировать MDB»? вернее как ты это себе представляеш.
так понимаю паролировать ты его не хочеш ни как базу ни для юзеров, а работать должно только из твоего приложения, так? пиши свой формат базы, пока к нему движков не напишут так и будет.


Layner ( 2004-02-17 07:55 ) [8]

Да не, я точно видел БД в файле MDE, при открытии в Access, видно только таблицы, а вкладки типа «Запросы», «Формы», «Схема данных» . нет. Да, пароль я ставлю, храню в UDL пока, и сделаю в программе «реестр-программа-дешифрование-открываем бд». Смена пароля на БД в моей программе.


SPIRIT ( 2004-02-17 08:32 ) [9]

Provider=Microsoft.Jet.OLEDB.4.0;Password=»»;User ID=Admin;Data Source=basa_isp.xdb;Mode=Share Deny None;Extended Properties=»»;Jet OLEDB:System database=»»;Jet OLEDB:Registry Path=»»; Jet OLEDB:Database Password=ПААРОЛЬ;Jet OLEDB:Engine Type=5;Jet OLEDB:Database Locking Mode=1;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password=»»;Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don»t Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB_SFP=False


sniknik ( 2004-02-17 09:39 ) [10]

Layner © (17.02.04 07:55) [8]
к данным это не относится, и кстати защита там есть на уровне пользователя, а уж дать права на просмотр только одному(к примеру) пользователю не должно составить проблем и не только в mde.

Общие сведения о MDE-файлах
Если база данных содержит программы Microsoft Visual Basic для приложений (VBA), то при сохранении этой базы данных Microsoft Access в виде MDE-файла будут скомпилированы все модули, удалены все изменяемые исходные программы, а конечная база данных будет сжата. Программы Visual Basic будут по-прежнему выполняться, но их нельзя будет просматривать или изменять. Сохранение базы данных в виде MDE-файла защищает формы и отчеты без требования регистрации пользователей и необходимости для разработчика создавать и поддерживать учетные записи пользователей и разрешения, требуемые для защиты на уровне пользователей.

База данных по-прежнему будет работать нормально. Пользователи смогут обновлять данные и выполнять отчеты. Кроме того, из-за удаления исходных кодов уменьшится размер базы данных, т.е. будет оптимизировано использование памяти, что повысит быстродействие.

Сохранение базы данных как MDE-файла делает невозможным выполнение следующих действий.

Просмотр, изменение или создание форм, отчетов или модулей в режиме конструктора.
Добавление, удаление или изменение ссылок на библиотеки объектов или базы данных.
Изменение программ; MDE-файл не содержит исходных кодов.
Импорт и экспорт форм, отчетов или модулей. Однако таблицы, запросы, страницы доступа к данным и макросы можно импортировать и экспортировать в базы данных, не являющиеся MDE-файлами.


Layner ( 2004-02-17 10:46 ) [11]

SPIRIT © (17.02.04 08:32)
Да, программно я так и подключался, только пароль брал из реестра, где он лежит в зашифрованном виде, а пароль менялся на БД только из моей программы. Записывался в реестр, программа перегружалась с новым паролем и все.
sniknik © (17.02.04 09:39)
Спасибо за исчерпывающий ответ! Перегоню в MDE.


sniknik ( 2004-02-17 11:25 ) [12]

> Спасибо за исчерпывающий ответ! Перегоню в MDE.
не понимаю за что? (вернее почему именно последний ответ тебя удовлетворил) про паролирование по юзеру и раньше упоминалось и оно не зависит от расширения MDE/MDB, т.е. чтобы им воспользоватся перегонять не надо, и ты им пользоватся не хотел. потом какой смысл в MDE если пишеш на дельфи и используеш mdb только как базу, или ты пишеш в access-е? и у тебя есть код который нужно спрятать?

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

Создание таблицы через SQL

Уважаемые знатоки access’а и SQL!

Подскажите, пожалуйста, как создать таблицу с полем Double у которого число десятичных знаков можно указать явно (через SQL)

У меня это выглидит так:

sql = «CREATE TABLE tab1 (Код Long, Курс Currency, Сумма DOUBLE );»
cnn.Execute sql

Все хорошо, да только поля КУРС и СУММА ,по умолчанию, имеют число десятичных знаков «Авто». А мне надо это явно задать.

Подскажите, что еще надо дописать в эту SQL-евскую строку.

Спасибо, всем кто откликнется но зов помощи!

Originally posted by svetik
Уважаемые знатоки access’а и SQL!

Подскажите, пожалуйста, как создать таблицу с полем Double у которого число десятичных знаков можно указать явно (через SQL)

У меня это выглидит так:

sql = «CREATE TABLE tab1 (Код Long, Курс Currency, Сумма DOUBLE );»
cnn.Execute sql

Читать еще:  Как сделать два ключевых поля в access?

Все хорошо, да только поля КУРС и СУММА ,по умолчанию, имеют число десятичных знаков «Авто». А мне надо это явно задать.

Подскажите, что еще надо дописать в эту SQL-евскую строку.

Спасибо, всем кто откликнется но зов помощи!

Судя по всему ты пишешь под Access. потому что свойство поля — число десятичных знаков является доп. свойством (или как говорят на языке ADO являются динамическими свойствами). Поэтому в универсальном языке SQL (пусть даже и в спец. версии SQL под Access) не предусмотрено указание таких тонкостей.

Если очень надо, то для того чтобы добраться до этих свойств надо использовать ADO, который дин. образом формирует доступные свойства OLE DB провайдера и позволяет к ним обращаться.
Например, достаточно известный пример, это добавления к полю своих пояснений (показывается справа от поля в конструкторе), это дин. свойство Description.

P.S. Приятно видеть старых знакомых 🙂 книжку смогла достать?

Судя по всему ты пишешь под Access. потому что свойство поля — число десятичных знаков является доп. свойством (или как говорят на языке ADO являются динамическими свойствами). Поэтому в универсальном языке SQL (пусть даже и в спец. версии SQL под Access) не предусмотрено указание таких тонкостей.

Если очень надо, то для того чтобы добраться до этих свойств надо использовать ADO, который дин. образом формирует доступные свойства OLE DB провайдера и позволяет к ним обращаться.
Например, достаточно известный пример, это добавления к полю своих пояснений (показывается справа от поля в конструкторе), это дин. свойство Description.

P.S. Приятно видеть старых знакомых 🙂 книжку смогла достать?

Черт, не получилось с первого раза.

Извиняюсь, за свой дурацкий вопрос. До меня дошло (правда уже после отправки сообщения), что это Access-овский параметр а не SQL.

P.s. Книжку купила. Она мне очень помогла. Mercy за совет.
Правда, остался еще один вопросик (наверное такой же дурацкий). Если позволите, я его задам.
Как создать MDE файл? У меня почему-то данный пункт меню не активен (Access вроде бы устанавливала по максимуму).

А вообще, ОГРОМНОЕ спасибо за помощь.

Originally posted by svetik
Черт, не получилось с первого раза.

Извиняюсь, за свой дурацкий вопрос. До меня дошло (правда уже после отправки сообщения), что это Access-овский параметр а не SQL.

P.s. Книжку купила. Она мне очень помогла. Mercy за совет.
Правда, остался еще один вопросик (наверное такой же дурацкий). Если позволите, я его задам.
Как создать MDE файл? У меня почему-то данный пункт меню не активен (Access вроде бы устанавливала по максимуму).

А вообще, ОГРОМНОЕ спасибо за помощь.

Сервис/Служебные программы/Создать MDE-файл

Сложней всего найти как сохранить свою базу в формате mda — надстройка Access. Ответ — никак, этого пункта в меню нет, убрали за ненадобностью, чтобы Access считал твою mdb базу надстройкой, достаточно сменить у базы mdb расширение на mda
Весело да 🙂 Если заинтересуют особенности создания mda, пиши, я сам с ними недавно разбирался.

Сначала хочу разобраться с MDE.
Оказалось, что моя база другой версии, поэтому менюшка была не доступна. Конвертнула, меню доступно, но все равно не создается. Почему? (пишет Acces was unable to create MDE, а почему не понятно. Может из-за того, что у меня в старт апе прописана функция, хотя вряд ли) Попробую еще поковыряться, но если будут идеи, напишите мне пожалуйста.

p.s. А про MDA обязательно посмотрю и если что .

Originally posted by svetik
Сначала хочу разобраться с MDE.
Оказалось, что моя база другой версии, поэтому менюшка была не доступна. Конвертнула, меню доступно, но все равно не создается. Почему? (пишет Acces was unable to create MDE, а почему не понятно. Может из-за того, что у меня в старт апе прописана функция, хотя вряд ли) Попробую еще поковыряться, но если будут идеи, напишите мне пожалуйста.

p.s. А про MDA обязательно посмотрю и если что .

Возникающие ошибки при создании mde файла достаточно известная проблема, возникает она из-за того что в базе изначально уже есть какие-то ошибки.

Да, да, именно есть. Просто когда мы запускаем базу на выполнение, то она компиллирует только те модули которые необходимы для работы именно сейчас базы и которые не имеют значка о том что модуль уже откомпиллирован. Может сложится такая ситуция например, что у модуля юудет стоять статус что он откомпиллирован и при этом в нем в одной из функции есть ошибка, а так как он имеет статус откомпилл. модуля, то Access не будет его еще раз компиллировать при вызове меню Debug из редактора. Эти моменты хорошо описаны у Гетца в первом томе —
Глава 13 Оптимизация приложения, Пункт: Оптимизация и компиляция модулей VBA.

Так вот, когда ты запускаешь сохранение в mde формат, то Access принудительно снимает флажки о компиляции и компилярует весь код базы заново, с чистого листа как говорится.

Как сделать mde в access 2010?

What worked fine for years: Our frontend development mdb is of Access database format 2000 (backend is SQL Server). Developing works fine under every version of Access. The deployment process consists of copying the mdb to an XP and office 2000 machine, cleaning and debugging it if necessary from stuff too new, and having Access 2000 write an .mde. This has to be repeated for every interface language. These .mdes start up on every version of Access (and customers have all versions of Access) >= 2000 and works with every SQL Server (Express) version >= 2000. Except on Access 2010. An mde starts up with IsNull is no valid function and such and will not run stable. mdb, accdb and accde work fine. We have DAO 3.6 checked in the Refs and Dim DAO. objects expressively many times . Is there a solution / workaround for this? Compiling on (many different) target machines is NO solution, so please don’t come up with this. It’s not only a huge deployment process, but is very unprofessional in the eyes of the customers.

Thanks for your questions and answers.

All replies

If I understand correctly, you’re creating an mde in Access 2000 and are having trouble using it in Access 2010. Unfortunately, I cannot promise that databases created in old, unsupported versions of Access will continue to work as desired in the most recent release. Recompilation in more recent versions of Access may be the only solution to your problem.

Читать еще:  Как сделать запросы в access 2007?

Having said that, let’s take a close look at what’s actually happening. Please let us know the exact syntax of any errors you’re seeing and also what references your database contains. From there we may be able to make a more specific determination as to why the database is not working in 2010.

Thanks,
Nathan Ost
Microsoft Online Community Support

Please remember to click «Mark as Answer» on the post that helps you, and to click «Unmark as Answer» if a marked post does not actually answer your question. This can be beneficial to other community members reading the thread.

If I understand correctly, you’re creating an mde in Access 2000 and are having trouble using it in Access 2010. Unfortunately, I cannot promise that databases created in old, unsupported versions of Access will continue to work as desired in the most recent release. Recompilation in more recent versions of Access may be the only solution to your problem.

Yes, you understand correctly. I am aware that we are dealing with old technology no longer supported by Microsoft. However, I tried to explain why we stick to these old technologies: to keep our customers happy. It should be clear that Access projects often target rather small companies resp. freelancers, as our project does. So we aim to enable our customers to run older software on older computers, and our efforts to keep Office and SQL Server 2000 on our system requirements list were successful in the past. Edit: Another issue is that for a longer period customers will have machines with Office 2010 installed while others still have older versions of Office, they will have to differentiate which of our clients to install.

Having said that, let’s take a close look at what’s actually happening. Please let us know the exact syntax of any errors you’re seeing and also what references your database contains. From there we may be able to make a more specific determination as to why the database is not working in 2010.

Here’s the error list.

Undefined function ‘IsNull’ in expression. (3085)
several (2 to 4) times: Application-defined or object-defined error (35010)
Method ‘accHelp’ of object ‘_SubForm’ failed (35021)
Undefined function ‘Mid’ in expression. (3085)
[Microsoft][ODBC SQL Server Driver][SQL Server]Fehler beim Konvertieren einer Zeichenfolge in einen datetime-Wert. (241)
— My translation: Error converting a string to a datetime value.
There is an invalid use of the . (dot) or ! operator or invalid parentheses. (-2147352571)

Access does not freeze or stop working by error at any time. Since .mdb and newer file formats do not show these errors, I cannot really give any hints about the lines of code or query that could be inflicted because I cannot step in when the error occurs.

Now here’s the refs list:

?references(1).Name, references(1).FullPath, references(1).Guid
VBA C:PROGRA

vbSendMail.dll <332B82D3-3ED6-11D4-B1B5-00105AA5CCFF>
Word C:Program FilesMicrosoft OfficeOffice14MSWORD.OLB

None of them is reported IsBroken = -1, but DAO will refuse to list it’s full path, error message:

—————————
Microsoft Visual Basic for Applications
—————————
Run-time error ‘-2147319779 (8002801d)’:

I manually regsvr32’d dao360.dll in %commonprogramfiles%Microsoft SharedDAO, which was reported to be successful, but with no effect on my issue here.

I got another customer report today who successfully started our .mde on Office 2010, but on Windows XP. So it might be that there is a Windows 7 related issue with one library (DAO?), rather than an Office version related one.

It does not make any difference if I query the refs in the Immediate window like above before having started the .mde or when started up (with erorrs). It’s exactly the same picture when I query the .mdb refs before and after starting up (without errors). The list is the same. But if DAO is the candidate, it seems as if the necessary substitution by ADO or whatever happens without any hint for me to know is only successful in an .mdb, not in an .mde.

If this is not enough information, just ask.

The Access errors you’re seeing are consistent with a broken VBA reference, and the «Library not registered» error you receive certainly supports that as the cause of the problem. What is not consistent, however, is that the MDB that this problematic MDE was created from would not have the same issue, as all indications are that the problem should be machine-specific.

The run-time error -2147319779 is generally a machine-specific problem. Likewise, I was not able to reproduce the issue on a Windows 7 machine with only Access 2010 installed with an MDE created in Access 2000. Furthermore, you indicated that at least one user does not see this same behavior on a Windows XP machine. How many machines, then, are actually experiencing this problem?

If the answer to this question is one then we need to look at registry permissions on that machine. One thing you can try is to run Access as an administrator so that it runs with elevated privileges. In addition to this, when you reregistered DAO, did you do so from an elevated administrative command prompt? If not, you may want to open the Command Prompt window using the Run as Administrator option and then try registering the file again. If you still see the same behavior then it may be worthwhile to use a tool like Process Monitor to create a log of what’s happening when the application fails. I would expect that the resulting log would contain either an ACCESS DENIED error on the registry keys related to DAO, or you might see Access searching for, better apparently never being able to find, dao360.dll.

Best Regards,
Nathan Ost
Microsoft Online Community Support

Please remember to click «Mark as Answer» on the post that helps you, and to click «Unmark as Answer» if a marked post does not actually answer your question. This can be beneficial to other community members reading the thread.

  • Marked as answer by Nathan O. [MSFT] Microsoft employee Monday, December 20, 2010 8:59 PM
  • Unmarked as answer by mupan Tuesday, December 21, 2010 4:49 PM
Читать еще:  Как сделать поиск в access?

The Access errors you’re seeing are consistent with a broken VBA reference, and the «Library not registered» error you receive certainly supports that as the cause of the problem. What is not consistent, however, is that the MDB that this problematic MDE was created from would not have the same issue, as all indications are that the problem should be machine-specific.

The run-time error -2147319779 is generally a machine-specific problem. Likewise, I was not able to reproduce the issue on a Windows 7 machine with only Access 2010 installed with an MDE created in Access 2000. Furthermore, you indicated that at least one user does not see this same behavior on a Windows XP machine. How many machines, then, are actually experiencing this problem?

I don’t know, because as long as we don’t have a solution for this we deploy «hand-made» accde’s. At least I can reproduce the problem on my 7-2010-machine, and I know of another client with the same configuration who is now fed with an accde.

If the answer to this question is one then we need to look at registry permissions on that machine. One thing you can try is to run Access as an administrator so that it runs with elevated privileges. In addition to this, when you reregistered DAO, did you do so from an elevated administrative command prompt? If not, you may want to open the Command Prompt window using the Run as Administrator option and then try registering the file again. If you still see the same behavior then it may be worthwhile to use a tool like Process Monitor to create a log of what’s happening when the application fails. I would expect that the resulting log would contain either an ACCESS DENIED error on the registry keys related to DAO, or you might see Access searching for, better apparently never being able to find, dao360.dll.

There is no difference if I run our product as Admin or not. I already checked the registry permissions for HKLMSoftwareClasses* and the file system rights for the DAO directory. But I am not sure about the correct rights. Is it worthy to follow this trace? .mdb and .mde are run under the same user account and show their different behaviour. And the process monitor logs I attached show that the dao dll is found but locked for some reason I don’t understand yet. I applied the following filter: «dao» in path, msaccess.exe in process name. If you think I might have missed something by this filter, let me know, and I apply another one.

Thank you. All Sysinternals are on my machine .

I was also thinking again about the difference Access makes. I checked which ftype is associated to .mdb or .mde:

C:dev>assoc .mde
.mde=Access.MDEFile.14

C:dev>assoc .mdb
.mdb=Access.MDBFile

Checking the type in HKLMSoftwareClasses shows that the .mde is just opened, the .mdb is opened and there is some DDE statement sent to. Could this be a trace? I also tried to associate .mde to Access.MDBFile but this was of course not successful because Office setup checks and in case it’s «necessary» rewrites the configuration every time you launch an Office program. And there is no norereg flag for Access like with Word, as far as I know.

During several startups of our product I performed to gain the Process Monitor information I saw a dialog «Searching for a referenced file: dao360.dll» for the first time, and only once so far, while the .mdb version was loaded by Access 2010. Strange enough.

Как сделать mde в access 2010?

_Jet_
Автор

Сообщений: 271
Откуда: Нукус

Здрасть Всем!
Как поживаете?

Ребята, есть файл Access’а с расширением «mde» (похоже это откомпилированный файл).
Он написан на Access-97.
Его никак нельзя преобразовать в Access-2000?
Чтобы он хотя бы запускался.

Slavik

Сообщений: 1052
Откуда: Калининград

Привет, Кайрат.
У нас все отлично, напиши, как дела у тебя.
mde — это файл, в котором «исходники» форм, отчетов и т.п. действительно в откомпилированном виде хранятся, а таблицы — в явном. И способа превратить его обратно в mdb я, честно говоря, не знаю. Но при этом он должен без проблем конвертироваться в 2000-ник. А какие проблемы с преобразованием?

_Jet_
Автор

Сообщений: 271
Откуда: Нукус

Привет, Слава!
Рад слышать тебя!

В 2000-м Accesse пытаюсь преобразовать старую версию (’97), он ругается, что «Преобразование и подключение файла MDE не допускается»

Пока подключился из фокса и выкачиваю информацию о таблицах и сами данные.

Igor Korolyov

Насколько я помню, у нас разработчик лично ходил и ставил всем именно 97
Access, чтоб работала его прога на нём писанная (слава богу сейчас на нём
уже ничего не пишут — та ещё козья система Хотя как простое хранилище
данных она много где используется — ну точнее Jet Engine). Завтра спрошу его
поточнее что он знает про mde.

_Jet_
Автор

Сообщений: 271
Откуда: Нукус

Здравствуйте Igor Korolyov!

Буду ждать с нетерпением Вашей информации о «mde».
Спасибо!

valeryka

Сообщений: 1672
Откуда: Москва

А у тебя есть Access97?

_Jet_
Автор

Сообщений: 271
Откуда: Нукус

Привет Valeryka!

97-го Acess’а к сожалению нет.
А что?

Igor Korolyov

В общем говорят что этот самый mde можно только на стену гвоздями прибить
Т.е. кроме как данные и запросы из него ничего вынуть нельзя, и
соответственно ни на какой системе кроме как на Access 97 он работать не
будет. Штатно, даже имея 97 Access «вернуть» mde в mdb тоже нельзя. Насчёт
утилит декомпиляции (чтоб сделать mdb, который уже может открываться более
свежими версиями) ничего неизвестно — может и есть такие на просторах
интернета
В принципе как я понимаю для запуска mde не обязателен сам Access
соответствующей версии — достаточно каких-то библиотек поддержки. Но где
их взять и как всё это настраивать — я не в курсе.

_Jet_
Автор

Сообщений: 271
Откуда: Нукус

Здравствуйте, Igor Korolyov!

Спасибо за информацию!
Да, я уже установил себе Access-97 и попробовал запустить этот файл.
Почему то Access ломается, выдается собщение об ошибке в MSAccess.exe.
С импортировал в новый mdb все таблицы, запросы и схемы связи таблиц из mde.
Спасибо большое!

Ссылка на основную публикацию
Adblock
detector