I sur la base de mon code sur la réponse à la question Access get all tables, mais je reçois l'erreur suivante:Comment utiliser SQL pour "Afficher les tables" dans une base de données MS Access?
DBD::ODBC::st execute failed: [Microsoft][ODBC Microsoft Access Driver] Record(s) cannot be read; no read permission on 'MSysObjects'. (SQL-42000) at direct.pl line 22.
[Microsoft][ODBC Microsoft Access Driver] Record(s) cannot be read; no read permission on 'MSysObjects'. (SQL-42000) at direct.pl line 22.
Voici ce que je l'ai essayé jusqu'à présent. J'ai commenté ma première tentative. La tentative actuelle est basée sur SELECT "Table" AS [Table] dont Astander mentionné dans sa réponse à dit question. Je reçois la même erreur de toute façon. Voici mon code, dans son intégralité:
use strict;
use warnings;
use DBI;
my $dbh = DBI->connect('DBI:ODBC:MutantDB','','')
or die 'could not connect to database' . DBI::errstr;
my $sth = $dbh->prepare('SELECT "Table" AS [Table],
MSysObjects.Name,
MSysObjects.Type
FROM MSysObjects
WHERE MSysObjects.Type =1
Or MSysObjects.Type=6
ORDER BY MSysObjects.Name;')
or die 'could not prepare statement' . $dbh->errstr();
# my $sth = $dbh->prepare('SELECT MSysObjects.*, MSysObjects.Type
# FROM MSysObjects
# WHERE (((MSysObjects.Type)=1)) OR (((MSysObjects.Type)=6));'
#) or die 'could not prepare statment' . $dbh->errstr();
$sth->execute() or die $sth->errstr();
while(my ($name, $type) = $sth->fetchrow()){
print "name: $name \t type: $type \n";
}
Ne serait-vous mieux avec un schéma? http://www.cpan.org/authors/id/T/TL/TLOWERY/DBD-ADO-2.1.readme – Fionnuala
Merci! Postez cela comme une réponse et je l'accepterai. –