Dynamic Variable Names - Syntax?

Discussion in 'ASP General' started by Ken Halley, Nov 6, 2003.

  1. Ken Halley

    Ken Halley Guest

    How does one refer to a variable name using a variable within a variable
    name??? For example, I want to perform a SQL query and use the results of
    the query to determine which variable to assign a value to. Let's say I've
    dimmed 12 variables based on the months called "featured_x_product" where x
    is the month. I'd like to refer to the variable with something
    like: featured_" & R("month") & "_product where R("month") is the from the
    current row in the db. I don't know the correct syntax or method for doing
    so. A full example is provided below. Thanks in advance for you help!

    dim featured_jan_product
    dim featured_feb_product
    dim featured_mar_product
    dim featured_apr_product
    ....

    SELECT status, month from products where year='2004' AND
    page='featured_products'

    While not R.EOF
    If R("status") = "sold" Then
    featured_" & R("month") & "_product = "Sold Out!" // (choose the
    variable based on the "month" value in the current row)
    Else
    featured_" & R("month") & "_product = "Buy Now!"
    End If
    R.MoveNext
    Wend
     
    Ken Halley, Nov 6, 2003
    #1
    1. Advertising

  2. Take a look at eval and exec in the VBScript documentation.



    "Ken Halley" <> wrote in message
    news:...
    > How does one refer to a variable name using a variable within a variable
    > name??? For example, I want to perform a SQL query and use the results of
    > the query to determine which variable to assign a value to. Let's say

    I've
    > dimmed 12 variables based on the months called "featured_x_product" where

    x
    > is the month. I'd like to refer to the variable with something
    > like: featured_" & R("month") & "_product where R("month") is the from the
    > current row in the db. I don't know the correct syntax or method for

    doing
    > so. A full example is provided below. Thanks in advance for you help!
    >
    > dim featured_jan_product
    > dim featured_feb_product
    > dim featured_mar_product
    > dim featured_apr_product
    > ...
    >
    > SELECT status, month from products where year='2004' AND
    > page='featured_products'
    >
    > While not R.EOF
    > If R("status") = "sold" Then
    > featured_" & R("month") & "_product = "Sold Out!" // (choose the
    > variable based on the "month" value in the current row)
    > Else
    > featured_" & R("month") & "_product = "Buy Now!"
    > End If
    > R.MoveNext
    > Wend
    >
    >
    >
    >
     
    Aaron Bertrand - MVP, Nov 6, 2003
    #2
    1. Advertising

  3. Ken Halley

    Ray at Guest

    You can use the Eval function to do this, but I suggest not using Eval. It
    makes for the most confusing and sloppy code you'll ever see.

    How about using an array?

    Dim featured_products(11) ''vbscrip arrays are zero based

    If your storing your months in your database as "jan", "feb", "mar", and so
    on, you'll have to deal with them with a select Case or some other thing.
    Or, use a dictionary object or something. Let's try with a dictionary
    object first.

    Dim oDict
    oDict.Add "jan", 0
    oDict.Add "feb", 1
    oDict.Add "mar", 2
    oDict.Add "apr", 3
    oDict.Add "may", 4
    oDict.Add "jun", 5
    oDict.Add "jul", 6
    oDict.Add "aug", 7
    oDict.Add "sep", 8
    oDict.Add "oct", 9
    oDict.Add "nov", 10
    oDict.Add "dec", 11


    While Not r.EOF
    If r("status") = "sold" Then
    featured_products(oDict(r("month"))) = "Sold out"
    Else
    ''''etc.


    My mind has been sleeping all week, so if this makes no sense or if I make
    no sense, accept my apologies.

    Ray at work





    "Ken Halley" <> wrote in message
    news:...
    > How does one refer to a variable name using a variable within a variable
    > name??? For example, I want to perform a SQL query and use the results of
    > the query to determine which variable to assign a value to. Let's say

    I've
    > dimmed 12 variables based on the months called "featured_x_product" where

    x
    > is the month. I'd like to refer to the variable with something
    > like: featured_" & R("month") & "_product where R("month") is the from the
    > current row in the db. I don't know the correct syntax or method for

    doing
    > so. A full example is provided below. Thanks in advance for you help!
    >
    > dim featured_jan_product
    > dim featured_feb_product
    > dim featured_mar_product
    > dim featured_apr_product
    > ...
    >
    > SELECT status, month from products where year='2004' AND
    > page='featured_products'
    >
    > While not R.EOF
    > If R("status") = "sold" Then
    > featured_" & R("month") & "_product = "Sold Out!" // (choose the
    > variable based on the "month" value in the current row)
    > Else
    > featured_" & R("month") & "_product = "Buy Now!"
    > End If
    > R.MoveNext
    > Wend
    >
    >
    >
    >
     
    Ray at, Nov 6, 2003
    #3
  4. Ken Halley

    Ken Halley Guest

    Thanks Ray. The situation is a little more complicated than my example in
    that I have two pieces of the variable name that I want to make dynamic, the
    month and the category (see below). So the single array idea doesn't solve
    it. Any other thoughts?

    The variable format is: category_month_color

    R("category") & "_" & R("month") & "_color = "#0000FF"



    "Ray at <%=sLocation%>" <myfirstname at lane34 dot com> wrote in message
    news:...
    > You can use the Eval function to do this, but I suggest not using Eval.

    It
    > makes for the most confusing and sloppy code you'll ever see.
    >
    > How about using an array?
    >
    > Dim featured_products(11) ''vbscrip arrays are zero based
    >
    > If your storing your months in your database as "jan", "feb", "mar", and

    so
    > on, you'll have to deal with them with a select Case or some other thing.
    > Or, use a dictionary object or something. Let's try with a dictionary
    > object first.
    >
    > Dim oDict
    > oDict.Add "jan", 0
    > oDict.Add "feb", 1
    > oDict.Add "mar", 2
    > oDict.Add "apr", 3
    > oDict.Add "may", 4
    > oDict.Add "jun", 5
    > oDict.Add "jul", 6
    > oDict.Add "aug", 7
    > oDict.Add "sep", 8
    > oDict.Add "oct", 9
    > oDict.Add "nov", 10
    > oDict.Add "dec", 11
    >
    >
    > While Not r.EOF
    > If r("status") = "sold" Then
    > featured_products(oDict(r("month"))) = "Sold out"
    > Else
    > ''''etc.
    >
    >
    > My mind has been sleeping all week, so if this makes no sense or if I make
    > no sense, accept my apologies.
    >
    > Ray at work
    >
    >
    >
    >
    >
    > "Ken Halley" <> wrote in message
    > news:...
    > > How does one refer to a variable name using a variable within a variable
    > > name??? For example, I want to perform a SQL query and use the results

    of
    > > the query to determine which variable to assign a value to. Let's say

    > I've
    > > dimmed 12 variables based on the months called "featured_x_product"

    where
    > x
    > > is the month. I'd like to refer to the variable with something
    > > like: featured_" & R("month") & "_product where R("month") is the from

    the
    > > current row in the db. I don't know the correct syntax or method for

    > doing
    > > so. A full example is provided below. Thanks in advance for you help!
    > >
    > > dim featured_jan_product
    > > dim featured_feb_product
    > > dim featured_mar_product
    > > dim featured_apr_product
    > > ...
    > >
    > > SELECT status, month from products where year='2004' AND
    > > page='featured_products'
    > >
    > > While not R.EOF
    > > If R("status") = "sold" Then
    > > featured_" & R("month") & "_product = "Sold Out!" // (choose

    the
    > > variable based on the "month" value in the current row)
    > > Else
    > > featured_" & R("month") & "_product = "Buy Now!"
    > > End If
    > > R.MoveNext
    > > Wend
    > >
    > >
    > >
    > >

    >
    >
     
    Ken Halley, Nov 7, 2003
    #4
  5. > month and the category (see below). So the single array idea doesn't
    solve
    > it. Any other thoughts?


    Uh, a two dimensional array?

    dim arrayName(<<<?>>>, 2)
    arrayName(0, 0) = R("category")
    arrayName(0, 1) = R("month")
    arrayName(0, 2) = "#0000FF"

    Dictionary objects can also hold complex types like arrays or even other
    dictionary objects. I really think others are on the right track when they
    suggest staying away from eval/exec... I just offered it as a possible
    alternative.
     
    Aaron Bertrand - MVP, Nov 7, 2003
    #5
  6. Ken Halley

    Ray at Guest

    I strongly suggest you find another approach that involves arrays or
    something else. If you write a page that is laden with Evals and Execs,
    it's going to be impossible to understand a week later when you look at it.
    This is just my opinion.

    Ray at home

    "Ken Halley" <> wrote in message
    news:...
    > Thanks Ray. The situation is a little more complicated than my example in
    > that I have two pieces of the variable name that I want to make dynamic,

    the
    > month and the category (see below). So the single array idea doesn't

    solve
    > it. Any other thoughts?
    >
    > The variable format is: category_month_color
    >
    > R("category") & "_" & R("month") & "_color = "#0000FF"
    >
     
    Ray at, Nov 7, 2003
    #6
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Replies:
    2
    Views:
    8,380
    cesarjusto
    Jul 15, 2010
  2. wanwan
    Replies:
    3
    Views:
    456
    Alex Martelli
    Oct 14, 2005
  3. Sriram Rajagopalan

    Syntax for variable names spanning multiple lines in C

    Sriram Rajagopalan, Nov 13, 2006, in forum: C Programming
    Replies:
    28
    Views:
    860
    Richard Bos
    Nov 16, 2006
  4. News123
    Replies:
    2
    Views:
    486
    John Machin
    Nov 26, 2008
  5. Peter Buckley
    Replies:
    5
    Views:
    224
    matt neuburg
    Feb 27, 2009
Loading...

Share This Page