in reply to Re^3: uninitialized value in Tk::DBI::Table
in thread uninitialized value in Tk::DBI::Table

The '=' you are referring to is from a sql statement, not a perl statement, so it is for equality, not assignment.
  • Comment on Re^4: uninitialized value in Tk::DBI::Table

Replies are listed 'Best First'.
Re^5: uninitialized value in Tk::DBI::Table
by zentara (Cardinal) on Feb 17, 2005 at 13:46 UTC
    Yes, but he did have his numbers quoted, like '1' , '2'; and he did get 4 errors, one for each line with a style like
    = '1' = '2' = '3' = '4'
    saying "unitililized eq in statement...". So why is the error saying 'eq' if it's supposed to be = ?

    Is it the quoted numbers, or should it be 'eq'; or if he unquotes his numbers, == ?


    I'm not really a human, but I play one on earth. flash japh

      The '=' is from a sql statement, it is not executed as perl code. Numbers or not, the equality comparison operator for sql is '='. It should have nothing to do with what happens when the column heading is selected to sort. It's likely that the numbers are quoted because it is a character field in a table that happens to have numbers in it, but that shouldn't matter either.

      My guess at the source of the problem is that he is using Tk::DBI::Table 0.01 (0.01 line 294 looks more likely than 0.02 line 294), one (or more) of the date/time columns is null, and he is getting uninitialized warnings during the sort of that 'uninitialized' column. Seeing a small sample of the data selected that still displays this problem could confirm this.

        Hi runrig,

        I am using package Tk::DBI::Table; 1.8 (version from the source). I experimented with a simple code:

        use Tk; use Tk::DBI::Table; use DBI; my $dbh = ''; my $limit_entry = 100; my $dbh = DBI->connect("dbi:SQLite:dbname=as2con.db", "", "", {PrintWa +rn => 0, PrintError => 0}); my $top = MainWindow->new; $top->geometry('200x300'); my $sql_query = "select cdate AS 'Date/Time', case when statusType = '1' then 'Debug' when statusType = '2' then 'Info' when statusType = '3' then 'Warning' when statusType = '4' then 'Error' else 'unknown' end as Status, statusValue AS 'Description' from statusmessages order by cdate desc LIMIT $limit_entry"; my $tkdbi = $top->DBITable( -sql => $sql_query, -dbh => $dbh, -display_id => 1, )->pack(expand => 0, -fill => 'both'); MainLoop;


        and I receive:

        - no messages with uninitialized values;
        - but you can't sort the first column (Date/Time);


        So I guess there goes something wrong in the bigger program in which I use DBI::Table.

        Cheers,

        Ton