Subject: | Iterator Method not iterating with |
Date: | Thu, 9 Oct 2014 14:51:39 +0000 |
To: | "'bug-Class-DBI [...] rt.cpan.org'" <bug-Class-DBI [...] rt.cpan.org> |
From: | David Newman <David.Newman [...] monro.com> |
Distribution Name and Version: Class-DBI 3.0.17
Perl Version(s): Perl 5.12.4 and Perl 6.16.3
Operating System: Windows 7 Professional Service Pack 1
Problem: Iterator method is not iterating through result set.
It seems the correct number of records is known but
it doesn't iterate (change the value) through each record.
This seems to happen only with accessor_named fields.
Or field renamed because it is some known reserved word.
Dave Newman
MAIN PROGRAM
#!/usr/bin/perl
use strict;
use warnings;
use Carp;
use Monro::GiftCardLoad::VastDB;
use Monro::GiftCardLoad::VastDB::Estmtehdr;
use Monro::GiftCardLoad::VastDB::Lineitem;
use Monro::GiftCardLoad::VastDB::Mechanic;
use Data::Dumper;
_build_lineitems();
sub _build_lineitems {
my $self = shift;
my $est_obj = Monro::GiftCardLoad::VastDB::Estmtehdr->retrieve(COMPANY => '0945', INVOICE_NUMBER => '139208');
print "est_obj: $est_obj\n";
my @line_rows = Monro::GiftCardLoad::VastDB::Lineitem->search(COMPANY => $est_obj->COMPANY, ESTIMATE_NUMBER => $est_obj->ESTIMATE_NUMBER);
my $it = Monro::GiftCardLoad::VastDB::Lineitem->search(COMPANY => $est_obj->COMPANY, ESTIMATE_NUMBER => '139208');
print "DataDump: ".Dumper(@line_rows);
while(my $line_item = $it->next) {
print "line_item: $line_item\n";
print "item_number: ".$line_item->item_number."\n";
}
my $index = 0;
my @lineitems;
my %listbox_seq_hash;
foreach my $line (@line_rows) {
print "line_rows[0]: $line_rows[0]\n";
print "line_rows[1]: $line_rows[1]\n";
print "line_rows[2]: $line_rows[2]\n";
print "item: " . $line->item_number . "\n";
print "estimate: " . $line->estimate_number . "\n";
}
}
RESULTS
est_obj: 0945/177338
DataDump: $VAR1 = bless( {
'__triggers' => {},
'_class_trigger_results' => [],
'estimate_number' => '177338',
'company' => '0945'
}, 'Monro::GiftCardLoad::VastDB::Lineitem' );
$VAR2 = $VAR1;
$VAR3 = $VAR1;
line_rows[0]: 0945/177338
line_rows[1]: 0945/177338
line_rows[2]: 0945/177338
item: 10
estimate: 177338
line_rows[0]: 0945/177338
line_rows[1]: 0945/177338
line_rows[2]: 0945/177338
item: 10
estimate: 177338
line_rows[0]: 0945/177338
line_rows[1]: 0945/177338
line_rows[2]: 0945/177338
item: 10
estimate: 177338
LINEITEM MODULE
package Monro::GiftCardLoad::VastDB::Lineitem;
use strict;
use warnings;
use Class::DBI;
use base 'Monro::GiftCardLoad::VastDB';
Monro::GiftCardLoad::VastDB::Lineitem->table('');
Monro::GiftCardLoad::VastDB::Lineitem->columns(Primary => qw/
COMPANY
ESTIMATE_NUMBER
/);
Monro::GiftCardLoad::VastDB::Lineitem->columns(Others => qw/
CLASS
FRONT_REAR
INVOICE_POSITION
ACCOUNT_CODE
TAXABLE
VENDOR_NUMBER
ITEM_NUMBER
DESCRIPTION
QUANTITY
UNIT_PRICE
LABOR_AMOUNT
REASON_CODE
PART
/);
sub accessor_name_for {
my ($class, $column) = @_;
if ($column eq 'sequence') {
$column = 'my_sequence';
}
return $column;
}
1;