getvar work around

Post Reply
iclbloom
Posts: 103
Joined: Mon May 07, 2001 5:51 pm

getvar work around

Post by iclbloom »

From Documentation:
Non-CGI variables that are not explicitly used in the script somewhere with a $-sign, eg. dynamically made-up variable names, cannot be used.

This restriction seems to getting in the way of creating a piece of code to "dump" a table (without knowing what the column names are). See the comment on line 19. Any Ideas on how to accomplish this w/o getvar?

Thanks
Leon Bloom

<script language="vortex">

<db = c:\morph3\texis\testdb>

<A NAME=main PUBLIC tablename="SYSSTATISTICS">
<sql "select NAME from SYSCOLUMNS where TBNAME = $tablename">
<$mynames = $mynames $NAME>
</sql>

<clist $mynames><$mynames_csv = $ret>
<strlen $mynames_csv><$mynames_len = $ret><$mynames_len = ($mynames_len - 2)>
<substr $mynames_csv 1 $mynames_len><$mynames_csv_x = $ret>
mynames_csv_x: $mynames_csv_x<hr>
<sum "%s" "select " $mynames_csv_x " from " $tablename><$foobar = $ret>
$ret<hr>
<table>
<sql $foobar>
<tr>
<!--- IF this assignment is not done the variables can't referenced --->
<$foo = $id> <$foo = $NumVal> <$foo = $Object> <$foo = $Stat> <$foo = $REMARK>

<loop $mynames>
<td><getvar $mynames>$ret</td>
</loop>
</tr>
</sql>
</table>
</a>

</script>
User avatar
John
Site Admin
Posts: 2622
Joined: Mon Apr 24, 2000 3:18 pm
Location: Cleveland, OH
Contact:

getvar work around

Post by John »

If all you want to do is to dump the table you can use the <adminsql> function. You could basically replace the entire function body with:

<adminsql "select * from " $tablename>
John Turnbull
Thunderstone Software
User avatar
mark
Site Admin
Posts: 5519
Joined: Tue Apr 25, 2000 6:56 pm

getvar work around

Post by mark »

This will handle up to 11 columns. It trivial to extend it to some larger number:
<$x0=><$x1=><$x2=><$x3=><$x4=><$x5=><$x6=><$x7=><$x8=><$x9=><$x10=>
<$f=>
<sql "select NAME from SYSCOLUMNS where TBNAME=$tbl">
<strfmt "%s,%s x%d" $f $NAME $loop><$f=$ret>
</sql>
<substr $f 1 -1>
<$f=$ret>
<sql row "select " $f " from " $tbl>
<loop $NAME>
<strfmt "x%d" $loop>
<getvar $ret>
$NAME: $ret
</loop>

</sql>
Post Reply