If you can provide a test mdb file with the table(s) in question, that
would be helpful.

What will also be important is the version of Access, perl, DBD::ODBC,
etc.

Thanks,

Jeff


> Hi all,
> 
> I'm using DBD::ODBC to access MS-Access on Win2K.
> If I run the following script, I get sometimes wrong size!!!
> 
> For example, when table_type=8 (SQL_DOUBLE), I get 53 but the 
> length is 15 ???
> 
> What's wrong in my script????
> 
> -----------------------------------------
> #!/usr/bin/perl
> 
> use strict;
> use DBI;
> 
> my ($owner, $table, $type, $descr);
> 
> # Get only table informations
> $type = "TABLE";
> 
> # Get database name with 'DBI_DSN' environment variable
> my $dbh = DBI->connect() || die $DBI::errstr;
> 
> my $sth_t = $dbh->table_info ();
> 
> while (my $row = $sth_t->fetch ()) {
>      my $table_cat     = $row->[0];
>      my $table_owner   = $row->[1];
>      my $table_name    = $row->[2];
>      my $table_type    = $row->[3];
>      my $table_remarks = $row->[4];
> 
>      if ($table_type eq $type && $table_owner eq $owner) {
>          $table = $table_name;
>          $descr = $table_remarks;
> 
>          my $table_name = $table;
> 
>          my $sth_f = $dbh->prepare ("Select * From 
> $table_name Where 0=1");
>          if ($DBI::err) {
>              print STDERR "$0 E: $DBI::err - $DBI::errstr\n";
>              next;
>          }
> 
>          $sth_f->execute ();
>          if ($DBI::err) {
>              print STDERR "$0 E: $DBI::err + $DBI::errstr\n";
>              next;
>          }
> 
>          print "table: $table ($descr)\n";
> 
>          my $fnames      = $sth_f->{NAME};
>          my $fnullables  = $sth_f->{NULLABLE};
>          my $ftypes      = $sth_f->{TYPE};
>          my $fsizes      = $sth_f->{PRECISION};
>          my $fscales     = $sth_f->{SCALE};
> 
>          my $fname = undef;
> 
>          foreach $fname (@$fnames) {
>              my $index     = shift @$ftypes;
>              my $fsize     = shift @$fsizes;
>              my $fscale    = shift @$fscales;
>              my $fnullable = (shift @$fnullables) ? "Y" : "N";
> 
>              print "\t$fname: $index, $fsize, $fscale, $fnullable\n";
>          }
> 
>      }
> }
> 
> $sth_t->finish ();
> 
> $dbh->disconnect;
> -----------------------------------------
> 
> Thanks,
> 
> -Dominique Cretel
> [EMAIL PROTECTED]
> 


Reply via email to