1

アクセスはすべてのテーブルを取得するという質問への回答に基づいてコードを作成しましたが、次のエラーが発生します。

DBD :: ODBC :: stの実行に失敗しました:[Microsoft] [ODBCMicrosoftAccessDriver]レコードを読み取ることができません。'MSysObjects'の読み取り権限はありません。(SQL-42000)direct.plの22行目。

[Microsoft] [ODBCMicrosoftAccessドライバー]レコードを読み取ることができません。'MSysObjects'の読み取り権限はありません。(SQL-42000)direct.plの22行目。

これが私がこれまでに試したことです。私は最初の試みをコメントアウトしました。現在の試みは、アスタンダーが上記の質問に対する回答で言及したSELECT "Table"AS[Table]に基づいています。どちらの方法でも同じエラーが発生します。これが私のコード全体です:

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";
}
4

1 に答える 1

2

スキーマはどうですか?

http://www.cpan.org/authors/id/T/TL/TLOWERY/DBD-ADO-2.1.readme

于 2010-02-11T14:59:54.090 に答える