powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Можно ли в *.ADP на ходу менять CurrentProject.Connection ?
17 сообщений из 17, страница 1 из 1
Можно ли в *.ADP на ходу менять CurrentProject.Connection ?
    #32028909
Сергей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно ли в *.ADP на ходу менять CurrentProject.Connection ?
...
Рейтинг: 0 / 0
Можно ли в *.ADP на ходу менять CurrentProject.Connection ?
    #32028927
lln___
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
См. пример с базой Борей (ADP). А в принципе - так
Public Sub ChangeDB(NewDBName As String)
Dim ConnectStr As String
Dim InitCat As String, StartPos As Integer, EndPos As Integer

ConnectStr = CurrentProject.BaseConnectionString

StartPos = InStr(1, ConnectStr, "Initial Catalog", 1)
StartPos = InStr(StartPos + 15, ConnectStr, "=") + 1
EndPos = InStr(StartPos, ConnectStr, ";")
If EndPos = 0 Then
ConnectStr = Left(ConnectStr, StartPos - 1) + NewDBName
Else
ConnectStr = Left(ConnectStr, StartPos - 1) + NewDBName + Right(ConnectStr, Len(ConnectStr) - EndPos + 1)
End If

CurrentProject.OpenConnection ConnectStr, <user_name>, <Password>

End Sub
...
Рейтинг: 0 / 0
Можно ли в *.ADP на ходу менять CurrentProject.Connection ?
    #32028968
Сергей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо за отклик.
В том-то и дело, что OpenConnection не работает. Выдает Run-time error Method 'OpenConnection' of object '_CurrentProject' failed
...
Рейтинг: 0 / 0
Можно ли в *.ADP на ходу менять CurrentProject.Connection ?
    #32028976
lln___
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
При запуске открывается форма регистрации, в которой считываются данные пользователя и запускается указанная процедура ChangeDB. Соответственно, это можно делать и в процессе работы.
...
Рейтинг: 0 / 0
Можно ли в *.ADP на ходу менять CurrentProject.Connection ?
    #32042314
Dima Fokin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Так чем дело кончилось? У меня такая-же проблема. А как решить?
...
Рейтинг: 0 / 0
Можно ли в *.ADP на ходу менять CurrentProject.Connection ?
    #32047826
Дмитрий123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А я это делал так, тока это сделано было для случая потери связи с серваком:

Const con = "PROVIDER=SQLOLEDB.1;PERSIST SECURITY INFO=FALSE;INITIAL CATALOG=Dogovor_tmp;DATA SOURCE=MAIN;Current Language=English;Use Procedure for Prepare=1;Auto Translate=True;Application Name=Финплан"
Dim s As String

'On Error Resume Next
s = MsgBox("Cейчас будет произведена попытка восстановить соединение с сервером." & Chr(10) & "Если соединение не восстановится, то следует выйти из программы," & Chr(10) & "произвести обновление и обратно запустить программу!", vbInformation, "Внимание")
s = Application.SysCmd(acSysCmdSetStatus, "Идет соединение с сервером!")
If CurrentProject.IsConnected Then CurrentProject.CloseConnection
On Error Resume Next
CurrentProject.Connection.Open con
...
Рейтинг: 0 / 0
Можно ли в *.ADP на ходу менять CurrentProject.Connection ?
    #32114562
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Здравствуйте, господа.

Увидел тему "Можно ли в *.ADP на ходу менять CurrentProject.Connection?" и обрадовался. У меня точно такая проблема. Но - увы! - ответа я здесь не вижу.

Я пробовал и Application.CurrentProject.Connection.Open ..., и Application.CurrentProject.Connection.ConnectionString = ... - но получаю одну и ту же ошибку:

Run-time error '3705':
Operation is not allowed when the object is open.

Какой именно object is open??? Я не нашел, что надо закрыть. Connection я закрывал, но, правда, Application открыт, но я просто в нем нахожусь и не намерен выходить. И пока получается, что я не имею возможности поменять ConnectionString. И значит - не могу создать проект для заказчика, если сам при этом нахожусь у себя, а не у него. Возможно ли такое?

Спасибо!
...
Рейтинг: 0 / 0
Можно ли в *.ADP на ходу менять CurrentProject.Connection ?
    #32114588
SM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тот же вопрос был и у меня. Пытался попробовать такой трюк
Код: plaintext
currentProject.Connection.Execute  "USE "  & DBName
- формы начинают работать на этой самой DBName базе, а листбоксы и комбобоксы - все еще на старой, похоже, для них connectionstring какой-то иной.

В результате использую ChangeDB, правда с небольшими корректировками - у меня SQL авторизация, потому требуется переспрашивать у пользователя имя и пароль.

В идеале хотелось бы сделать нечто типа такого

1. При инсталляции приложения клиенту в реестр записывается инфа о сервере БД

2. При старте приложения - появляется форма со списком (или TreeView ) доступных серверов БД (первоначально один - полученный при инсталляции ). Этот список можно редактировать.

