2010-02-11 6 views
1

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"; 
} 
+1

Ne serait-vous mieux avec un schéma? http://www.cpan.org/authors/id/T/TL/TLOWERY/DBD-ADO-2.1.readme – Fionnuala

+0

Merci! Postez cela comme une réponse et je l'accepterai. –

Répondre

2
+0

Voici un meilleur lien vers DBD: ADO http://search.cpan.org/dist/DBD-ADO/lib/DBD/ADO.pm – daotoad

+0

Merci. De l'une des éditions de Sinan Ünür de mes messages, j'ai appris qu'il peut être encore plus concis. Utilisez http://search.cpan.org/perldoc? suivi du module d'intérêt, tel que http://search.cpan.org/perldoc?DBD::ADO –

Questions connexes