Connecting Tech Pros Worldwide Forums | Help | Site Map

execute() not working

iulian.ilea@gmail.com
Guest
 
Posts: n/a
#1: Oct 13 '06
Hello,

I have this code:
__________________________________________________ ______

if VarType(eval("inTotal" & arr(4,i1)))=0 then
response.write "ok, dim"
execute("dim inTotal" & arr(4,i1) & ":inTotal" & arr(4,i1) & "=" &
arr_(i1,i2))
'it is working, I have variable
else
execute("inTotal" & arr(4,i1) & " = inTotal" & arr(4,i1) & " + " &
arr_(i1,i2))
'here is not working any more.
end if
__________________________________________________ ______

Error Type:
Microsoft VBScript compilation (0x800A0401)
Expected end of statement
/test.asp, line 308

What should be the problem?


Anthony Jones
Guest
 
Posts: n/a
#2: Oct 13 '06

re: execute() not working



<iulian.ilea@gmail.comwrote in message
news:1160731752.508386.129980@k70g2000cwa.googlegr oups.com...
Quote:
Hello,
>
I have this code:
__________________________________________________ ______
>
if VarType(eval("inTotal" & arr(4,i1)))=0 then
response.write "ok, dim"
execute("dim inTotal" & arr(4,i1) & ":inTotal" & arr(4,i1) & "=" &
arr_(i1,i2))
'it is working, I have variable
else
execute("inTotal" & arr(4,i1) & " = inTotal" & arr(4,i1) & " + " &
arr_(i1,i2))
'here is not working any more.
end if
__________________________________________________ ______
>
Error Type:
Microsoft VBScript compilation (0x800A0401)
Expected end of statement
/test.asp, line 308
>
What should be the problem?
>
The problem is your using Execute and Eval. Stop using them. Make inTotal
into an array then you don't need them. If arr(4, i1) returns a string then
use a Scripting.Dictionary object to store a name/value pairs.

Slap this in a VBS file and take a look at how it works:-

Dim arr_(2,2)
Dim temp
Dim Key
Dim i, j
Dim inTotal

For i = 0 to 2
arr_(0,i) = "ListOfValues" & i
arr_(1,i) = i
arr_(2,i) = i * 2
Next

Set inTotal = CreateObject("Scripting.Dictionary")

For i = LBound(arr_, 2) to UBound(arr_, 2)
temp = 0
For j = 1 To UBound(arr_, 1)
temp = temp + arr_(j, i)
Next
inTotal(arr_(0,i)) = inTotal(arr_(0,i)) + temp
Next

For Each Key In inTotal
MsgBox Key & " Total = " & inTotal(Key)
Next

Anthony.



iulian.ilea@gmail.com
Guest
 
Posts: n/a
#3: Oct 13 '06

re: execute() not working


I have to use those two (eval and execute), I have no other way to
resolve this because I can have 20 variables or more, just one or none.
So, obviously that I don't know what variables to define. I use option
explicit so it is mandatory to define them.

Another solution is to define an array with n elements (i.e.: arr(58))
and use only some of them (i.e.: arr(1), arr(32)) but in this case I
load in memory a full array. Is not a very good solution.

By the way: I made it work in the way I wanted.

Anthony Jones wrote:
Quote:
<iulian.ilea@gmail.comwrote in message
news:1160731752.508386.129980@k70g2000cwa.googlegr oups.com...
Quote:
Hello,

I have this code:
__________________________________________________ ______

if VarType(eval("inTotal" & arr(4,i1)))=0 then
response.write "ok, dim"
execute("dim inTotal" & arr(4,i1) & ":inTotal" & arr(4,i1) & "=" &
arr_(i1,i2))
'it is working, I have variable
else
execute("inTotal" & arr(4,i1) & " = inTotal" & arr(4,i1) & " + " &
arr_(i1,i2))
'here is not working any more.
end if
__________________________________________________ ______

Error Type:
Microsoft VBScript compilation (0x800A0401)
Expected end of statement
/test.asp, line 308

