Error in DBD::Chart (called from DBIx::Chart)

Error in DBD::Chart (called from DBIx::Chart)

am 19.05.2006 20:35:05 von walt

I'm receiving this error message when I run a PERL script:
Use of uninitialized value in string ne at
C:/Perl/site/lib/DBD/Chart.pm line 2491.

Why does this fail? or give me this error? What does it want to be
initialized?
What is DBD:Chart want me to do in DBIx::Chart?


This is the script used to create a composite of 2 line graphs on to
one "image":

#!C:\Perl\bin\perl.exe -w

use DBIx::Chart;
use DBI qw(:sql_types);

$DSN = 'Testing';
$DATA_SOURCE = "DBI:ODBC:$DSN";
$USER_NAME = 'sa';
$PASSWORD = 'xxxxx';
$DB = 'test';
$dbh = DBIx::Chart->connect($DATA_SOURCE, $USER_NAME, $PASSWORD,
{RaiseError => 1, AutoCommit => 0})
or die "Cannot connect to $DATA_SOURCE: $DBI::errstr \n";
DBI->trace(2, 'logfile.log');

$sql = qq( select * from

(select (rtrim(PCBJOBNUMBER)+', '+ rtrim(PCBPNUM)+', '+
rtrim(LLJC_Line_Number_LONG)+', '+ rtrim(PCBTASKNUM)) as job_task,
cast(PCBESTIMATEQTY as integer) as esthrs
from $DB..pcb00125
where pcbjobnumber = 'm0603412' and pcbpnum = '001'
returning linegraph(*)
where color = 'blue' and shape = 'fillcircle') as line1,

(select (rtrim(PCBJOBNUMBER)+', '+ rtrim(PCBPNUM)+', '+
rtrim(LLJC_Line_Number_LONG)+', '+ rtrim(PCBTASKNUM)) as job_task,
cast(PCBACTUALQTY as integer) as acthrs
from $DB..pcb00125
where pcbjobnumber = 'm0603412' and pcbpnum = '001'
returning linegraph(*)
where color = 'green' and shape = 'opensquare') as line2

returning image
where width = 600 and height = 500
and x_axis = 'Tasks'
and y_axis = 'Hours'
and keeporigin = 1
and showvalues = 1
and showpoints = 1
and showgrid = 0
and format = 'png'
and maptype = 'HTML'
and mapname = 'plot'
);
$rsth = $dbh->prepare($sql);
$rsth->execute;
$row = $rsth->fetchrow_arrayref;

# output picture
open(OUTF, '>graph.png');
binmode OUTF;
print OUTF $$row[0];
close OUTF;

$rsth->finish;
$dbh->disconnect;


As a side note I ran this script and it produced an output just fine:

#!C:\Perl\bin\perl.exe -w

use DBIx::Chart;
use DBI qw(:sql_types);

$DSN = 'Testing';
$DATA_SOURCE = "DBI:ODBC:$DSN";
$USER_NAME = 'sa';
$PASSWORD = 'xxxxx';
$DB = 'test';
$dbh = DBIx::Chart->connect($DATA_SOURCE, $USER_NAME, $PASSWORD,
{RaiseError => 1, AutoCommit => 0})
or die "Cannot connect to $DATA_SOURCE: $DBI::errstr \n";

$sql = qq( select USRTAB09, count(*)as shop_count
from $DB..PCB00175
where PCBJOBNUMBER not like 'S%' and PCBJS != 'Closed'
group by USRTAB09
order by shop_count desc
returning linegraph(*)
where width = 1200 and height = 800
and x_axis='Tasks'
and y_axis='Count'
and keeporigin = 1
and showpoints = 1
and format = 'png'
and maptype = 'HTML'
and mapname = 'plot'
);
$rsth = $dbh->prepare($sql);
$rsth->execute;
$row = $rsth->fetchrow_arrayref;

# output picture
open(OUTF, '>graph.png');
binmode OUTF;
print OUTF $$row[0];
close OUTF;

$dbh->disconnect;


Thanks for any help,
Walt (warsting@gmail.com)

Re: Error in DBD::Chart (called from DBIx::Chart)

am 19.05.2006 23:03:23 von Dean Arnold

