Hi Paul (and list) On Thu, Jan 7, 2010 , Paul Poulain <paul.poulain@biblibre.com> wrote:
Ricardo Dias Marques a écrit :
mysql> select barcode from biblioitems, items where itemtype=2 and biblioitems.biblionumber = items.biblionumber and biblioitems.biblioitemnumber = items.biblioitemnumber;
that's exactly the best option !
Great. Many thanks for the feedback! :)
By doing some research, I see that I would need (at least) to change the "Items.pm" file, in the "C4" Koha 3.0.5 directory, with code that was added in the "master" branch (and that contains that new "Item2Marc" function / subroutine). I wish to avoid that, if possible (because that seems to be touching a more "essential" part of my Koha installation, and I'm afraid that could cause other problems).
wise decision. I can guarantee that the "at least" on 1st line would in fact be "first", and have many others after !
Right, I though so. Thanks for confirming my impression.
So, let me rephrase my initial question: how do people *currently* do batch deletions / bulk deletions of bibliographic records (and associated items), for a given / specific item type, in Koha 3.0.x (e.g. 3.0.5)?
I think they don't, that's why we added this feature. A small Perl script could do the job you want though. Something like : [ snipped example script. Thank you very much for the script Paul! ]
Cool. Thank you for the Perl script! I ended up writing a similar script and it seemed to do the trick: ---------------------------------------- #!/usr/bin/perl use warnings; use strict; use C4::Context; use C4::Items; use C4::Koha; use C4::Biblio; my $dbh = C4::Context->dbh; my $query2 = "select biblio.biblionumber, biblioitems.biblioitemnumber, items.itemnumber from biblio, biblioitems, items where itemtype=2 and biblio.biblionumber = biblioitems.biblionumber and biblioitems.biblionumber=biblio.biblionumber and biblioitems.biblioitemnumber = items.biblioitemnumber;"; my $sth2 = $dbh->prepare("$query2"); $sth2->execute or die("ERROR: Could not run the query: $query2 The following error occurred: $! \n"); while (my ($biblionumber, $biblioitemnumber, $itemnumber) = $sth2->fetchrow) { print "Deleting item record with biblionumber = $biblionumber and itemnumber = $itemnumber \n"; DelItem($dbh,$biblionumber,$itemnumber); print "Deleting biblio record with biblionumber = $biblionumber \n"; DelBiblio($biblionumber); } ---------------------------------------- I needed to do a small change in "Biblio.pm" for my script to work (without errors). The change I did was around the line 2800 of that file, by "surrounding" the "unless" block that starts with: unless ($result{'__RAW__'}->{$_} =~ /$biblionumber,$title\-(\d);/) { ... with the following "if" block: if (defined($result{'__RAW__'}->{$_}) && $result{'__RAW__'}->{$_} ne "") Like I said, this seemed to do the trick, at least for me. I'm posting this script in the hope this helps others, as well. As always: I'm NOT giving any guarantees, YMMV, do a database backup before trying this, etc... Thanks again Paul! :) Cheers, Ricardo