What should be the problem?
>
The problem is your using Execute and Eval. Stop using them. Make inTotal
into an array then you don't need them. If arr(4, i1) returns a string then
use a Scripting.Dictionary object to store a name/value pairs.
>
Slap this in a VBS file and take a look at how it works:-
>
Dim arr_(2,2)
Dim temp
Dim Key
Dim i, j
Dim inTotal
>
For i = 0 to 2
arr_(0,i) = "ListOfValues" & i
arr_(1,i) = i
arr_(2,i) = i * 2
Next
>
Set inTotal = CreateObject("Scripting.Dictionary")
>
For i = LBound(arr_, 2) to UBound(arr_, 2)
temp = 0
For j = 1 To UBound(arr_, 1)
temp = temp + arr_(j, i)
Next
inTotal(arr_(0,i)) = inTotal(arr_(0,i)) + temp
Next
>
For Each Key In inTotal
MsgBox Key & " Total = " & inTotal(Key)
Next
>
Anthony.
Anthony Jones
Guest
 
Posts: n/a
#4: Oct 13 '06

re: execute() not working



<iulian.ilea@gmail.comwrote in message
news:1160759384.724751.134070@e3g2000cwe.googlegro ups.com...
Quote:
I have to use those two (eval and execute), I have no other way to
resolve this because I can have 20 variables or more, just one or none.
So, obviously that I don't know what variables to define. I use option
explicit so it is mandatory to define them.
>
Another solution is to define an array with n elements (i.e.: arr(58))
and use only some of them (i.e.: arr(1), arr(32)) but in this case I
load in memory a full array. Is not a very good solution.
>
By the way: I made it work in the way I wanted.
Each to his own. But arr(58) would've been better it equates to ;ess than
1KB of memory and will significantly out perform Executes and Evals.

Quote:
>
Anthony Jones wrote:
Quote:
<iulian.ilea@gmail.comwrote in message
news:1160731752.508386.129980@k70g2000cwa.googlegr oups.com...
Quote:
Hello,
>
I have this code:
__________________________________________________ ______
>
if VarType(eval("inTotal" & arr(4,i1)))=0 then
response.write "ok, dim"
execute("dim inTotal" & arr(4,i1) & ":inTotal" & arr(4,i1) & "=" &
arr_(i1,i2))
'it is working, I have variable
else
execute("inTotal" & arr(4,i1) & " = inTotal" & arr(4,i1) & " + " &
arr_(i1,i2))
'here is not working any more.
end if
__________________________________________________ ______
>
Error Type:
Microsoft VBScript compilation (0x800A0401)
Expected end of statement
/test.asp, line 308
>
What should be the problem?
>
The problem is your using Execute and Eval. Stop using them. Make
inTotal
Quote:
Quote:
into an array then you don't need them. If arr(4, i1) returns a string
then
Quote:
Quote:
use a Scripting.Dictionary object to store a name/value pairs.

Slap this in a VBS file and take a look at how it works:-

Dim arr_(2,2)
Dim temp
Dim Key
Dim i, j
Dim inTotal

For i = 0 to 2
arr_(0,i) = "ListOfValues" & i
arr_(1,i) = i
arr_(2,i) = i * 2
Next

Set inTotal = CreateObject("Scripting.Dictionary")

For i = LBound(arr_, 2) to UBound(arr_, 2)
temp = 0
For j = 1 To UBound(arr_, 1)
temp = temp + arr_(j, i)
Next
inTotal(arr_(0,i)) = inTotal(arr_(0,i)) + temp
Next

For Each Key In inTotal
MsgBox Key & " Total = " & inTotal(Key)
Next

Anthony.
>

Jon Paal
Guest
 
Posts: n/a
#5: Oct 13 '06

re: execute() not working


obviously we can't help as we don't know what line 308 is.....