3 При разворачивании узла TreeView (сервера) - получить список доступных проектов (не имен баз, а имеющих смысл описаний проектов)

4 При выборе проекта произвести подключение к нему.
...
Рейтинг: 0 / 0
Можно ли в *.ADP на ходу менять CurrentProject.Connection ?
    #32114592
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Вопрос к SM. Спасибо за ответ, но я ничего не понял. Что надо поставить в DBName? Ведь указать-то надо и имя сервера, и юзера, и пароль, да и вообще весь ConnectionString. Там есть место для этого всего?
...
Рейтинг: 0 / 0
Можно ли в *.ADP на ходу менять CurrentProject.Connection ?
    #32114598
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
P.S. И что такое ChangeDB? Мой Object Browser такого не находит.
...
Рейтинг: 0 / 0
Можно ли в *.ADP на ходу менять CurrentProject.Connection ?
    #32114621
-=Alexey=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно ли в *.ADP на ходу менять CurrentProject.Connection ?
можно

например переключаем текущий проект на базу pubs

Код: plaintext
1.
2.
3.
4.
Dim s String
  s =  "PROVIDER=SQLOLEDB.1 ;PERSIST SECURITY INFO=TRUE;USER ID=" & strLogin &  ";PASSWORD="  & strPass _
  &  ";INITIAL CATALOG=pubs;DATA SOURCE=." 
  CurrentProject.OpenConnection (s)

To All (у кого не получается)
пишите подробнее, что делаете. Например, как по постам автора трэйда - Сергея, понять что он неправильно делает?
...
Рейтинг: 0 / 0
Можно ли в *.ADP на ходу менять CurrentProject.Connection ?
    #32114701
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
подключться то можно, никто не знает как заставить отключиться
...
Рейтинг: 0 / 0
Можно ли в *.ADP на ходу менять CurrentProject.Connection ?
    #32114731
incold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 All
Полностью согласен с -=Alexey=- метод CurrentProject.OpenConnection прекрасно работает, при условии, что правильно сформирована строка подключения.

2 АлексейК
Отключиться от базы доволно просто с помощью того же метода
CurrentProject.OpenConnection ""
...
Рейтинг: 0 / 0
Можно ли в *.ADP на ходу менять CurrentProject.Connection ?
    #32114814
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Рассказываю, что я делаю не так. :^)

1. Беру готовый ADP, спрашиваю CurrentProject.Connection, запоминаю.

2. Переключаю вручную на другую базу данных.

3. Запускаю CurrentProject.OpenConnection с той строкой, которую запомнил в п.1.

4. Получаю ошибку 80004005: Method 'OpenConnection' of object '_CurrentProject' failed.

Вот два примера строк:

Provider=MSDataShape.1;Persist Security Info=True;Data Source=...;User ID=...;Password=...;Initial Catalog=...;Data Provider=SQLOLEDB.1

Provider=MSDataShape.1;Persist Security Info=False;Data Source=...;Integrated Security=SSPI;Initial Catalog=...;Data Provider=SQLOLEDB.1

Может, надо что-то поменять в самой строке?
...
Рейтинг: 0 / 0
Можно ли в *.ADP на ходу менять CurrentProject.Connection ?
    #32114823
incold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Владимир Саныч
Запрашивать нужно не Connection, а BaseConnectionString
...
Рейтинг: 0 / 0
Можно ли в *.ADP на ходу менять CurrentProject.Connection ?
    #32114834
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Уррррра, заработало!!! (С) кот Матроскин.

incold, громадное спасибо!
...
Рейтинг: 0 / 0
Можно ли в *.ADP на ходу менять CurrentProject.Connection ?
    #32190590
Artem K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
to:Дмитрий123

неужели у вас эти свойства

Const con = "PROVIDER=SQLOLEDB.1;PERSIST SECURITY INFO=FALSE;INITIAL CATALOG=Dogovor_tmp;DATA SOURCE=MAIN;Current Language=English;Use Procedure for Prepare=1;Auto Translate=True;Application Name=Финплан"

реально выставляются в currentproject.conection ?

у меня нет. по крайней мере Microsoft SQL Profiler продолжает показывать, что access использует каждый раз sp_prepare. да и Application Name не то которое я ставил (пытался ставить).

можт ктоньть откроет секрет как установить из VBA свойства currentproject.connection

в currentproject.openconnection первый параметр - BaseConnectionString,
в котором можно ставить только "PROVIDER=SQLOLEDB.1;PERSIST SECURITY INFO=FALSE;INITIAL CATALOG=db;DATA SOURCE=server"

а как же остальные?
с учетом того что для того чтобы сделать свою форму авторизации каждый раз при выходе делается "currentproject.openconnection "Provider="", вариант вбить один раз ручками а потом хватит и baseconnection string не подходит...
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Можно ли в *.ADP на ходу менять CurrentProject.Connection ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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