w:\xampp\htdocs>errors.pl 2009-02-27 2005-01-01 2010-01-20 2008-10-01 2012-09-28 2016-08-30 2010-06-18 2010-05-18 2010-03-01 2009-12-23 2010-02-14 #### my $DSN = "EXDSN"; my $Dir = "e:/db/"; my $Driver = "Microsoft dBase Driver (*.dbf)"; if (!Win32::ODBC::ConfigDSN(ODBC_ADD_SYS_DSN, $Driver, "DSN=$DSN", "Description=DSN", "DBQ=$Dir", "DEFAULTDIR=$Dir", "UID=" )) { die "ERROR ODBC: Can't config Win32::ODBC : ".Win32::ODBC::Error(); } if ($odbctype eq "DBI") { my $EXDSN = "driver=$Driver;dbq=$Dir;defaultdir=$Dir"; $db = DBI->connect("dbi:ODBC:$EXDSN","","" ); die "ERROR ODBC: ". wenc(scalar $DBI::errstr) ."\n" if not $db; } if ($odbctype eq "WIN32") { $db = new Win32::ODBC( $DSN ); die "ERROR ODBC: ". wenc(scalar Win32::ODBC::Error()) ."\n" if not $db; } if ($odbctype eq "WIN32") { if ( $db->Sql( "select table.date from table group by table.date order by table.date desc" )) { my $err = $db->Error(); print "Error DBF SQL: " . &enc($err) . "\n"; } else { while($db->FetchRow() ) { my(%Data) = $db->DataHash(); print Dumper(%Data); } } } if ($odbctype eq "DBI") { my $ref_astore = $db->selectall_hashref( "select table.date from table group by table.date order by table.date desc",'date' ); if (!defined($ref_astore)) { print "Error DBF: " . $db->errstr . "\n"; exit; } else { print join("\n",keys %{ $ref_astore } ); } } #### my $dir = "e:/db/"; if (-d $dir) { print "OK $dir\n"; opendir(my $dh, $dir) || die "Can't opendir $dir: $!"; print join("\n",readdir($dh)); closedir $dh; } my %dsn = Win32::ODBC::DataSources(); foreach my $key (sort keys %dsn) { print "
$key $dsn{$key}"; } ##
## OK e:/db/ . .. TABLE.DBF TABLE2.DBF TABLE3.DBF ... DB Microsoft dBase Driver (*.dbf) DSN Microsoft dBase Driver (*.dbf) EXDSN Microsoft dBase Driver (*.dbf)