walt wrote:
> I'm receiving this error message when I run a PERL script:
> Use of uninitialized value in string ne at
> C:/Perl/site/lib/DBD/Chart.pm line 2491.
>
> Why does this fail? or give me this error? What does it want to be
> initialized?
> What is DBD:Chart want me to do in DBIx::Chart?
>
>
> This is the script used to create a composite of 2 line graphs on to
> one "image":
>
> #!C:\Perl\bin\perl.exe -w
>
> use DBIx::Chart;
> use DBI qw(:sql_types);
>
> $DSN = 'Testing';
> $DATA_SOURCE = "DBI:ODBC:$DSN";
> $USER_NAME = 'sa';
> $PASSWORD = 'xxxxx';
> $DB = 'test';
> $dbh = DBIx::Chart->connect($DATA_SOURCE, $USER_NAME, $PASSWORD,
> {RaiseError => 1, AutoCommit => 0})
> or die "Cannot connect to $DATA_SOURCE: $DBI::errstr \n";
> DBI->trace(2, 'logfile.log');
>
> $sql = qq( select * from
>
> (select (rtrim(PCBJOBNUMBER)+', '+ rtrim(PCBPNUM)+', '+
> rtrim(LLJC_Line_Number_LONG)+', '+ rtrim(PCBTASKNUM)) as job_task,
> cast(PCBESTIMATEQTY as integer) as esthrs
> from $DB..pcb00125
> where pcbjobnumber = 'm0603412' and pcbpnum = '001'
> returning linegraph(*)
> where color = 'blue' and shape = 'fillcircle') as line1,
>
> (select (rtrim(PCBJOBNUMBER)+', '+ rtrim(PCBPNUM)+', '+
> rtrim(LLJC_Line_Number_LONG)+', '+ rtrim(PCBTASKNUM)) as job_task,
> cast(PCBACTUALQTY as integer) as acthrs
> from $DB..pcb00125
> where pcbjobnumber = 'm0603412' and pcbpnum = '001'
> returning linegraph(*)
> where color = 'green' and shape = 'opensquare') as line2
>
> returning image
> where width = 600 and height = 500
> and x_axis = 'Tasks'
> and y_axis = 'Hours'
> and keeporigin = 1
> and showvalues = 1
> and showpoints = 1
> and showgrid = 0
> and format = 'png'
> and maptype = 'HTML'
> and mapname = 'plot'
> );
> $rsth = $dbh->prepare($sql);
> $rsth->execute;
> $row = $rsth->fetchrow_arrayref;
>
> # output picture
> open(OUTF, '>graph.png');
> binmode OUTF;
> print OUTF $$row[0];
> close OUTF;
>
> $rsth->finish;
> $dbh->disconnect;
>

Could you provide the versions of DBIx::Chart and
DBD::Chart you're using ? Also, at which line of your
script does it break ? prepare(), execute(), or fetch() ?

Once I know which version you're using, I may be able
to pinpoint the problem.

Regards,
Dean Arnold
Presicient Corp.

Re: Error in DBD::Chart (called from DBIx::Chart)

am 19.05.2006 23:09:59 von Dean Arnold

walt wrote:
> I'm receiving this error message when I run a PERL script:
> Use of uninitialized value in string ne at
> C:/Perl/site/lib/DBD/Chart.pm line 2491.
>
> Why does this fail? or give me this error? What does it want to be
> initialized?
> What is DBD:Chart want me to do in DBIx::Chart?
>
>
> This is the script used to create a composite of 2 line graphs on to
> one "image":
>
> #!C:\Perl\bin\perl.exe -w
>
> use DBIx::Chart;
> use DBI qw(:sql_types);
>
> $DSN = 'Testing';
> $DATA_SOURCE = "DBI:ODBC:$DSN";
> $USER_NAME = 'sa';
> $PASSWORD = 'xxxxx';
> $DB = 'test';
> $dbh = DBIx::Chart->connect($DATA_SOURCE, $USER_NAME, $PASSWORD,
> {RaiseError => 1, AutoCommit => 0})
> or die "Cannot connect to $DATA_SOURCE: $DBI::errstr \n";
> DBI->trace(2, 'logfile.log');
>
> $sql = qq( select * from
>
> (select (rtrim(PCBJOBNUMBER)+', '+ rtrim(PCBPNUM)+', '+
> rtrim(LLJC_Line_Number_LONG)+', '+ rtrim(PCBTASKNUM)) as job_task,
> cast(PCBESTIMATEQTY as integer) as esthrs
> from $DB..pcb00125
> where pcbjobnumber = 'm0603412' and pcbpnum = '001'
> returning linegraph(*)
> where color = 'blue' and shape = 'fillcircle') as line1,
>
> (select (rtrim(PCBJOBNUMBER)+', '+ rtrim(PCBPNUM)+', '+
> rtrim(LLJC_Line_Number_LONG)+', '+ rtrim(PCBTASKNUM)) as job_task,
> cast(PCBACTUALQTY as integer) as acthrs
> from $DB..pcb00125
> where pcbjobnumber = 'm0603412' and pcbpnum = '001'
> returning linegraph(*)
> where color = 'green' and shape = 'opensquare') as line2

Ooops, I think I may have spotted the issue. IIRC, DBIx::Chart doesn't
support the 'AS' keyword for subquery aliases; so instead of


> where color = 'blue' and shape = 'fillcircle') as line1,
....and...
> where color = 'green' and shape = 'opensquare') as line2

you'll need to change to

> where color = 'blue' and shape = 'fillcircle') line1,
....and...
> where color = 'green' and shape = 'opensquare') line2

HTH,
Dean Arnold
Presicient Corp.

Re: Error in DBD::Chart (called from DBIx::Chart)

am 20.05.2006 02:29:14 von Peter Scott

On Fri, 19 May 2006 11:35:05 -0700, walt wrote:
> I'm receiving this error message when I run a PERL script:
> Use of uninitialized value in string ne at
> C:/Perl/site/lib/DBD/Chart.pm line 2491.
>
> Why does this fail? or give me this error?

Incidentally, that's a warning, not an exception, and your program did not
stop executing at that point. It may have produced incorrect results, no
results at all, or thrown an actual exception later, for reasons stemming
from an uninitialized value being used, but that's a separate issue.

--
Peter Scott
http://www.perlmedic.com/
http://www.perldebugged.com/