从VBA访问Oracle SQL Developer数据库

时间:2018-02-09 17:53:53

标签: sql excel vba oracle

VBA新手,15年后返回SQL。我正在尝试使用VBA运行SQL命令将数据下载到excel中以进行进一步操作。

我在我的机器上安装了SQL Developer,并且我可以使用UI访问数据库。我已经想出如何连接到数据库并在SQL Developer界面中运行查询,但说实话,我不是IT人员。

任何想法如何做到这一点?即使是连接数据库并运行查询的基本命令行命令也会有所帮助。

我在另一个网站上找到了这个代码,但是我无法让我的连接字符串工作。我的宏在cnn.Open语句中出错,并说没有安装Provider。我认为这是因为PROVIDER设置为不同的SQL数据库类型,但我似乎无法使连接字符串起作用。

我知道我的用户名和密码,我已成功用于连接SQL Developer UI。我不确定要为远程IP地址或数据库放什么。这将是SQL Developer中连接属性对话框中的主机名和SID吗? (主机名看起来更像是没有http而不是ip地址的URL。不确定主机名和IP地址是否是可互换的术语。)

Sub Download_Reports()
'Initializes variables
Dim cnn As New ADODB.Connection
Dim rst As New ADODB.Recordset
Dim ConnectionString As String
Dim StrQuery As String


'Setup the connection string for accessing MS SQL database
   'Make sure to change:
       '1: PASSWORD
       '2: USERNAME
       '3: REMOTE_IP_ADDRESS
       '4: DATABASE
    ConnectionString = "Provider=ORAOLEDB.ORACLE;Password=PASSWORD;Persist Security Info=True;User ID=USERNAME;Data Source=REMOTE_IP_ADDRESS;Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Use Encryption for Data=False;Tag with column collation when possible=False;Initial Catalog=DATABASE"

    'Opens connection to the database
    cnn.Open ConnectionString
    'Timeout error in seconds for executing the entire query; this will run for 15 minutes before VBA timesout, but your database might timeout before this value
    cnn.CommandTimeout = 900


    'This is your actual MS SQL query that you need to run; you should check this query first using a more robust SQL editor (such as HeidiSQL) to ensure your query is valid
    StrQuery = "SELECT TOP 10 * FROM tbl_table"


    'Performs the actual query
    rst.Open StrQuery, cnn
    'Dumps all the results from the StrQuery into cell A2 of the first sheet in the active workbook
    Sheets(1).Range("A2").CopyFromRecordset rst
End Sub

我的连接字符串需要帮助。谁能帮我这个? 我通过Oracle SQL Developer连接到数据库。我可以通过提供以下项目在UI中进行连接:

  1. 连接名称 - 得到它。
  2. myUsername - 得到它。
  3. myPassword - 得到它。
  4. 连接类型=基本,角色=默认
  5. myHostname - 得到它。
  6. myPort - 得到它。
  7. mySID - 明白了。
  8. 但是,我无法让我的连接字符串在VBA中工作。当我运行脚本时,我得到了

      

    “运行时错误'3076'。无法找到提供商。

    可能无法正确安装“以cnn.open开头的行。

0 个答案:

没有答案