Can't call method "Sql"... need help

S

sudhih

hello,

I have a problem CGI script. I am really sorry, this looks quite
big...

I created a package pkg::fetch_history.pm and placed it in c:\Perl
\lib. Then I created a perl file to run from the commad promt. the
program executed well without fail. The code is as follows,

#!C:\Perl\bin\perl.exe
use pkg::fetch_history;

@dates = pkg::fetch_history::get_Dates();
foreach $d (@dates)
{ print "\n",$d; }

the data base exists locally.

Then I created cgi script to populate the values into combo box, it
says

Can't call method "Sql" on an undefined value at C:/Perl/lib/pkg/
fetch_history.pm line 20.

I am not sure why is this. Below is the fetch_history.pm and
combobox.cgi script.

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

# this is fetch_history.pm

package pkg::fetch_history;
use strict;
use Win32::ODBC;

my $db = new Win32::ODBC('ServerStatistics'); #ODBC driver object
#if (!$db)
#{
# print "Database could not be found\n";
#}

sub get_Dates
{
my $q = "select distinct(build_date) from wdf_history order by
build_date";
$db->Sql($q);
my @dates;
push(@dates, $db->Data()) while($db->FetchRow);

return @dates;
}
---------------------------------------------------------------------
#!C:\Perl\bin\perl.exe

use CGI::Carp qw(fatalsToBrowser);
use CGI;
use pkg::fetch_history;

$cgi = new CGI;
print $cgi->header;

@dates = pkg::fetch_history::get_Dates();
print "here is the dates value",@dates;
print <<ENDHTML;
<html>
<head><title> Server statistics </title></head>
<body>
<select name="menu">
ENDHTML


foreach my $d(@datest)
{
print <<ENDHTML;
<option value="$d" selected>(please select:)</option>
<option value="$d">$d</option>
ENDHTML

}
------------------------------------------------------------------



Am I wrong some where?


Thank you,
Regards,
kath.
 
P

perlguru

hello,

I have a problem CGI script. I am really sorry, this looks quite
big...

I created a package pkg::fetch_history.pm and placed it in c:\Perl
\lib. Then I created a perl file to run from the commad promt. the
program executed well without fail. The code is as follows,

#!C:\Perl\bin\perl.exe
use pkg::fetch_history;

@dates = pkg::fetch_history::get_Dates();
foreach $d (@dates)
{ print "\n",$d; }

the data base exists locally.

Then I created cgi script to populate the values into combo box, it
says

Can't call method "Sql" on an undefined value at C:/Perl/lib/pkg/
fetch_history.pm line 20.

I am not sure why is this. Below is the fetch_history.pm and
combobox.cgi script.

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

# this is fetch_history.pm

package pkg::fetch_history;
use strict;
use Win32::ODBC;

my $db = new Win32::ODBC('ServerStatistics'); #ODBC driver object
#if (!$db)
#{
# print "Database could not be found\n";
#}

sub get_Dates
{
my $q = "select distinct(build_date) from wdf_history order by
build_date";
$db->Sql($q);
my @dates;
push(@dates, $db->Data()) while($db->FetchRow);

return @dates;}

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

use CGI::Carp qw(fatalsToBrowser);
use CGI;
use pkg::fetch_history;

$cgi = new CGI;
print $cgi->header;

@dates = pkg::fetch_history::get_Dates();
print "here is the dates value",@dates;
print <<ENDHTML;
<html>
<head><title> Server statistics </title></head>
<body>
<select name="menu">
ENDHTML

foreach my $d(@datest)
{
print <<ENDHTML;
<option value="$d" selected>(please select:)</option>
<option value="$d">$d</option>
ENDHTML

}
------------------------------------------------------------------

Am I wrong some where?

Thank you,
Regards,
kath.


If this script runs fine from command prompt, ..... then I think you
should check with permission.
I see that you are not catching error at the time of opening
connection to database.
While executing script from web, it executes with lower permission,
and it may not be allowed to connect to database.

Try catching error at the time of opening connection to database...
 
K

kath

If this script runs fine from command prompt, ..... then I think you
should check with permission.
I see that you are not catching error at the time of opening
connection to database.
While executing script from web, it executes with lower permission,
and it may not be allowed to connect to database.

Try catching error at the time of opening connection to database...

Hi, thanks for the reply. you are right. The connection to database
was not happening when run I from browser. But the same was working
fine when I run in command prompt. Me and my friend figured it out
that there wasn't establishing of connection to database was
happening.

Why only in the browser?

Then later one thing flashed, that I was using local DSN(user DSN) to
connect to database. Then I tried creating the System DSN tried to
run, it was working.

Any way, thanks a lot.


Regards,
kath.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,769
Messages
2,569,579
Members
45,053
Latest member
BrodieSola

Latest Threads

Top