我正在尝试更改excel从JDE到SQL Server 2014的连接。如何/我应该做什么/更改以便连接到我的ODBC中的另一个DSN。
这是我的cnnStr代码:
uid = Range("P_Uid")
pwd = Range("P_Pwd")
dsn = Range("P_Dsn")
cnnstr = "ODBC;DSN=" + dsn + ";UID=" + uid + ";PWD=" + pwd
这是VBA的原始代码:
Dim strCnn As String
Dim i As Long
Dim y As Long
Dim j As Long
Dim z As Double
Dim w As Double
Dim Wks As DAO.Workspace
Dim Cnn As DAO.Connection
Dim Qdf As DAO.QueryDef
Dim Rec As DAO.Recordset
Dim date1, date2 As String
Dim x As Long
Dim w_price As Double
Dim w_amt As Double
Dim w_qty As Long
Dim Xref_Name(10) As Variant
Set Rec = Nothing
Set Wks = CreateWorkspace("WKSTmp", "", "", dbUseODBC)
Set Cnn = Wks.OpenConnection("", dbDriverNoPrompt, True, cnnstr)
Cnn.QueryTimeout = 1800
Set Rec = Cnn.OpenRecordset(SQL)
avarow = Worksheets("Ava").UsedRange.Rows.Count
每当我鼠标移动到cnnstr时,我都会看到这段代码:
cnnstr = "ODBC;DSN=JDE;UID=abc;PWD=abc"
即使我尝试更改上面的连接和cnnStr,DSN仍然是JDE。 cnnstr的详细信息取自excel文件中的控制表。对控制单进行的更改证明是徒劳的。
请告知我如何更改dsn,以便从SQL Server 2014获取数据。
答案 0 :(得分:0)
这是我用来连接SQL Server 2014的方法,
代码,
Sub ConnectSQLServer()
Dim conn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim sConnString As String
sConnString = "PROVIDER=SQLOLEDB;" & _
"Data Source=xxx.xxx.x.xxx,1433;" & _
"Initial Catalog=Staff_Manager;" & _
"User Id=sa;" & _
"Password=myPassword;"
Set conn = New ADODB.Connection
Set rs = New ADODB.Recordset
conn.Open sConnString
Set rs.ActiveConnection = conn
Set rs.ActiveConnection = conn
strSQL = "SELECT Your SQL Statement "
rs.Open strSQL
如果这是你想要实现的目标,那么这将有效。
答案 1 :(得分:0)
假设您没有从原始代码中遗漏任何重要内容,cnnstr
既不是本地声明的变量,也不是在该例程中分配的变量。您很可能拥有cnnstr()
函数,或者是在CreateWorkspace()
函数中设置的全局变量。
查找代码仍在何处将旧的连接字符串分配给cnnstr
的最简单方法是使用“查找”在当前项目中搜索“ cnnstr =“。 (减去引号。)确保您正在搜索“当前项目”,以防分配在其他模块中进行。