簡體   English   中英

連接字符串在創建表時不記得密碼

[英]Connection String not remembering Password when creating a table

我有一個Excel電子表格,允許用戶運行報告。 打開電子表格后,會運行一個宏,提示用戶輸入用戶名和密碼以創建連接字符串。 (此信息僅存儲在Excel的該實例中,並在文件關閉時丟失)

以下代碼允許用戶使用打開電子表格時創建的信息運行報表。 這可以反復使用,不會提示輸入用戶名或密碼。

With ActiveWorkbook.Connections("Custom_Query").ODBCConnection
    .BackgroundQuery = True
     Debug.Print strsql
    .CommandText = SplitMeUp(strsql)

    End With

    ActiveWorkbook.Connections("Custom_Query").Refresh

但是,我想創建一個表。 當我修改代碼以便創建表時,系統會提示用戶再次輸入密碼,即使他們在打開電子表格時已經這樣做了。 另外,我必須在下面的代碼中使用ActiveWorkbook.Connections("Custom_Query").ODBCConnection.Connection 如果我從原始代碼使用ActiveWorkbook.Connections("Custom_Query").ODBCConnection ,則VBA錯誤輸出。

With ActiveSheet.QueryTables.Add(Connection:=ActiveWorkbook.Connections("Custom_Query").ODBCConnection.Connection, _
        Destination:=Range("a9"), Sql:=SplitMeUp(strsql))
        .Refresh

如何引用打開文件時創建的連接字符串,以便不再提示用戶重新輸入密碼?

發生的事情是你正在運行兩次連接。 首先是這段代碼

With ActiveWorkbook.Connections("Custom_Query").ODBCConnection
    .BackgroundQuery = True
    Debug.Print strsql
    .CommandText = SplitMeUp(strsql)

End With

ActiveWorkbook.Connections("Custom_Query").Refresh

然后通過調用方法作為其中一部分再次運行它

With ActiveSheet.QueryTables.Add(Connection:=ActiveWorkbook.Connections("Custom_Query").ODBCConnection.Connection, _
    Destination:=Range("a9"), Sql:=SplitMeUp(strsql))
    .Refresh

您要做的是將連接分配給全局對象。 沒有看到你的所有代碼,我最好的猜測是做以下事情:

在模塊的頂部聲明一個連接對象Public dbConnection as ADODB.Connection 在啟動例程中,您需要初始化它Set dbConnection = new ADODB.Connection然后打開它

With dbConnection
    .Provider = "Microsoft.Jet.OLEDB.4.0"  'You'll need to use the correct Provider
    ConnectionString = "Data Source=C:\MyFolder\MyWorkbook.xls;Extended Properties=Excel 8.0;" 'See the link for more info on connection string
   .Open
End With

這是一個連接字符串鏈接,因為我不記得它們。

然后,您可以運行引用dbConnection的命令,而不是重新運行連接方法,即ActiveWorkbook.Connections("Custom_Query").ODBCConnection

就個人而言,我創建了一個DAL模塊來處理所有數據庫交互,或者創建一個dbClass來處理數據操作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM