Board logo

標題: 連接其他資料庫時,如何可以不用再輸入帳密 [打印本頁]

作者: VANESSA    時間: 2012-2-20 14:46     標題: 連接其他資料庫時,如何可以不用再輸入帳密

此文件的數字是有連接到其他系統,每次要進入時都必須重新輸入帳號及密碼,能直接將帳號及密碼寫在excel裡嗎?開啟excel時就能自動連線了。
作者: doom834    時間: 2012-2-20 15:32

我無法下載附件,你可以試試以下的方法

Const HOST$ = "xxx.xxx.xxx.xxx"  ' Server hosting the Oracle db
Const DBNAME$ = "主機名稱"
Const ORACLE_USER_NAME$ = "使用者名稱"
Const ORACLE_PASSWORD$ = "密碼"

連接時的語法
            ' Connect DB
            strConOracle = "Driver={Microsoft ODBC for Oracle}; CONNECTSTRING=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)"
            strConOracle = strConOracle & "(HOST=" & HOST & ")(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=" & DBNAME
            strConOracle = strConOracle & "))); uid=" & ORACLE_USER_NAME & " ;pwd=" & ORACLE_PASSWORD & ";"
            Set oConOracle = CreateObject("ADODB.Connection")
            Set oRsOracle = CreateObject("ADODB.RecordSet")
            oConOracle.Open strConOracle
作者: VANESSA    時間: 2012-2-20 16:02

回復 2# doom834


    謝謝您,但是我試沒有成功,如果我是連到這個資料庫http://100.00.000.000/HFMOfficeProvider/HFMOfficeProvider.aspx.
資料庫名稱:abcde
帳號:fghij
密碼:12345
那我該如何修改?
作者: doom834    時間: 2012-2-20 17:00

理論上是降子改
Const HOST$ = "100.00.000.000"
Const DBNAME$ = "abcde"
Const ORACLE_USER_NAME$ = "fghij"
Const ORACLE_PASSWORD$ = "12345"

連接資料庫時:
            ' Connect DB
            strConOracle = "Driver={Microsoft ODBC for Oracle}; CONNECTSTRING=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)"
            strConOracle = strConOracle & "(HOST=" & HOST & ")(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=" & DBNAME
            strConOracle = strConOracle & "))); uid=" & ORACLE_USER_NAME & " ;pwd=" & ORACLE_PASSWORD & ";"
            Set oConOracle = CreateObject("ADODB.Connection")
            Set oRsOracle = CreateObject("ADODB.RecordSet")
            oConOracle.Open strConOracle
                    
            Set oRsOracle = oConOracle.Execute(My_SQL) 'My_SQL請自行定義你的sql
            
            For I = 1 To oRsOracle.Fields.Count
            
                Sheets("TEST").Cells(1, I).Value = oRsOracle.Fields(I - 1).Name
            
            Next I
            
            Do While Not oRsOracle.EOF
            
                Sheets("TEST").Cells(2, 1).CopyFromRecordset oRsOracle
            
            Loop
作者: VANESSA    時間: 2012-2-21 11:55

回復 4# doom834


    要吸收這個程式的意思,對我而言有點困難需要一些時間,先謝謝您的幫忙
作者: doom834    時間: 2012-2-21 17:19

提醒你一下,我這個連接的資料庫是Oracle的方式,
若你連接的資料庫是access或SQL Server,那寫法可能要有所變更,
例如用連接access則要改成

連接資料庫時:
' Connect DB
Dim My_con As New ADODB.Connection
Dim My_set As ADODB.Recordset

My_FileName = "aaa.mdb" '請自行輸入你access的檔案名稱
My_con.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & ThisWorkbook.Path & "\" & My_FileName & ";"
My_SQL = "select * from test_table" 'My_SQL請自行定義你的sqlㄝ,例如:My_SQL= "select * from XXXX(此為你的資料表名稱)
Set My_set = My_con.Execute(My_SQL)            
For I = 1 To My_set.Fields.Count
   Cells(1, I).Value = My_set.Fields(I - 1).Name
Next I
            
Do While Not My_set.EOF
   Cells(2, 1).CopyFromRecordset My_set
Loop
作者: doom834    時間: 2012-2-21 17:27

忘記提醒要設定引用項目
Microsoft ActiveX Data Object 2.0 Library
記得要勾喔
作者: VANESSA    時間: 2012-2-22 10:46

回復 7# doom834


    謝謝您,我的資料來源是HYPERION系統(這是ORACLE公司的應用軟體之一)我不知道這是用什麼寫的,所以我會再試試,謝謝




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)