Можно ли в *.ADP на ходу менять CurrentProject.Connection ?
Сергей
Дата: 26.04.2002 08:13:02
Можно ли в *.ADP на ходу менять CurrentProject.Connection ?
lln___
Дата: 26.04.2002 09:58:35
См. пример с базой Борей (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
Сергей
Дата: 26.04.2002 13:14:42
Спасибо за отклик.
В том-то и дело, что OpenConnection не работает. Выдает Run-time error Method 'OpenConnection' of object '_CurrentProject' failed
lln___
Дата: 26.04.2002 14:51:44
При запуске открывается форма регистрации, в которой считываются данные пользователя и запускается указанная процедура ChangeDB. Соответственно, это можно делать и в процессе работы.
Dima Fokin
Дата: 10.08.2002 09:59:31
Так чем дело кончилось? У меня такая-же проблема. А как решить?
Дмитрий123
Дата: 03.09.2002 16:13:37
А я это делал так, тока это сделано было для случая потери связи с серваком:
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
Владимир Саныч
Дата: 04.03.2003 18:39:32
Здравствуйте, господа.
Увидел тему "Можно ли в *.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. И значит - не могу создать проект для заказчика, если сам при этом нахожусь у себя, а не у него. Возможно ли такое?
Спасибо!
SM
Дата: 04.03.2003 19:49:56
Тот же вопрос был и у меня. Пытался попробовать такой трюк
currentProject.Connection.Execute "USE " & DBName |
|
- формы начинают работать на этой самой DBName базе, а листбоксы и комбобоксы - все еще на старой, похоже, для них connectionstring какой-то иной.
В результате использую ChangeDB, правда с небольшими корректировками - у меня SQL авторизация, потому требуется переспрашивать у пользователя имя и пароль.
В идеале хотелось бы сделать нечто типа такого
1. При инсталляции приложения клиенту в реестр записывается инфа о сервере БД
2. При старте приложения - появляется форма со списком (или TreeView ) доступных серверов БД (первоначально один - полученный при инсталляции ). Этот список можно редактировать.
3 При разворачивании узла TreeView (сервера) - получить список доступных проектов (не имен баз, а имеющих смысл описаний проектов)
4 При выборе проекта произвести подключение к нему.
Владимир Саныч
Дата: 04.03.2003 20:07:31
Вопрос к SM. Спасибо за ответ, но я ничего не понял. Что надо поставить в DBName? Ведь указать-то надо и имя сервера, и юзера, и пароль, да и вообще весь ConnectionString. Там есть место для этого всего?
Владимир Саныч
Дата: 04.03.2003 20:29:23
P.S. И что такое ChangeDB? Мой Object Browser такого не находит.