[ic] FW: More questions about $Tag->query

Eric Terry elterry at multiservice.com
Thu Jan 15 17:12:58 EST 2004



-----Original Message-----
From: Eric [mailto:eric at 80s.com] 
Sent: Thursday, January 15, 2004 4:12 PM
To: interchange-users at icdevgroup.org (interchange-users at icdevgroup.org)
Subject: More questions about $Tag->query

Okay, I'm having more trouble with using $Tag->query.
Basically I'm trying copy ordline records to a new table along with a
sequence number. All works fine as long as there is only one record returned
from the query.

When 2 or more records are returned the first record is recorded and the
others are not.

And this error is in the log:
Safe: Can't use an undefined value as an ARRAY reference at (eval 193) line
89.

I've tried changing this line(89) of code '@$results[$j]->[$i]' to:
$results[$j]->[$i]
@results[$j]->[$i]



I'm using interchange 4.8.6 and perl 5.8.0.


The code that follows is inside of a perl tag:



do_insert("transactions", "transactions_log", 53);
do_insert("orderline", "orderline_log", 25);


sub do_insert(){

        my $table_out = shift; # name of original ic table - transactions,
orderline
        my $table_in = shift;   # name of new log table - transactions_log,
orderline_log
        my $count = shift;      # column count of table

        my $sql = "select * from $table_out where order_number =
\"$ordernumber\"";
        
        my $results = $Tag->query({
                        table => "$table_out",
                        sql => $sql,
        });

        my $rows = set_count($table_out);

        my ($i, $j) = '';

        for( $j = 0; $j <= $rows; $j++ ){

                $sql = "insert into $table_in values (";

                for( $i = 0; $i < $count; $i++ ){

                        $sql .= "'@$results[$j]->[$i]', ";  # <<< PROBLEM
CODE
                }

                $sql .= "LAST_INSERT_ID())";

                $results = $Tag->query({
                        table => "$table_in",
                        sql => $sql,
                });
        }

}
 
sub set_count(){

        my $table = shift;
        
        my $sql = "select count(*) from $table where order_number =
\"$ordernumber\"";
        my $results = $Tag->query({
                table => "$table", 
                sql => $sql,
        });

        my $rc = @$results[0]->[0];

        return ++$rc;
}




More information about the interchange-users mailing list