|
|
|
не отрабатывает объект docmd в ActiveX контроле
|
|||
|---|---|---|---|
|
#18+
есть база данных access, к которой прикреплен контрол.Контрол работает нормально.Вот кусок кода, из контрола. Здесь удаляется таблица из базы данных. проблема заключается в том , что вроде все отрабатывает без ошибок, появляется сообщение "Удаляется таблица buffer" , но в базе данных никаких изменений не происходит. Функция myfunc вызывается при нажатии кнопки в форме из бызы данных... Public Function myfunc(ByVal buf As String, ByVal fname As String) As Variant Dim appAccess As Object Set appAccess = CreateObject("Access.Application") MsgBox "Удаляется таблица buffer" appAccess.DoCmd.DeleteObject acTable, "buffer" помогите , объясните , господа программисты ... не понимаю... что то делаю не так ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2006, 22:31:52 |
|
||
|
не отрабатывает объект docmd в ActiveX контроле
|
|||
|---|---|---|---|
|
#18+
Интересный код. Что-то не видно, как ты базу открываешь. Еще... Раз ты используешь поздное связывание и у тебя НЕ подключена ссылка на Access, то твоя программа понятия не имеет, что такое acTable. acTable - это константа Access (если у тебя стоит Option Explicit, то по идее должна быть ошибка "Variable not defined"). Исходя из учета всего вышеизложенного предлагаю такой вариант. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2006, 23:43:54 |
|
||
|
не отрабатывает объект docmd в ActiveX контроле
|
|||
|---|---|---|---|
|
#18+
я так пробовал открывать базу...появляется сообщение : run-time error '7866 ' приложению не удается открыть базу , база данных открыта другим пользователем с монопольным доступом , или файл базы данных отсутствует. Путь к базе написан правильно , несколько раз проверял .Кроме того , база уже открыта , в ней все дело происходит.и контрол этот находиться в базе в одной из форм.А все эти константы определены в дао , кажется , потому никаких ошибок не выходит ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2006, 00:22:14 |
|
||
|
не отрабатывает объект docmd в ActiveX контроле
|
|||
|---|---|---|---|
|
#18+
кроме того на добавленную в этот же код команду : appAccess.DoCmd.OpenForm "error" появляется ошибка : run-time error '2046' Команда или макрокоманда "открыть форму" в данное време недоступна. тут уж нет никаких констант ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2006, 01:25:18 |
|
||
|
не отрабатывает объект docmd в ActiveX контроле
|
|||
|---|---|---|---|
|
#18+
"error"- это форма в базе данных ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2006, 01:26:37 |
|
||
|
не отрабатывает объект docmd в ActiveX контроле
|
|||
|---|---|---|---|
|
#18+
если верить этому Eshu Функция myfunc вызывается при нажатии кнопки в форме из бызы данных... то вы уже находитесь в базе данных и лишних телодвижений делать не надо Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2006, 09:14:03 |
|
||
|
не отрабатывает объект docmd в ActiveX контроле
|
|||
|---|---|---|---|
|
#18+
спасибо за подсказку...но дело в том , что это учебная работа, и суть заключается именно в том , чтоб совершать некоторые действия над базой данных при помощи activex ...в частности присутствует обработка таблиц и форм ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2006, 11:24:05 |
|
||
|
не отрабатывает объект docmd в ActiveX контроле
|
|||
|---|---|---|---|
|
#18+
для того, что бы производить какие то операции над базой необходимо ее открыть ... при попытке сделать это из activex controla появляется сообщение об ошибке, причем это сообщение появляется всегда , какую бы базу я не пытался открыть: run-time error '7866 'приложению не удается открыть базу , база данных открыта другим пользователем с монопольным доступом , или файл базы данных отсутствует. однако если я вставляю эдентичный код в обработку события в форме , то все отрабатывает отлично, база открывается и таблица удаляется ... Dim appAccess As Object Set appAccess = CreateObject("Access.Application") appAccess.OpenCurrentDatabase ("C:\Work\dms2.mdb") appAccess.DoCmd.DeleteObject acTable, "buffer" может у activex controla ограниченная функциональность и многое нельзя делать, например открывать базы данных и удалять из них таблицы ... объясните , пожалуйста, господа прогараммисты :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2006, 13:44:38 |
|
||
|
не отрабатывает объект docmd в ActiveX контроле
|
|||
|---|---|---|---|
|
#18+
Дублирую Все можно, просто вместо CreateObject надо было использовать GetObject. Для примера я создал ActiveX dll TestAccessDocmd, содержащий класс Docmd: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. В коде mdb пишу Код: plaintext 1. 2. 3. Запускаю, процедуру, содержащую этот код, все нормально удаляет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.03.2006, 23:10:01 |
|
||
|
не отрабатывает объект docmd в ActiveX контроле
|
|||
|---|---|---|---|
|
#18+
Serge Gavrilov прав вместо функции CreateObject, воспользуйся функцией GetObject. Создал ActiveX Control с методом: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Компилирую и добавляю элемент на форму. На кнопку, размещенную на той же форме, что и элемент добавляю код: Код: plaintext 1. 2. 3. 4. 5. 6. Все прекрасно удаляется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.03.2006, 19:30:13 |
|
||
|
|

start [/forum/topic.php?fid=60&tid=2166202]: |
0ms |
get settings: |
9ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
181ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
| others: | 271ms |
| total: | 541ms |

| 0 / 0 |
