プロが教える店舗&オフィスのセキュリティ対策術

ACCESS2000で、別のデータベースAのテーブルを定期的に最新のものにするために、データベースBにテーブル作成クエリを作成します。Aを開くときにはパスワードが設定されているので、テーブル作成クエリでそのパスワードの入力を求められるため、正しく入力して実行するのですが、パスワードが正しくありませんとエラーになってしまいます。
Aのパスワードを解除して実行すればテーブルが作成できますが、パスワードを解除しないで作成する方法はないでしょうか。

A 回答 (2件)

> 正しく入力して実行するのですが、パスワードが正しくありませんとエラーになって


> しまいます。

こちらの環境(WinXP・Access2003)にて、同じエラーの発生を確認しました。
ただ、そのクエリをSQLビューにしてみたところ、入力したパスワードがそのまま
表示されてしまっていましたので、この方法でのテーブル更新はお勧めしません。
(デザインビューを表示した状態で、メニューから「表示(V)→SQL ビュー(Q)」を
 選択すると、SQLビューを確認できます)

ですので、代替策として、更新したいテーブルに対してリンクテーブルを作成し、
このテーブルに対して「削除クエリ」と「追加クエリ」を実行する方法を提案します。

【リンクテーブルの作成方法】
1)データベースウィンドウ(テーブル等の一覧が表示されている画面)の何もない
 ところを右クリックし、「テーブルのリンク(L)」を選択
2)『リンク』ダイアログが開くので、対象テーブルがあるデータベースを指定
3)『データベース パスワードの入力』ダイアログが開くので、パスワードを入力
4)『テーブルのリンク』ダイアログが開くので、対象テーブルを選択(→複数選択可)
 して、『OK』ボタンをクリック

【削除クエリの作成方法】
1)新規クエリをデザインビューで開く
2)『テーブルの表示』ダイアログで、上記で作成したリンクテーブルを選択し、
 『追加』ボタンをクリック(またはテーブル名のダブルクリックでも可)
3)上記ダイアログを『閉じる(C)』で閉じる
4)メニューで「クエリ(Q)→削除(D)」を選択して削除クエリに変更
5)追加したリンクテーブルから、「*」をドラッグ&ドロップ等でクエリの下半分の
 領域に追加
 (→『レコードの削除』欄に「From」と表示されます)
 ※削除対象を限定する場合は、対象フィールドを同様にして追加し、条件を指定。
  (→『レコードの削除』欄に「Where」と表示されます)
6)名前をつけて保存


・・・以上です。
追加クエリは、テーブル作成クエリと同様の方法で作成できますので省略します。

この回答への補足

DexMachina 様
ありがとうございます。あきらめかけていたところでした。
アドバイスのとおり、削除クエリと追加クエリではパスワード設定があっても無事テーブルを更新することができました。
ですが、更新するデータベースは、テーブルを隠しオブジェクトにしてあるため、予めそれを解除することが必要で、ひと手間かかってしまうため、パスワード解除とそう変わらないことになってしまいます。排他で開かなくていいのでちょっと楽ですが、データベース8個への作業なので、テーブル作成クエリでできるとうれしいのです。

前段のテーブル作成クエリのSQLビューについて教えてください。SQLビューを表示してみたのですが、パスワードは表示されていません。ここでパスワードの内容を修正することで、使えるようになるならうれしいのですが。
このテーブル作成クエリは、公開するデータベースとは別でこちらの作業用なので、パスワードが見えていても問題はありません。

よろしくお願いします。

補足日時:2009/12/21 10:14
    • good
    • 0
この回答へのお礼

DexMachina 様
隠しオブジェクトのせいでダメだったのは、最初削除・追加クエリを作成するときだけのようで、その後は隠しオブジェクトのままでも作業ができることがわかりました。うまくいきそうです。

どうもありがとうございました。

パスワードのことは・・・?は残ってはいますが、とりあえず解決をお知らせします。

お礼日時:2009/12/21 18:38

No.1です。


解決されたようで何よりです。

ただ、パスワード部分への引っかかりがあるとのことと、「隠しオブジェクト」の件で
ちょっと気になる点がありましたので、補足します。


【隠しオブジェクトの設定について】
隠しオブジェクトになっているテーブルやフォームは、その属性を変更しなくても、
メニューで「ツール(T)→オプション(O)」を選択して『オプション』ダイアログを開き、
『表示』タブの『表示』枠内(一番上の領域)の『隠しオブジェクト(H)』のチェックを
オンにすれば、表示されるようになります(但し通常のものと違って淡色表示)。

ですので、リンク先のデータベースを開いて属性を変更しなくても、インポートや
リンクは可能です。
(逆に言うと、この設定はセキュリティ対策にならず、「普段表示させておきたいか
 否か」という使い勝手のための設定、程度に考えておいた方が無難、と)


【パスワードとテーブル作成クエリについて】
結論から言うと、以下の手順を踏むと、他のデータベースに対するテーブル作成
クエリも実行可能になりました:

1)テーブル作成先のテーブル(中身は空でも可)に対するリンクテーブルを作成
 (→リンクテーブル作成時にパスワードを入力)
2)上記テーブルを開く
3)F11キーを押すなどして、上記テーブルを開いたまま、データベースウィンドウに
 戻る
4)テーブル作成クエリを新規作成
→上記リンクテーブルがバイパスとなるのか、テーブル作成先として、上記データ
  ベースを指定してもパスワードを要求されない
5)上記クエリを保存

これで、”上記リンクテーブルを開いた状態”で上記クエリを実行すると、指定
したデータベースに問題なくテーブルが作成されるようになります。

前回、「SQLビューにパスワードが」と言いましたが、上記の方法で作成すると、
SQLビューにパスワードは記録されませんでした。
(リンクテーブルを開いていない状態だと、末尾に「[;PWD=***]」が追加された
 SQLになります)

もしかしたら、他にも、パスワードが記録されずにクエリが作成される条件があって、
前回nyantavさんが経験されたのはそのパターンなのかもしれません。
(上記の方法だと、「4)」で書いたように、パスワードが要求されないので、若干
 状況は違いそう、と)

なお、作成テーブルと同名のテーブルが既存の場合、
 ・パスワードが追記されていないクエリ:
  「既存のテーブルは削除されます」の確認メッセージが出て、継続実行可
  (→同じデータベース内にテーブルを作成する場合と同様)
 ・末尾にパスワードが追記された状態のテーブル作成クエリ:
  「テーブル'○○'は既に存在しています」のメッセージが出て、処理が中止
という結果になりましたので、使い勝手から言うと上記の通りの手順を踏むのが
よいかと思います。
(あくまで、テーブル作成クエリで対応する場合、ですが:
 テーブル作成クエリでは、主キーやインデックスの再設定が面倒なので、
 そのままテーブル構造が残る「削除+追加」のクエリの方がお勧め)


・・・以上、蛇足ながら。
    • good
    • 0
この回答へのお礼

DexMachina 様
隠しオブジェクトの表示が、こちら側の設定でOKだとは知りませんでした。いちいち開いて表示して元に戻していました。助かります。

リンクテーブル作って、開いているときはテーブル作成ができることも確認しました。道ができているということなのでしょうか。

でも、アドバイスにしたがって、削除と追加で対応することにしました。新たに8個のデータベースのリンクテーブルを作りました。それぞれクエリを作って、マクロで組めば、ちょちょいのちょいでできるようになりそうです。

本当に助かりました。ありがとうございました。

お礼日時:2009/12/22 17:39

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!