Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Модули / 25 сообщений из 26, страница 1 из 2
04.08.2006, 15:03
    #33900059
GansM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модули
ПОМОГИТЕ!!!!!!!!!!!!!!!!!!!!!!!!
Как добавить модуль в БД Access на VB, а потом удалить его(по завершении программы)?
GanSS
...
Рейтинг: 0 / 0
04.08.2006, 17:07
    #33900482
Serge Gavrilov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модули
Примерно так
Создать стандартный модуль:
Код: plaintext
1.
2.
Set objVBComponent = objVBAProject.VBComponents.Add(vbext_ct_StdModule)
objVBComponent.Name = strName
objVBComponent.CodeModule.AddFromString strContent
Удалить его:
Код: plaintext
objVBComponent.Collection.Remove objVBComponent
...
Рейтинг: 0 / 0
04.08.2006, 17:14
    #33900511
Serge Gavrilov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модули
Забыл
objVBAProject это VBProject файла базы данных MS Access.
Получить его можно, например, так:
Код: plaintext
Set objVBAProject  = AccessApplication.VBE.ActiveVBProject
AccessApplication это объект Application, т.е. активное приложение MS Access.
...
Рейтинг: 0 / 0
04.08.2006, 17:28
    #33900559
GansM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модули
после строки
Set objVBAProject = App.VBE.ActiveVBProject
выкидывает ошибку: Error in loading DLL
что не так?
GanSS
...
Рейтинг: 0 / 0
04.08.2006, 17:30
    #33900568
GansM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модули
App:
Dim App As New Access.Application
GanSS
...
Рейтинг: 0 / 0
04.08.2006, 17:33
    #33900582
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модули
GansMDim App As New Access.ApplicationСуществует глобальный объект с именем App. Назови свою переменную по-другому.
...
Рейтинг: 0 / 0
04.08.2006, 17:39
    #33900601
Serge Gavrilov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модули
GansMпосле строки
Set objVBAProject = App.VBE.ActiveVBProject
выкидывает ошибку: Error in loading DLL
что не так?
GanSS
А зачем вы используете App?
Каким образом вы работаете с Access Application из VB? Как открываете?
...
Рейтинг: 0 / 0
04.08.2006, 17:41
    #33900605
GansM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модули
Я думаю мне бы не дал VB создать переменную в этом случае. Хотя заменил, но результат тот же :(
GanSS
...
Рейтинг: 0 / 0
04.08.2006, 17:43
    #33900612
GansM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модули
я заменил App на appMy
а использую вот так:

Dim base_p As Database
Dim appMy As New Access.Application
Set base_p = appMy.DBEngine.OpenDatabase(Path & "Project.mdb", False, False, "MS Access;PWD=DF9D_11D3_A3")


GanSS
...
Рейтинг: 0 / 0
04.08.2006, 17:44
    #33900616
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модули
Дал бы. Собственно, дал :). App не ключевое слово. Тем не менее,
Serge GavrilovКаким образом вы работаете с Access Application из VB? Как открываете?
А так же попробуй CreateObject вместо new.
...
Рейтинг: 0 / 0
04.08.2006, 17:47
    #33900622
Serge Gavrilov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модули
Antonariy GansMDim App As New Access.ApplicationСуществует глобальный объект с именем App. Назови свою переменную по-другому.
Кто вас так учил работать с Access Application?
Вы скупы на подробности, вам трудно помогать.
...
Рейтинг: 0 / 0
04.08.2006, 17:47
    #33900628
GansM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модули
Вместо какого new?
GanSS
...
Рейтинг: 0 / 0
04.08.2006, 17:48
    #33900630
Serge Gavrilov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модули
Извините, Antonariy, неправильно сделал цитату. Конечно мой вопрос был для GansM.
...
Рейтинг: 0 / 0
04.08.2006, 17:48
    #33900631
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модули
Посмотри в watch что содержит App.VBE.
...
Рейтинг: 0 / 0
04.08.2006, 17:52
    #33900644
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модули
GansMВместо какого new?У тебя там много new? Проехали, дело не в этом.
Я тут ляпнулПосмотри в watch что содержит App.VBEКонечно appMy.VBE
...
Рейтинг: 0 / 0
04.08.2006, 17:52
    #33900648
GansM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модули
AntonariyПосмотри в watch что содержит App.VBE.
содержание App.VBE:
<Error in loading DLL>
...
Рейтинг: 0 / 0
04.08.2006, 17:53
    #33900649
Serge Gavrilov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модули
GansMя заменил App на appMy
а использую вот так:

Dim base_p As Database
Dim appMy As New Access.Application
Set base_p = appMy.DBEngine.OpenDatabase(Path & "Project.mdb", False, False, "MS Access;PWD=DF9D_11D3_A3")


GanSS
Поймите, Access.Application и Database это разные объекты. Для добавления модуля вам не нужна Database.

Надо, например, так:
Код: plaintext
1.
Dim appMy As Access.Application
Set appMy = GetObject(Path & "Project.mdb")

