Passthrough criteria in excel 2003 from oracle 10g

Posted on 2010-08-25
Last Modified: 2012-05-10
I have an excel VB script that connects to oracle 10g then returns values from a query. at present I hardcode the sql query in the script but would like to make it open so that users can enter a value on the spreadsheet and the sql query will use that instead.

I am aware that you can do this using the import database wizard and create parameters but would like to use a method similar to what I have now.

Any ideas

Sub Balance_Analysis()

Dim cn As ADODB.Connection, rs As ADODB.Recordset, intColIndex As Integer

Set TargetRange = Sheets("BalanceAnalysis").Cells(1, 1)

'Dim source As String

Dim user As String

Dim password As String

Dim Company As String

Dim rg As Range

    Source = Login.TextBox1.Value

    user = Login.TextBox2.Value

    password = Login.TextBox3.Value

    Company = Login.TextBox4.Value


    'Toggle the worksheets

    Application.DisplayAlerts = True

    Application.ScreenUpdating = False

    Application.Calculation = xlCalculationManual

    Sheets("BalanceAnalysis").Visible = True





    ' open the database

Set cn = New ADODB.Connection

    cn.Open "Provider=OraOLEDB.Oracle;" & _

           "Data Source=" & Source & ";" & _

           "User Id=" & user & ";" & _

           "Password=" & password & ""

Set rs = New ADODB.Recordset

    With rs


    sSql = "select distinct company, accounting_year, account, account_desc, " & _

    "sum(amount_balance) over ( PARTITION BY account order by account range unbounded preceding) as cumulative " & _

    "from accounting_balance_auth " & _

    "where company = 'M02' " & _

    "and accounting_year = '2010' " & _

    "and accounting_period <= '2' " & _

    "order by 3"


    rs.Open sSql, cn, adOpenStatic, adLockReadOnly, adCmdText


For intColIndex = 0 To rs.Fields.Count - 1 ' the field names

            TargetRange.Offset(0, intColIndex).Value = rs.Fields(intColIndex).Name


    TargetRange.Offset(1, 0).CopyFromRecordset rs ' the recordset data

  End With


    Set rs = Nothing


    Set cn = Nothing


    'Toggle the worksheets

    ActiveWindow.SelectedSheets.Visible = False



    'Application.Calculation = xlCalculationAutomatic

    Application.DisplayAlerts = False

    Application.ScreenUpdating = True


End Sub

Open in new window

Question by:DarrenJackson
  • 2
LVL 17

Accepted Solution

calacuccia earned 500 total points
Comment Utility
This will add a Worksheet variable (Declare it as Worksheet on top), with a name "Reader" where in cells A1 to A3 your data are written down by the user and then uses the values of the cells in the string.

    'Declare ReadingSheet
    Set ReadS = Worksheets("Reader")
    sSql = "select distinct company, accounting_year, account, account_desc, " & _
    "sum(amount_balance) over ( PARTITION BY account order by account range unbounded preceding) as cumulative " & _
    "from accounting_balance_auth " & _
    "where company = '" & ReadS.Range("A1") & "' " & _
    "and accounting_year = '" & ReadS.Range("A2") & "' " & _
    "and accounting_period <= '" & ReadS.Range("A3") & "' " & _
    "order by 3"

Author Comment

Comment Utility

Amazing very quick response thankyou

Works perfect

Author Closing Comment

Comment Utility
Excellent  Thankyou

Featured Post

How to run any project with ease

Manage projects of all sizes how you want. Great for personal to-do lists, project milestones, team priorities and launch plans.
- Combine task lists, docs, spreadsheets, and chat in one
- View and edit from mobile/offline
- Cut down on emails

Join & Write a Comment

Suggested Solutions

I was working on a PowerPoint add-in the other day and a client asked me "can you implement a feature which processes a chart when it's pasted into a slide from another deck?". It got me wondering how to hook into built-in ribbon events in Office.
This article descibes how to create a connection between Excel and SAP and how to move data from Excel to SAP or the other way around.
The viewer will learn how to create a normally distributed random variable in Excel, use a normal distribution to simulate the return on an investment over a period of years, Create a Monte Carlo simulation using a normal random variable, and calcul…
This Micro Tutorial will demonstrate on a Mac how to change the sort order for chart legend values and decrpyt the intimidating chart menu.

744 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

18 Experts available now in Live!

Get 1:1 Help Now