<iulian.ilea@gmail.comwrote in message news:1160731752.508386.129980@k70g2000cwa.googlegr oups.com...
Quote:
Hello,
>
I have this code:
__________________________________________________ ______
>
if VarType(eval("inTotal" & arr(4,i1)))=0 then
response.write "ok, dim"
execute("dim inTotal" & arr(4,i1) & ":inTotal" & arr(4,i1) & "=" &
arr_(i1,i2))
'it is working, I have variable
else
execute("inTotal" & arr(4,i1) & " = inTotal" & arr(4,i1) & " + " &
arr_(i1,i2))
'here is not working any more.
end if
__________________________________________________ ______
>
Error Type:
Microsoft VBScript compilation (0x800A0401)
Expected end of statement
/test.asp, line 308
>
What should be the problem?
>

iulian.ilea@gmail.com
Guest
 
Posts: n/a
#6: Oct 22 '06

re: execute() not working



Anthony Jones wrote:
Quote:
<iulian.ilea@gmail.comwrote in message
news:1160759384.724751.134070@e3g2000cwe.googlegro ups.com...
Quote:
I have to use those two (eval and execute), I have no other way to
resolve this because I can have 20 variables or more, just one or none.
So, obviously that I don't know what variables to define. I use option
explicit so it is mandatory to define them.

Another solution is to define an array with n elements (i.e.: arr(58))
and use only some of them (i.e.: arr(1), arr(32)) but in this case I
load in memory a full array. Is not a very good solution.

By the way: I made it work in the way I wanted.
>
Each to his own. But arr(58) would've been better it equates to ;ess than
1KB of memory and will significantly out perform Executes and Evals.
>
>
Quote:

Anthony Jones wrote:
Quote:
<iulian.ilea@gmail.comwrote in message
news:1160731752.508386.129980@k70g2000cwa.googlegr oups.com...
Hello,

I have this code:
__________________________________________________ ______

if VarType(eval("inTotal" & arr(4,i1)))=0 then
response.write "ok, dim"
execute("dim inTotal" & arr(4,i1) & ":inTotal" & arr(4,i1) & "=" &
arr_(i1,i2))
'it is working, I have variable
else
execute("inTotal" & arr(4,i1) & " = inTotal" & arr(4,i1) & " + " &
arr_(i1,i2))
'here is not working any more.
end if
__________________________________________________ ______

Error Type:
Microsoft VBScript compilation (0x800A0401)
Expected end of statement
/test.asp, line 308

What should be the problem?

>
The problem is your using Execute and Eval. Stop using them. Make
inTotal
Quote:
Quote:
into an array then you don't need them. If arr(4, i1) returns a string
then
Quote:
Quote:
use a Scripting.Dictionary object to store a name/value pairs.
>
Slap this in a VBS file and take a look at how it works:-
>
Dim arr_(2,2)
Dim temp
Dim Key
Dim i, j
Dim inTotal
>
For i = 0 to 2
arr_(0,i) = "ListOfValues" & i
arr_(1,i) = i
arr_(2,i) = i * 2
Next
>
Set inTotal = CreateObject("Scripting.Dictionary")
>
For i = LBound(arr_, 2) to UBound(arr_, 2)
temp = 0
For j = 1 To UBound(arr_, 1)
temp = temp + arr_(j, i)
Next
inTotal(arr_(0,i)) = inTotal(arr_(0,i)) + temp
Next
>
For Each Key In inTotal
MsgBox Key & " Total = " & inTotal(Key)
Next
>
Anthony.
Anthony, if I use arr(n) is more efficiently than using execute("dim
var...") ?

Bob Barrows [MVP]
Guest
 
Posts: n/a
#7: Oct 22 '06

re: execute() not working


iulian.ilea@gmail.com wrote:
Quote:
Anthony, if I use arr(n) is more efficiently than using execute("dim
var...") ?
Absolutely. Execute should be avoided like the plague.

http://blogs.msdn.com/ericlippert/ar.../01/53329.aspx
http://blogs.msdn.com/ericlippert/ar.../04/53335.aspx

--
Microsoft MVP - ASP/ASP.NET
Please reply to the newsgroup. This email account is my spam trap so I
don't check it very often. If you must reply off-line, then remove the
"NO SPAM"


Closed Thread