|
it
newsgroups
|
|||||||||||||||||||||||
|
|||||||||||||||||||||||
execute() not workingI 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.i***@gmail.com> wrote in message
Show quoteHide quote news:1160731752.508386.129980@k70g2000cwa.googlegroups.com... The problem is your using Execute and Eval. Stop using them. Make inTotal> 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? > 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. 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: Show quoteHide quote > <iulian.i***@gmail.com> wrote in message > news:1160731752.508386.129980@k70g2000cwa.googlegroups.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 > 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.i***@gmail.com> wrote in message
news:1160759384.724751.134070@e3g2000cwe.googlegroups.com... Each to his own. But arr(58) would've been better it equates to ;ess than> 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. 1KB of memory and will significantly out perform Executes and Evals. Show quoteHide quote > > Anthony Jones wrote: > > <iulian.i***@gmail.com> wrote in message > > news:1160731752.508386.129980@k70g2000cwa.googlegroups.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 > > 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 wrote:
Show quoteHide quote > <iulian.i***@gmail.com> wrote in message Anthony, if I use arr(n) is more efficiently than using execute("dim> news:1160759384.724751.134070@e3g2000cwe.googlegroups.com... > > 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. > > > > > > Anthony Jones wrote: > > > <iulian.i***@gmail.com> wrote in message > > > news:1160731752.508386.129980@k70g2000cwa.googlegroups.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 > > > 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. > > var...") ? iulian.i***@gmail.com wrote:
> Anthony, if I use arr(n) is more efficiently than using execute("dim Absolutely. Execute should be avoided like the plague.> var...") ? http://blogs.msdn.com/ericlippert/archive/2003/11/01/53329.aspx http://blogs.msdn.com/ericlippert/archive/2003/11/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" obviously we can't help as we don't know what line 308 is.....
Show quoteHide quote <iulian.i***@gmail.com> wrote in message news:1160731752.508386.129980@k70g2000cwa.googlegroups.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? >
Other interesting topics
highlighting user selected option after form submit
errors in asp code Help in writing SQL using request.form.item(i) New session for every page??? Carriage Return and Response.Write Output Issue Percentage Calculation question.... ADODB.Field error '80020009' Cannot find record displaying a drop down selection with ASP Handling checkboxes, a question of style? Session State question |
|||||||||||||||||||||||