Страницы: 1
RSS
Строка подключения в публичной константе
 
Приветствую, форумчане!

Имеется база данных access, вся работе идет с excel книги.
И дабы не писать каждый раз везде строку подключения, я вывел ее в публичную константу:
Код
Public Const ConnectionString As String = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=C:\database.accdb; Jet OLEDB:Database;"
Все работает, но мне захотелось сделать привязку пути в строке на ячейку.
Т.е. допустим, в ячейке A1 находится путь C:\database.accdb, соответственно пытался изменить константу на:
Код
Public path As String
Public Const ConnectionString As String = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" & path & ";" & "Jet OLEDB:Database;"
Где path принимает строку с ячейки A1.
Выдает ошибку - constant expression required. Понятное дело, что константа она на то константа, что менять ее нельзя. Но неужели ее никак нельзя объявить как типа String один раз и работать постоянно с ней?
 
А просто глобальной переменной нельзя?
 
Юрий М, можно конечно.
Код
Public path As String
Public ConnectionString As String

path = Cells(1, 1)
ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;" & "Data Source=" & path & ";" & "Jet OLEDB:Database;"
Но,
Цитата
дабы не писать каждый раз везде строку подключения
Или это бесполезное занятие, пытаться в константе подсунуть глобальную переменную? :)
 
если работает, то пробуйте
Public Const ConnectionString As String = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=$1; Jet OLEDB:Database;"
по коду делайте строку .Connection = Replace$(ConnectionString , "$1", ячейка с путём.Value)
Изменено: JeyCi - 18.07.2016 22:39:00
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
 
Склоняюсь к тому, что не получится так с константой.
 
JeyCi, большое спасибо!
Так бы не додумался :)
Код
Public Const ConnectionString As String = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=$1; Jet OLEDB:Database;"

Sub test()

    Dim con As Object
    Dim rst As Object
    path = Cells(1, 1).Value
    Set con = CreateObject("ADODB.Connection")
    Set rst = CreateObject("ADODB.Recordset")
    con.Open Replace(ConnectionString, "$1", path)
    MsgBox "Yes!"
    Set con = Nothing
    Set rst = Nothing
    
End Sub
 
да, типа того имела в виду  :)  
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
 
:(
Так нет?
Код
con.Open ConnectionString(path) 

Public function  ConnectionString(Database) As String
 ConnectionString= "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" & Database 
end function
Изменено: Doober - 19.07.2016 01:26:39
 
Doober, большое спасибо, Сергей!)
Так тоже вариант, проверил, работает.
Конечно бы хотелось получить ответ на изначальный вопрос, но как я понял, с константой извращаться не положено, и можно делать что угодно в конечной string.
Страницы: 1
Наверх