Страница: 1 |
Всем здравствуйте. Подскажите, пожалуйста, кок подключить базу, чтобы она не была жестко привязана к конкретному пути, указанному в Connection String, который формировался при написании проекта, а чтобы можно было базу положить в любое место на диске, например App.Path и при запуске указать её новое положение в ADODC.ConnectionString
public ConnStr as string 'помести строку подключения в модуль и сделай ее общедоступной теперь в строку подключения ты можешь занносить когда угодно и какой угодно путь к БД. После этого просто указываешь объекту соединение эту строку подключения: cn.ConnectionString=ConnStr Я так пробовал, но это ничего не даёт. Базу открывает с такой строкой связи, хотя на С: никакой базы нет, база лежит на D: Как с этим явлением бороться??? Где программа запоминает старый путь? Поиском просмотрел исходник, строка ADODC1.ConnectionString только в Sub Main встречается, там, где я её меняю. Заглянул в файл .dsn - там вообще какой-то другой путь указан... Я так пробовал, но это ничего не даёт. Базу открывает с такой строкой связи, хотя на С: никакой базы нет, база лежит на D: Как с этим явлением бороться??? Где программа запоминает старый путь? Поиском просмотрел исходник, строка ADODC1.ConnectionString только в Sub Main встречается, там, где я её меняю. Заглянул в файл .dsn - там вообще какой-то другой путь указан... А попробуй через эту функцию Public Function strConectionString() As String On Error GoTo ErrConnect Dim cn As ADODB.Connection Dim MSDASCObj As MSDASC.DataLinks Dim StrokaConnect As String Set MSDASCObj = New MSDASC.DataLinks Set cn = New ADODB.Connection MSDASCObj.PromptEdit cn 'MSDASCObj.PromptNew cn cn.Open 'MsgBox cn.DefaultDatabase If cn.DefaultDatabase = "DB_RASKROY" Then ' Если не твоя база то выход StrokaConnect = cn.ConnectionString 'MsgBox cn.ConnectionString 'MsgBox "Connection opened successfully" Else MsgBox "Это БД не подойдет для работы" End If cn.Close strConectionString = StrokaConnect Exit Function ErrConnect: MsgBox Err.Description End Function Я через нее работаю тут сразу все провайдеры присутствуют и легко изменять когда сервер БД изменился. Страница: 1 |
Вопрос: Connection String
Добавлено: 29.01.04 07:33
Автор вопроса: cresta
Ответы
Всего ответов: 4
Номер ответа: 1
Автор ответа:
POMAH
ICQ: 223-574-928
Вопросов: 0
Ответов: 16
Профиль | | #1
Добавлено: 29.01.04 09:10
Номер ответа: 2
Автор ответа:
cresta
Вопросов: 117
Ответов: 1538
Профиль | | #2
Добавлено: 29.01.04 11:55
Sub Main()
' On Error Resume Next
If App.PrevInstance Then End
' ConnStr_1 = "Provider=MSDASQL.1;Persist Security Info=False;Extended Properties="
' ConnStr_1 = ConnStr_1 & """" & "DBQ=" & App.Path & "\Main.mdbefaultDir=" & App.Path & "river={Microsoft Access Driver (*.mdb)}riverId=281;FIL=MS Access;FILEDSN=" & App.Path & "\1sourse1.dsn;MaxBufferSize=2048;MaxScanRows=8;PageTimeout=5;SafeTransactions=0;Threads=3;UID=admin;UserCommitSync=Yes;"
' ConnStr_1 = ConnStr_1 & """" & ";Initial Catalog=" & App.Path & "\Main"
frmMain.Adodc1.ConnectionString = Replace(frmMain.Adodc1.ConnectionString, "D:\CR", App.Path)
Load frmMain
frmMain.WindowState = 2
frmMain.Adodc1.Recordset.MoveFirst
frmMain.DataGrid1.SelBookmarks.Add frmMain.Adodc1.Recordset.Bookmark
frmMain.Caption = frmMain.Adodc1.ConnectionString
Set PRNT = Printer
End Sub
Вот весь код Sub Main
Cтрока связи меняется, НО, как это ни странно, по прежнему обращается к старому месту. В заголовке формы: Provider=MSDASQL.1;Persist Security Info=False;Extended Properties="DBQ=C:\Program Files\CR\Main.mdbefaultDir=C:\Program Filesriver={Microsoft Access Driver (*.mdb)}riverId=281;FIL=MS Access;FILEDSN=C:\Program Files\1sourse1.dsn;MaxBufferSize=2048;MaxScanRows=8;PageTimeout=5;SafeTransactions=0;Threads=3;UID=admin;UserCommitSync=Yes;";Initial Catalog=C:\Program Files\Main
Пробовал как через Replace, так и через глобальную ConnStr_1 (закомментрированный кусок кода).
Номер ответа: 3
Автор ответа:
cresta
Вопросов: 117
Ответов: 1538
Профиль | | #3
Добавлено: 29.01.04 11:55
Sub Main()
' On Error Resume Next
If App.PrevInstance Then End
' ConnStr_1 = "Provider=MSDASQL.1;Persist Security Info=False;Extended Properties="
' ConnStr_1 = ConnStr_1 & """" & "DBQ=" & App.Path & "\Main.mdbefaultDir=" & App.Path & "river={Microsoft Access Driver (*.mdb)}riverId=281;FIL=MS Access;FILEDSN=" & App.Path & "\1sourse1.dsn;MaxBufferSize=2048;MaxScanRows=8;PageTimeout=5;SafeTransactions=0;Threads=3;UID=admin;UserCommitSync=Yes;"
' ConnStr_1 = ConnStr_1 & """" & ";Initial Catalog=" & App.Path & "\Main"
frmMain.Adodc1.ConnectionString = Replace(frmMain.Adodc1.ConnectionString, "D:\CR", App.Path)
Load frmMain
frmMain.WindowState = 2
frmMain.Adodc1.Recordset.MoveFirst
frmMain.DataGrid1.SelBookmarks.Add frmMain.Adodc1.Recordset.Bookmark
frmMain.Caption = frmMain.Adodc1.ConnectionString
Set PRNT = Printer
End Sub
Вот весь код Sub Main
Cтрока связи меняется, НО, как это ни странно, по прежнему обращается к старому месту. В заголовке формы: Provider=MSDASQL.1;Persist Security Info=False;Extended Properties="DBQ=C:\Program Files\CR\Main.mdbefaultDir=C:\Program Filesriver={Microsoft Access Driver (*.mdb)}riverId=281;FIL=MS Access;FILEDSN=C:\Program Files\1sourse1.dsn;MaxBufferSize=2048;MaxScanRows=8;PageTimeout=5;SafeTransactions=0;Threads=3;UID=admin;UserCommitSync=Yes;";Initial Catalog=C:\Program Files\Main
Пробовал как через Replace, так и через глобальную ConnStr_1 (закомментрированный кусок кода).
Номер ответа: 4
Автор ответа:
Born
ICQ: 178155071
Вопросов: 21
Ответов: 52
Профиль | | #4
Добавлено: 02.02.04 06:56