Признайтесь, зачем вам надо создать модуль, а потом удалить его?
Как вы его хотите использовать?
...
Рейтинг: 0 / 0
04.08.2006, 17:55
    #33900657
GansM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модули
Serge Gavrilov Antonariy GansMDim App As New Access.ApplicationСуществует глобальный объект с именем App. Назови свою переменную по-другому.
Кто вас так учил работать с Access Application?
Вы скупы на подробности, вам трудно помогать.
Я второй день и второй раз за VB так что извиняйте.
могу весь код вставить
...
Рейтинг: 0 / 0
04.08.2006, 17:55
    #33900661
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модули
Serge Gavrilov, он вроде и пытается в Application.
GansM, таки это результат App или appMy? Нужно второе.
...
Рейтинг: 0 / 0
04.08.2006, 17:59
    #33900670
GansM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модули
Serge Gavrilov GansMя заменил App на appMy
а использую вот так:

Dim base_p As Database
Dim appMy As New Access.Application
Set base_p = appMy.DBEngine.OpenDatabase(Path & "Project.mdb", False, False, "MS Access;PWD=DF9D_11D3_A3")


GanSS
Поймите, Access.Application и Database это разные объекты. Для добавления модуля вам не нужна Database.

Надо, например, так:
Код: plaintext
1.
Dim appMy As Access.Application
Set appMy = GetObject(Path & "Project.mdb")

Признайтесь, зачем вам надо создать модуль, а потом удалить его?
Как вы его хотите использовать?

Продали мы программку (не нашу) товарищам, а им ее отчеты не устраивают.
Вот и нужно отчет сгенерить. А модуль нужен чтобы запрос выполнить.
Этот модуль расшифровывает поле из БД
...
Рейтинг: 0 / 0
04.08.2006, 18:00
    #33900671
GansM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модули
AntonariySerge Gavrilov, он вроде и пытается в Application.
GansM, таки это результат App или appMy? Нужно второе.
я же писал, что заменил App на appMy => и результаты для appMy
...
Рейтинг: 0 / 0
04.08.2006, 18:20
    #33900716
Serge Gavrilov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модули
AntonariySerge Gavrilov, он вроде и пытается в Application.

Где в его коде открыт файл базы данных для appMy?
Тогда надо было хотя бы использовать OpenCurrentDatabase.
Antonariy
GansM, таки это результат App или appMy? Нужно второе.
Для приведенного кода без разницы.
Если в процедуре об.явлено Dim App As New Access.Application, то App будет Access.Application, независимо от того, что есть глобальный объект с таким же именем.
...
Рейтинг: 0 / 0
04.08.2006, 18:28
    #33900723
GansM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модули
Serge Gavrilov AntonariySerge Gavrilov, он вроде и пытается в Application.

Где в его коде открыт файл базы данных для appMy?
Тогда надо было хотя бы использовать OpenCurrentDatabase.
Antonariy
GansM, таки это результат App или appMy? Нужно второе.
Для приведенного кода без разницы.
Если в процедуре об.явлено Dim App As New Access.Application, то App будет Access.Application, независимо от того, что есть глобальный объект с таким же именем.

Где в его коде открыт файл базы данных для appMy? - если я правильно понял, то в самом начале открывается:
Set base_d = appMy.DBEngine.OpenDatabase(Path & "Events.mdb", False, False, "MS Access;PWD=DF9D_11D3_A3")
Set base_p = appMy.DBEngine.OpenDatabase(Path & "Project.mdb", False, False, "MS Access;PWD=DF9D_11D3_A3")
а дальше использую:
Dim wrk As Workspace
Set wrk = appMy.DBEngine.Workspaces(0) и работает

и, если нетрудно, то какая разница между OpenDatabase и OpenCurrentDatabase

Млин, рабочий день заканчивается - не смогу с вами переписываться сегодня.
Если можите, давайте завтра с 9:00 по нашему(по вашему вроде 10:00)
...
Рейтинг: 0 / 0
04.08.2006, 18:31
    #33900731
GansM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модули
Скидываю весь код.
Только не ругайтесь за черт пойми что - это тренировочный код:)
В модули нужно ф-ию GetDate запихнуть
GanSS
...
Рейтинг: 0 / 0
04.08.2006, 18:41
    #33900751
Serge Gavrilov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модули
GansMГде в его коде открыт файл базы данных для appMy? - если я правильно понял, то в самом начале открывается:
Set base_d = appMy.DBEngine.OpenDatabase(Path & "Events.mdb", False, False, "MS Access;PWD=DF9D_11D3_A3")

и, если нетрудно, то какая разница между OpenDatabase и OpenCurrentDatabase
Извините, но я не заменю вам Help.
GansM
Млин, рабочий день заканчивается - не смогу с вами переписываться сегодня.
Если можите, давайте завтра с 9:00 по нашему(по вашему вроде 10:00)
Все, что вам надо уже сказано.
Используйте либо GetObject (как я указал), либо OpenCurrentDatabase.
Подробности в Help.
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Модули / 25 сообщений из 26, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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