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

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

Replies are listed 'Best First'.
Re^6: uninitialized value in Tk::DBI::Table
by runrig (Abbot) on Feb 18, 2005 at 01:13 UTC

    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
        am using package Tk::DBI::Table; 1.8 (version from the source)...So I guess there goes something wrong in the bigger program in which I use DBI::Table.
        I just noticed that there is a Tk::DBI::Table in the author's Tk-DBIx distribution which has a version number in the source later than anything else (Distribution Tk-DBI-Table 0.01 has module Tk::DBI::Table version 1.3, Tk-DBI-Table 0.02 has module version 1.8, while Tk-DBIx has module version 1.13). It does not fix your problem though. I don't think there's anything wrong with the way you are using the module, it appears to be a bug in the module itself.