On Win32 you can connect directly to the access mdb file,
but it still is through DBD::ODBC. The following code is
a summarizaion of code I've used to manipulate pre-existing
ms access databases:
use strict;
use warnings;
use DBI;
my $file = 'c:/path/to/access/database.mdb';
my $dsn = 'dbi:ODBC:driver=Microsoft Access Driver (*.mdb);dbq=' . $fi
+le;
my $dbh = DBI->connect($dsn,undef,undef);
I'm not 100% sure this will solve your immediate problems, but it
has worked for me when there was no system wide DSN for the access
database. I do beleive this solution is documented somewhere
in the DBI/DBD pod documentation.
Also, for the creation of a new MDB file (which you can't otherwise
do without resorting to Win32 calls or ADO), I created a simple
empty database with Access, and then serialized it using MIME::Base64
and stuffed
the serialized version into a module so it was easy to just
create a new blank db:
use strict;
use warnings;
use BlankMDB;
BlankMDB->writeToFile('c:/path/to/file.mdb');