Start New Discussion within our Software Development Community


I am (still) converting an old asp web app / vb6 dll to aspx /
I am now biting on a fairly simple function in vbscript: the execute() function
What the vbscript does is the following: It reads in a variable name and its (string) value from a database in a loop.
The variables were then created and set to the value by calling the execute functio:

here is a code snippet:

do while ...
        strVarName = ds("varname")
        strVarValue = ds("varvalue")
        call execute(strVarName=""" & strVarValue & """")

after this there existed a variable with the name and value as requested
In I would like to do something similar. I will have to declare all possible variables I suppose, but it would be nice to be able to keep the loop.

If not I'll have to recode a fill procedure that assigns all values, but maybe someone here has a good suggestion

Can you have something like this:

Do While True
    strVarName = ds.Tables("MyTable")(iRow)("varname")
    strVarValue = ds.Tables("MyTable")(iRow)("varvalue")
    If Execute(strVarName, strVarValue) Then Exit Do
    'If the function returns True, the loop will exit.

Private Function Execute(ByVal sVarName As String, ByVal sVarValue As String) As Boolean
    'Your code here
End Function

Or am I grossly misunderstanding the question?

after this there existed a variable with the name and value as requested

This sounds like a key-value pair to me. Perhaps a Dictionary will work.

Dictionaries are a life saver.

vbScript had the functions, Execute and ExcecuteGlobal which allowed runtime execution of VB expressions (strings) with various levels of scoping. As I recall, this feature is not available in 2010 but might be have been restored in 2012. If you really need to execute dynamic code then you might look into VB 2012. If you don't mind handling the dynamic expressions yourself (ie maintaining your own symbol table) then TnTinMN's suggestion is likely your best bet.

If it's dynamic code execution, then that can be handled via CodeDom and compile on the fly. Not to difficult to do, but takes some setup to get right.

But based on my understanding of the OP's stated situation, it looks like just some value that needs to be referenced by name.

Hm, I'm sure I marked this as solved two days ago.
Anyway, the dictionary solution was the one that matched closest. I still had to replace the hundtred or so of calls to doSomethingwith(VarName) with doSomethingwith(Mydictionarylist("varname")), but I have become quite proficient at search./.replace using regular expressions

Thanx for all the suggestions

This question has already been answered. Start a new discussion instead.