Solved

Passthrough criteria in excel 2003 from oracle 10g

Posted on 2010-08-25
3
377 Views
Last Modified: 2012-05-10
Guys
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

Regards
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

    Sheets("BalanceAnalysis").Select

    Cells.Select

    Selection.ClearContents

    

    ' 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

  Next

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



  End With

    rs.Close

    Set rs = Nothing

    cn.Close

    Set cn = Nothing

     

    'Toggle the worksheets

    ActiveWindow.SelectedSheets.Visible = False

    Sheets("p&l").Select

    Range("A3").Select

    'Application.Calculation = xlCalculationAutomatic

    Application.DisplayAlerts = False

    Application.ScreenUpdating = True

  

End Sub

Open in new window

0
Comment
Question by:DarrenJackson
  • 2
3 Comments
 
LVL 17

Accepted Solution

by:
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"
0
 

Author Comment

by:DarrenJackson
Comment Utility
calacuccia

Amazing very quick response thankyou

Works perfect
0
 

Author Closing Comment

by:DarrenJackson
Comment Utility
Excellent  Thankyou
0

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