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]
>