On Wed, Sep 10, 2003 at 01:57:31PM -0400, Joshua Ferraro wrote:
> sub fetch_handler {
>         my ($args) = @_;
>         # warn "in fetch_handler";      ## troubleshooting
>         my $offset = $args->{OFFSET};
>         $offset -= 1;                   ## because $args->{OFFSET} 1 = record #1
>         chomp (my $bibid = $bib_list[$offset]);
>         my $sql_query = "SELECT tag, subfieldcode, subfieldvalue FROM marc_subfi
> eld_table where bibid=?";
>         my $sth_get = $dbh->prepare("$sql_query");
>         $sth_get->execute($bibid);
> 
>         ## create a MARC::Record object
>         my $rec = MARC::Record->new();
> 
>         ## create the fields
>         while (my @data=$sth_get->fetchrow_array) {
> 
>                 my $tag = $data[0];
>                 my $subfieldcode = $data[1];
>                 my $subfieldvalue = $data[2];
> 
>                 my $field = MARC::Field->new(
>                                                   $tag,'','',
>                                                   $subfieldcode => $subfieldvalu
> e,
>                                             );
> 
>                 $rec->append_fields($field);
> 
>                 ## build the marc string and put into $record
>                 my $record = $rec->as_usmarc();
>                 $args->{RECORD} = $record;
>         }
>

The call to as_usmarc() will populate the record length for you. So you
shouldn't have to do it yourself when building a record on the fly. We're you
getting an error somewhere about the record length not being populated?

Your code looks to be creating a bunch of fields each with one subfield in them.
This is not correct. Furthermore, it is unlikely that the order that the
subfields come back from MySQL is the order in which you will want to build your
field...but I may be wrong there (not knowing Koha). I'm sure the Koha folks
have some utility for dumping their database as MARC don't they? If not they
should :)

//Ed

Reply via email to