Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


8889 / 13644 ツリー ←次へ | 前へ→

【30461】ADOを使用して権限設定 じぇっと 05/10/27(木) 22:37 質問[未読]
【30465】Re:ADOを使用して権限設定 こたつねこ 05/10/27(木) 23:19 発言[未読]
【30471】Re:ADOを使用して権限設定 ichinose 05/10/28(金) 10:08 発言[未読]
【30507】Re:ADOを使用して権限設定 じぇっと 05/10/29(土) 0:56 お礼[未読]

【30461】ADOを使用して権限設定
質問  じぇっと  - 05/10/27(木) 22:37 -

引用なし
パスワード
   久々にADOを使用しています。
かなり忘れています(汗)
ご教授願います。

*環境
・OS:WinNT4.0
・Excel:97
・Access:2.0
(XPでも同じ事象が発生します)

*目的
エクセルからADOを使用して、アクセスのテーブルからデータを抽出(読み取り)する。
アクセスのテーブルには、ユーザーがデータの読み取りをできないようになっている。
この権限設定をSQLを使用して、ユーザーからもデータの読み取りができるようにしてから、データの抽出を行う。

*問題点
権限設定の変更が実行できない。

*組んだコード
下記のようなコードを組みました。
始めにも申し上げましたが、久々にADOを使用しているので、見当違いのコードを組んでいるかもしれません。ご容赦願います。
下記コード内のコメント文「'☆エラー」の部分でエラーが発生してしまいます。
エラーの内容は『実行時エラー '-2147467259(80004005)';Jet データベースエンジンのワークグループ情報ファイルを開くことができません。』です。


Sub プロシージャ()

Dim cnn As Object
Dim rst As Object
Dim cmd As Object

Set cnn = CreateObject("ADODB.Connection")
Set rst = CreateObject("ADODB.Recordset")
Set cmd = CreateObject("ADODB.Command")

cnn.ConnectionString = "Provider=Microsoft.jet.OLEDB.4.0;" _
           & "Data Source=C:\アクセス.mdb"
cnn.Open
Set cmd.activeConnection = cnn
cmd.CommandText = "GRANT ALL PRIVILEGES ON テーブル TO PUBLIC;"
Set rst = cmd.Execute  '☆エラー

rst.Open "Select * FROM テーブル", cnn

Rem 読み取り処理

End Sub


以上です。
どなたかご存知の方はよろしくお願い致します。

【30465】Re:ADOを使用して権限設定
発言  こたつねこ  - 05/10/27(木) 23:19 -

引用なし
パスワード
   じぇっとさん、こんばんは

MDBにパスワード設定しているってことでしたら
>cnn.ConnectionString = "Provider=Microsoft.jet.OLEDB.4.0;" _
>           & "Data Source=C:\アクセス.mdb"
ここでパスワード指定して
cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" _
          & "Data Source=C:\アクセス.mdb;" _
          & "Password=パスワード;"

>Set rst = cmd.Execute  '☆エラー
>rst.Open "Select * FROM テーブル", cnn

Set rst=New ADODB.Recordset
rst.Open "Select * FROM テーブル", cnn

こんな感じでどうでしょうか?
動作確認できる環境にないので参考までに^^;

【30471】Re:ADOを使用して権限設定
発言  ichinose  - 05/10/28(金) 10:08 -

引用なし
パスワード
   ▼じぇっと さん、こたつねこさん、こんにちは。

>久々にADOを使用しています。
>かなり忘れています(汗)
>ご教授願います。
>
>*環境
>・OS:WinNT4.0
>・Excel:97
>・Access:2.0
>(XPでも同じ事象が発生します)
>
>*目的
>エクセルからADOを使用して、アクセスのテーブルからデータを抽出(読み取り)する。
>アクセスのテーブルには、ユーザーがデータの読み取りをできないようになっている。
>この権限設定をSQLを使用して、ユーザーからもデータの読み取りができるようにしてから、データの抽出を行う。
>
>*問題点
>権限設定の変更が実行できない。
>
>*組んだコード
>下記のようなコードを組みました。
>始めにも申し上げましたが、久々にADOを使用しているので、見当違いのコードを組んでいるかもしれません。ご容赦願います。
>下記コード内のコメント文「'☆エラー」の部分でエラーが発生してしまいます。
>エラーの内容は『実行時エラー '-2147467259(80004005)';Jet データベースエンジンのワークグループ情報ファイルを開くことができません。』です。
>
>
>Sub プロシージャ()
>
>Dim cnn As Object
>Dim rst As Object
>Dim cmd As Object
>
>Set cnn = CreateObject("ADODB.Connection")
>Set rst = CreateObject("ADODB.Recordset")
>Set cmd = CreateObject("ADODB.Command")
>
>cnn.ConnectionString = "Provider=Microsoft.jet.OLEDB.4.0;" _
>           & "Data Source=C:\アクセス.mdb"
>cnn.Open
>Set cmd.activeConnection = cnn
>cmd.CommandText = "GRANT ALL PRIVILEGES ON テーブル TO PUBLIC;"
>Set rst = cmd.Execute  '☆エラー
>
>rst.Open "Select * FROM テーブル", cnn
>
>Rem 読み取り処理
>
>End Sub
まず、

GRANT ALL PRIVILEGES ON テーブル TO PUBLIC
このSqlって、Mdbファイルで使えましたっけ?
私が調べた限りでは、その記述が見当たらないんですが・・・。
仮に可能だとして、

権限の変更を 読み取りも許されていないユーザーが
Sql一行で変更できたら、権限の意味があるのかなあ?
これは、管理者で接続して権限変更するのではありませんか?

ADOでの権限変更ですが、以下のサイトが参考に
なりませんか?

http://www.microsoft.com/japan/msdn/data/techmat/ado/dao2ado_6.asp

の「権限の設定」を参考にしてみてください。

尚、私もやったことがないのであしからず・・・。

【30507】Re:ADOを使用して権限設定
お礼  じぇっと  - 05/10/29(土) 0:56 -

引用なし
パスワード
   昨日から色々と調べて試してみました。
結果は、Mdbファイルでは「GRANT」SQLを使うことはできなさそうです。
確信はもてませんが、実行することはできませんでした。

こたつねこさん、ichinoseさん、
お忙しい中でのご回答をありがとうございました。

8889 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free