depending on the value of the variable.

Hello all,
I'm having problems trying to insert data into different columns depending on the 
value of the variable.
Here is the situation:
if the value of $za01 = "QA" I need the value of $sdq[$i+1]  to be written into the 
curr_invent column but if $za01 = "QS" it should be written into the net_sold column. 
I don't know why I'm getting all values of $sdq[$i+1] only in the curr_invent column 
and nothing in the net_sold. I'm also not sure if I need two different statement 
handles or it can be done using just one.
Thanks a lot for your time and help.
Greg
Here's my script:
##################################
#!perl

use strict;
use Date::Format;
use DBI;
use diagnostics;



my $dir = "G:\\apps\\quickedi\\ib";
my $recv_file = "recv.1";
my $elite_file = "item_upc.txt";

print "Poczekaj chwile..............\n";
open(ITEMUPC, "> $dir/$elite_file ")            || die "can't create $dir/$elite_file: 
$!";

my %upc_itemlist;
my %item_upclist;
my ($upc_num,$item_num);

my $DSN = "Elite";

my $dbh1 = DBI->connect ("dbi:ODBC:$DSN", "", "",
{RaiseError => 1, AutoCommit => 0});

my $SQL = $dbh1->prepare("select upc, item_num from item where org_code = '01' and 
item_num = report_item_num and memo_1 <> 'TITLE' and upc is not null and upc <> 'NONE' 
order by upc");
$SQL->execute;
while ( my @row = $SQL->fetchrow_array) {
        my($upc_num,$item,$price) = @row;
        $upc_num=~ s/\s+//g;
        ($item =$item) =~ s/\s+$//;
        print ITEMUPC "$upc_num,$item\n";
}
$dbh1->rollback;
$dbh1->disconnect;
close ITEMUPC;

open(CHECK, "< $dir/$elite_file");

while (<CHECK>) {
chomp;

        ($upc_num, $item_num) = split /\s*,\s*/;
        $upc_itemlist{$upc_num} = $item_num;

}

close CHECK;
no warnings 'uninitialized';

my $dbh = DBI->connect( "dbi:ODBC:EDI Data", "", "" )or die "Can't connect to ODBC 
database: $DBI::errstr\n";
my ($count,$customer,$sent,$pad_num,$upc,$za01,$xq02,$xq03,$inventory,$sold);
my @names1 = 
qq(customer,upc_num,item_num,store_num,curr_invent,beginning_date,ending_date,sent);
my @names2 = 
qq(customer,upc_num,item_num,store_num,net_sold,beginning_date,ending_date,sent);
my $sth1 = $dbh->prepare("INSERT INTO edi_pad_test (@names1) VALUES 
(?,?,?,?,?,?,?,?)");
my $sth2 = $dbh->prepare("INSERT INTO edi_pad_test (@names2) VALUES 
(?,?,?,?,?,?,?,?)");

open(RECV, "< $dir/$recv_file")         || die "can't open $recv_file: $_!";
while (<RECV>) {

s/.$//;
chomp;
 my @fields = split /\</;

        if (/^ISA<00<          <00<          <12<2017781300/) {
                $customer = "3";
        } elsif (/^GS<PD<2017781300/) {
                $sent = $fields[4];
        } elsif (/^ST<852/) {
                $pad_num = $fields[2];
        } elsif (/^XQ/) {
                $xq02 = $fields[2]; #Begining Date Range
                $xq03 = $fields[3]; #Ending Date Range
        } elsif (/^N9/) {
                #ignore
        } elsif (/^LIN/) {
                $upc = $fields[3];      #UPC number
        } elsif (/^ZA/) {
                $za01 = $fields[1]; #QA = Current Inventory Qty, QS = Net Qty Sold
        } elsif (/^SDQ/) {
                $upc_itemlist{$upc} = "NO_ELITE_ITEM_NUM_FOR_LNT_UPC" unless 
exists($upc_itemlist{$upc});       
                my @sdq = split/\</;
                if ($za01 == "QA") {
                # the data should be inserted into the curr_invent column
                for (my $i=3;$i<=21;$i+=2) {
                        if (defined $pad_num) { # because other transactions also have 
a SDQ lines
                        if (defined $sdq[$i]) { # some SDQ lines have less then 22 
fields
                                $inventory = $sdq[$i + 1];
                                print  
"Processing:\t$pad_num,$upc,$sdq[$i],$za01.....$inventory\n";
                                
$sth1->execute($customer,$upc,$upc_itemlist{$upc},$sdq[$i],$inventory,$xq02,$xq03,$sent)
 or die "can't execute SQL statement: $DBI::errstr\n";
                                } else {
                                        #ignore
                                }
                                } else {
                                        #ignore
                                }
                        }
                } elsif ($za01 == "QS") {
                # the data should be inserted into the net_sold column
                for (my $i=3;$i<=21;$i+=2) {
                        if (defined $pad_num) { # because other transactions also have 
a SDQ lines
                        if (defined $sdq[$i]) { # some SDQ lines have less then 22 
fields
                                $sold = $sdq[$i + 1];
                                print  
"Processing:\t$pad_num,$upc,$sdq[$i],$za01.....$sold\n";
                                
$sth2->execute($customer,$upc,$upc_itemlist{$upc},$sdq[$i],$sold,$xq02,$xq03,$sent) or 
die "can't execute SQL statement: $DBI::errstr\n";

                                } else {
                                        #ignore
                                }
                                } else {
                                        #ignore
                                }
                        }
                } else {
                        #ignore
                }
                        

        } elsif (/^CTT/) {
                #ignore
        } elsif (/^SE/) {
                #ignore
        } elsif (/^GE/) {
                #ignore
        } elsif (/^IEA/) {
                #ignore
        } else {
                next;
#               print "Unrecognized: ", substr ($_, 0, 10), "\n";
        }
}
close RECV;
$dbh->disconnect;
####################################

and the part of my data file:
ISA<00<          <00<          <12<2017781300     <12<7084061572     
<010716<0601<U<00401<000000630<0<P<: 
GS<PD<2017781300<7084061572<20010716<0601<630<X<004010VICS 
ST<852<6300001 
XQ<H<20010708<20010714 
N9<IA<1982 
LIN<<UP<009281020035 
ZA<QA 
SDQ<EA<92<129<5<183<23<194<6<288<14<302<3<305<3<320<29<342<1<347<-1<350<-13 
SDQ<EA<92<354<15<355<1<358<7<359<7<360<8<362<13<363<2<364<7<365<11<367<3 
SDQ<EA<92<368<2<371<5<372<1<373<1<374<4<376<10<377<5<378<-2<379<2<382<1 
SDQ<EA<92<383<-2<384<7<386<6<388<5<391<17<392<9<394<25<395<6<398<-1<399<1 
SDQ<EA<92<400<14<402<-3<403<-13<405<8<408<17<410<7<411<14<412<9<418<2<419<5 
SDQ<EA<92<421<3<422<19<423<-4<424<12<425<19<428<14<429<-7<430<1<438<-1<439<6 
SDQ<EA<92<441<8<442<13<443<2<444<-13<445<14<446<7<447<7<448<13<449<4<450<-2 
SDQ<EA<92<452<-2<453<1<454<24<458<-3<459<8<461<13<462<13<463<17<464<12<467<1 
SDQ<EA<92<468<-9<469<4<470<-1<472<7<474<7<476<17<477<1<478<2<480<23<482<16 
SDQ<EA<92<483<12<485<-25<488<-1<489<15<490<6<491<27<495<27<497<16<499<5<500<22 
SDQ<EA<92<501<-10<502<-1<503<28<504<-1<505<13<506<-7<507<-2<509<4<510<1<511<-10 
SDQ<EA<92<512<6<513<-6<516<21<517<7<518<-1<519<7<520<19<521<4<522<-13<527<4 
SDQ<EA<92<529<16<533<13<534<6<535<7<538<-9<539<1<541<23<543<15<544<7<546<3 
SDQ<EA<92<549<3<550<-18<553<-1<555<18<561<8<563<4<564<10<571<23<572<1<573<25 
SDQ<EA<92<575<2<576<-10<580<7<584<-19<585<22<586<45<587<25<588<6<589<10<590<1 
SDQ<EA<92<592<23<593<8<594<1<599<1<602<1<603<13<610<-14<612<-6<616<1<618<9 
SDQ<EA<92<620<11<623<16<624<9<625<7<628<16<630<10<633<14<635<20<636<10<637<21 
SDQ<EA<92<638<1<640<10<641<25<643<10<646<1<649<30<651<1<656<-2<661<4<663<-10 
SDQ<EA<92<664<2<666<15<669<-31<673<8<684<10<688<5 
ZA<QS 
SDQ<EA<92<371<1<381<1<428<1<478<1<480<1<495<1<497<1<521<1<593<1<630<1 
LIN<<UP<009281021315 
ZA<QA 
SDQ<EA<92<305<31<320<-3<338<2<346<31<348<94<354<30<355<-2<360<35<365<-1<373<102 
SDQ<EA<92<374<9<377<77<379<-9<381<49<382<2<386<54<390<87<392<84<394<-1<399<7 
SDQ<EA<92<402<-5<405<5<409<73<421<88<425<-3<436<1<437<-4<441<56<462<209<468<1 
SDQ<EA<92<480<9<483<-3<488<-2<494<1<495<16<502<-1<515<82<523<1<526<-1<527<101 
SDQ<EA<92<536<9<552<92<555<2<564<-2<569<-1<574<57<581<108<586<10<595<-6<601<16 
SDQ<EA<92<609<2<616<30<632<1<635<-2<646<4<654<-2 
ZA<QS 
SDQ<EA<92<348<1<354<1<390<1<394<1<441<1<483<1<488<1<569<1<574<1<635<1 
CTT<702 
SE<9200<6300001 
GE<1<630 
IEA<1<000000630 

Reply via email to