[ic] Accessing $Db or $Sql in Jobs?

Jeff Fearn jefffearn at gmail.com
Thu Jan 6 00:23:16 EST 2005


On Wed, 05 Jan 2005 18:22:32 -0800, John Young <john_young at sonic.net> wrote:
> Ethan Rowe wrote:
> > Jeff Fearn wrote:
> >
> >> Hi, how do you make $Db or $Sql accessable to usertags run using the
> >> jobs functionality?
> >>
> >> I have a job which uses a new usertag, however $Db and $Sql are empty.
> >>
> >> I have used $Db and $Sql in another usertag; which is used in the
> >> order routing; without a problem. I am assuming this is something to
> >> do with this tag being used via the job queue ... this may be a very
> >> bad assumption :}
> >>
> >> I have tried setting "AllowGlobal foundation" in interchange.cfg,
> >> which I really don't want to do, with no effect.
> >>
> >> The job just contains:
> >>
> >> [x12_945]
> >>
> >> The tag code is:
> >> UserTag x12_945 Routine <<EOR
> >> sub
> >> {
> >>        # Make sure we have the EDI module installed
> >>        eval
> >>        {
> >>                use X12::Base;
> >>        };
> >>
> >>        if($@)
> >>        {
> >>                ::logError("Could not load X12::Base Module. X12-945
> >> processing failed!\n");
> >>                return(1);
> >>        }
> >>
> >>        # Both of these always die
> >>        my $dbh = $Sql{orderline} or die("No SQL orderline database!\n");
> >>        my $ref = $Db{orderline} or die("No orderline database!\n");
> >>
> >>        .....
> >> }
> >>
> >> TIA, Jeff.
> >> __
> >>
> > Having not yet used IC jobs myself, I may be totally useless.  That said:
> > Is the usertag defined for a single catalog, or as an Interchange global
> > tag?
> >
> > The $Db and $Sql objects aren't available at the global level.  You can
> > effectively access the $Db object for a particular table at the global
> > level, however, via:
> > my $dbh = database_exists_ref( $tablename );
> > $dbh = $dbh->ref();
> >
> >  From there, $dbh gives you access to functions like query().
> >
> > I hope this is of some use.
> >    - Ethan
> 
> 
> The following link might help, as well, if you are not already familiar
> with its content:
> 
> http://www.icdevgroup.org/pipermail/interchange-users/2004-December/041551.html
> 
> 
> -John Young

I had not seen that, thanks :)

I had thought from reading that link that all I had to do was add: 

$Tag->perl({tables => 'orderline'});

above my existing code. However both attempts to get refs to orderline
still die.

I have played around with what Ethan sent and I get " Can't call
method "ref" on unblessed reference" errors :{

These jobs are making me thirsty :}

Jeff.


More information about the interchange-users mailing list