Win32::ODBC connexion à MS Access
Bonjour à tous,
Je tente de me connecter à une base de données MS Access via un script écrit en Perl.
Ma séquence de travail est la suivant :
- Installation du module avec ppm
- Recherche de l'orthographe exacte des drivers [Résultat--> Microsoft Acces Driver ($.mdb)]
Code:
1 2 3 4 5 6 7 8 9
| #!/usr/bin/perl
use strict;
use Win32::ODBC;
my %drivers = Win32::ODBC::Drivers();
foreach my $driver (sort keys %drivers){
print "Driver = $driver\n";
} |
- Utilisation de la méthode ConfigDSN pour configurer ma base de données comme source de données systèmes
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| #!/usr/bin/perl
use strict;
use Win32::ODBC;
# créer une source de données ODBC
my $DriverType = "Microsoft Access Driver (*.mdb)";
my $DSN = "age_sup_inf_14";
my $Description = "banque de données test";
my $DataBase = "age_sup_inf_14.mdb";
my $dir="c:\exo_perl_sig";
if(Win32::ODBC::ConfigDSN(ODBC_ADD_DSN,
$DriverType,
("DSN=$DSN",
$Description,
"DBQ=$dir\\$DataBase",
"DEFAULTDIR=$dir",
"UID=", "PWD="))){
print "content-type:text/html\n\n";
print "configuration de la source de données: $DSN effectué avec succès!\n";
}
else{
print "content-type:text/html\n\n";
print "erreur lors de la création de la source de données $DSN\n";
Win32::ODBC::DumpError();
die;
} |
- Tentative de connexion avec le script suivant :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| #!/usr/bin/perl
use strict;
#chargement du module Win32::ODBC
use Win32::ODBC;
my $db;
#ouverture de la connexion vers ma base de données
my $DSN = "DSN=age_sup_inf_14;";
if (! ($db = new Win32::ODBC($DSN))) { # création d'un objet avec vérification de la connexion
print "erreur lors de la liaison avec $DSN\n";
print "erreur: ". Win32::ODBC::Error() ."\n";
exit;
} |
Lors de l'exécution de ce dernier script, j'obtiens la réponse suivante :
erreur de liaison avec age_sup_inf_14
erreur : [-1044] [] "[Microsoft] [Pilot ODBC Microsoft Access] Nom de fichier incorrect;"
Je ne comprends pas pourquoi mon nom de fichier est incorrect.