Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Работа с данными

Страница: 1 |

 

  Вопрос: Connection String Добавлено: 29.01.04 07:33  

Автор вопроса:  cresta

Всем здравствуйте. Подскажите, пожалуйста, кок подключить базу, чтобы она не была жестко привязана к конкретному пути, указанному в Connection String, который формировался при написании проекта, а чтобы можно было базу положить в любое место на диске, например App.Path и при запуске указать её новое положение в ADODC.ConnectionString

Ответить

  Ответы Всего ответов: 4  

Номер ответа: 1
Автор ответа:
 POMAH



ICQ: 223-574-928 

Вопросов: 0
Ответов: 16
 Профиль | | #1 Добавлено: 29.01.04 09:10

public ConnStr as string 'помести строку подключения в модуль и                                       сделай ее общедоступной

теперь в строку подключения ты можешь занносить когда угодно и какой угодно  путь к БД. После этого просто указываешь объекту соединение эту строку подключения: cn.ConnectionString=ConnStr

 

Ответить

Номер ответа: 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.mdb;DefaultDir=" & App.Path & ";Driver={Microsoft Access Driver (*.mdb)};DriverId=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.mdb;DefaultDir=C:\Program Files;Driver={Microsoft Access Driver (*.mdb)};DriverId=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

Базу открывает с такой строкой связи, хотя на С: никакой базы нет, база лежит на D: Как с этим явлением бороться??? Где программа запоминает старый путь? Поиском просмотрел исходник, строка ADODC1.ConnectionString только в Sub Main встречается, там, где я её меняю. Заглянул в файл .dsn - там вообще какой-то другой путь указан...
Пробовал как через 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.mdb;DefaultDir=" & App.Path & ";Driver={Microsoft Access Driver (*.mdb)};DriverId=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.mdb;DefaultDir=C:\Program Files;Driver={Microsoft Access Driver (*.mdb)};DriverId=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

Базу открывает с такой строкой связи, хотя на С: никакой базы нет, база лежит на D: Как с этим явлением бороться??? Где программа запоминает старый путь? Поиском просмотрел исходник, строка ADODC1.ConnectionString только в Sub Main встречается, там, где я её меняю. Заглянул в файл .dsn - там вообще какой-то другой путь указан...
Пробовал как через Replace, так и через глобальную ConnStr_1 (закомментрированный кусок кода).

Ответить

Номер ответа: 4
Автор ответа:
 Born



ICQ: 178155071 

Вопросов: 21
Ответов: 52
 Профиль | | #4 Добавлено: 02.02.04 06:56

А попробуй через эту функцию

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 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам