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 } ); } }