[ic] Not able to retrieve fields from custom table

Tim Good tim.g at edsd.com
Wed May 12 16:31:38 EDT 2004


> -----Original Message-----
> From: interchange-users-bounces at icdevgroup.org 
> [mailto:interchange-users-bounces at icdevgroup.org] On Behalf 
> Of Paul Jordan
> Sent: Wednesday, May 12, 2004 12:58 PM
> To: interchange-users at icdevgroup.org
> Subject: RE: [ic] Not able to retrieve fields from custom table
> 
> 
> Tim Good [draco at edsd.com] wrote:
> >> -----Original Message-----
> >> From: interchange-users-bounces at icdevgroup.org
> >> [mailto:interchange-users-bounces at icdevgroup.org] On 
> Behalf Of John 
> >> Rennie
> >> Sent: Wednesday, May 12, 2004 12:06 PM
> >> To: interchange-users at icdevgroup.org
> >> Subject: RE: [ic] Not able to retrieve fields from custom table
> >>
> >>
> >>> -----Original Message-----
> >>> From: interchange-users-bounces at icdevgroup.org
> >>> [mailto:interchange-users-bounces at icdevgroup.org] On 
> Behalf Of Tim 
> >>> Good
> >>> Sent: 12 May 2004 18:35
> >>> To: interchange-users at icdevgroup.org
> >>> Subject: [ic] Not able to retrieve fields from custom table
> >>>
> >>>
> >>> Hello list,
> >>>
> >>> First sorry for the double post previously, I was not sure which 
> >>> email address was setup. I did not get a response to my 
> first post 
> >>> so I am reposting with a more specific question.
> >>>
> >>> Why would this code not work?
> >>>
> >>> [perl table='delivery_schedule']
> >>>   $Tag->data("delivery_schedule", "charge", "[loop-data 
> transactions 
> >>> order_number]"); [/perl]
> >>>
> >>> (mysql 3.23.58 on Redhat 8.0 non threaded perl 5.8.2 
> interchange 5.2 
> >>> stable)
> >>>
> >>> All help is much appreciated.
> >>>
> >>> Tim
> >>
> >> Hi Tim,
> >>
> >> You don't say exactly what 'not work' means, so this is a guess...
> >>
> >>> From the interchange rtfm tags reference, perl tags are not 
> >>> interpolated
> >> by default. So
> >> [perl table='delivery_schedule' interpolate=1]
> >>   $Tag->data("delivery_schedule", "charge", "[loop-data 
> transactions 
> >> order_number]"); [/perl]  should work better.
> >>
> >> You might also want to switch to single quotes within your 
> perl, to 
> >> avoid the risk of any interpolation (e.g. \n or $) of your data 
> >> (unlikely with an order number, but you may have an odd format).
> >>
> >> Best regards,
> >>
> >> John.
> >>
> >
> > John,
> >
> > Thank you for the response and thanks for the advice on 
> using single 
> > quotes. What does not work is that it returns nothing. If I 
> don't use 
> > the interpolate=1 and change the tag to: [perl 
> > table='delivery_schedule' interpolate=1]
> >    $Tag->data("transactions", "order_number", "[loop-data 
> transactions 
> > order_number]"); [/perl] I get something returned. To clarify, I use
> > "transactions","order_number" just to test
> > the results and use of the tag. The interpolate is not necessary, at
> > least in the test above. I think, according to my 
> research/reading of
> > documentation,
> > it does not work because of something to do with delivery_schedule
> > table being a custom table and the data tag wants to work with
> > product tables or transaction tables? Just a stab at what I can see
> > so far.
> >
> > Any ideas?
> >
> > Thanks,
> >
> > Tim
> 
> 
> John is right, in [perl table="delivery_schedule" 
> interpolate=1] the interpolate=1 is letting you be able to 
> use [loop-date transactions order_number] inside the [perl], 
> otherwise it would go... doink! [calc] interpolates automatically.
> 
> you could not use interpolate=1 and instead do:
> 
> [tmp foo][loop-data transactions order_number][/tmp]
>  [perl table="delivery_schedule"]
>     	my $apple = $Tag->data('transactions', 'order_number', 
> $Scratch->{foo});
> 	return $apple;
>  [/perl]
> 
> or if you were doing somehting more complicated, you would 
> want to have more
> order:
> 
>  [perl table="delivery_schedule"]
> 
> 	my $table = 'transactions';
> 	my $col = 'order_number';
> 	my $key = $Scratch->{foo};
>     	my $apple = $Tag->data($table, $col, $key);
> 
> # other stuff......
> 
> 	return $apple;
> 
>  [/perl]
> 
> If you use ITL in there, you need interpolate=1, and you 
> should always get into the habit of "return"ing something :)
> 
> Paul
> 
> 
Paul,

I really appreciate your help! As stated above the data tag
does work great without the interpolate. However, it does not
work with my custom table delivery_schedule. And yes I have added
the config file in <catalog dir>/dbconf/mysql/delivery_schedule.mysql.
I have tested the above code with other native tables and it always
returns the expected results.

Originally, I was thinking like you and John so I even tried to put
key='00020'
manually to check on the passing of [loop-data transactions
order_number].
It also did not return any results. So, at least in my example above, 
interpolating is not the problem or cause.

Thank you for the advice on always returning something. Excellent
advice and I will definetely work that into my programming. Also to 
stay in with the documentation I will follow the interpolate=1
suggestion.

Any other ideas?

Tim




More information about the interchange-users mailing list