Solved

OO4O Bind variables

Posted on 2004-08-05
2
302 Views
Last Modified: 2013-12-25
I am creating a report and ask the users to select which divisions they want to see the report for.  They can choose mulitple divisions.  I am trying to figure out if it is possible to select all the information I need without having to create a new bind variable for each division and then changing my sql statement to fit the number of divisions.  I've tried the following with little success.

Private opaDivisions As OraParamArray
Private rs As OraDynaset

DB.Parameters.AddTable "DIVISIONS", ORAPARM_INPUT, ORATYPE_VARCHAR, 10, 5

Set opaDivisions = DB.Parameters("DIVISIONS")

opaDivisions.put_Value "M", 0
opaDivisions.put_Value "T", 1
opaDivisions.put_Value "L", 2

strSql = "SELECT " _
    & "Order.Cabinet_style_info.ItemType, " _
    & "Order.Barcode.Location Location, " _
    & "B.n_status_code Status, " _
    & "count (Order.Barcode.Location) " _
    & "FROM Order.tbl_barcode B " _
    & "INNER JOIN Order.tbl_order_header OH " _
    & "ON B.n_order_number = OH.n_order_number  " _
    & "AND  OH.c_division IN (:DIVISIONS)  " _
    & "WHERE B.n_status_code < 9 " _
    & "AND B.n_deleted_flag = 0 " _
    & "GROUP BY Order.Cabinet_style_info.ItemType , Order.Barcode.Location, B.n_status_code"

Set rs = DB.CreateDynaset(strSql, ORADYN_READONLY)

This will only return the records for division "M" or whatever division I set first.

Any way I can do something like this without having the code simply build the sql string to say exactly which divisions I want to select?

Thanks.
0
Comment
Question by:LoriNeirynck
2 Comments
 

Author Comment

by:LoriNeirynck
ID: 11732623
Solved this problem on my own.  Stopped using the OraParamArray and used a regular bind variable to which I then did an instr.  Looks like this:

Private rs As OraDynaset

DB.Parameters.Add "Division", "", ORATYPE_VARCHAR2

DB.Parameters("Division").Value = "MT"

strSql = "SELECT " _
    & "Order.Cabinet_style_info.ItemType, " _
    & "Order.Barcode.Location Location, " _
    & "B.n_status_code Status, " _
    & "count (Order.Barcode.Location) " _
    & "FROM Order.tbl_barcode B " _
    & "INNER JOIN Order.tbl_order_header OH " _
    & "ON B.n_order_number = OH.n_order_number  " _
    & "INSTR(:DIVISION, OH.c_division) > 0  " _
    & "WHERE B.n_status_code < 9 " _
    & "AND B.n_deleted_flag = 0 " _
    & "GROUP BY Order.Cabinet_style_info.ItemType , Order.Barcode.Location, B.n_status_code"

Set rs = DB.CreateDynaset(strSql, ORADYN_READONLY)

Then I simply build the string for the bind variable and do not have to change my sql statement.
0
 

Accepted Solution

by:
PashaMod earned 0 total points
ID: 11735755
Question closed and points refunded

PashaMod
Cs Moderator
0

Featured Post

How your wiki can always stay up-to-date

Quip doubles as a “living” wiki and a project management tool that evolves with your organization. As you finish projects in Quip, the work remains, easily accessible to all team members, new and old.
- Increase transparency
- Onboard new hires faster
- Access from mobile/offline

Join & Write a Comment

I’ve seen a number of people looking for examples of how to access web services from VB6.  I’ve been using a test harness I built in VB6 (using many resources I found online) that I use for small projects to work out how to communicate with web serv…
Introduction In a recent article (http://www.experts-exchange.com/A_7811-A-Better-Concatenate-Function.html) for the Excel community, I showed an improved version of the Excel Concatenate() function.  While writing that article I realized that no o…
As developers, we are not limited to the functions provided by the VBA language. In addition, we can call the functions that are part of the Windows operating system. These functions are part of the Windows API (Application Programming Interface). U…
Get people started with the process of using Access VBA to control Excel using automation, Microsoft Access can control other applications. An example is the ability to programmatically talk to Excel. Using automation, an Access application can laun…

708 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

16 Experts available now in Live!

Get 1:1 Help Now