C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: アクセスのクエリを削除するには


(過去ログ 114 を表示中)

[トピック内 6 記事 (1 - 6 表示)]  << 0 >>

■67457 / inTopicNo.1)  アクセスのクエリを削除するには
  
□投稿者/ なるる♪ (5回)-(2013/08/04(Sun) 18:26:29)

分類:[.NET 全般] 

2013/08/04(Sun) 18:37:20 編集(投稿者)
2013/08/04(Sun) 18:36:09 編集(投稿者)

お世話になります。なるる♪と申します。
ADOXでアクセス2007で作成したmdbファイル(Test.mdb)に含まれるテーブル、
クエリの削除を行いたいですが、クエリだけ失敗します。

ADODB.Connection cn = new ADODB.Connection();
cn.Mode = ADODB.ConnectModeEnum.adModeReadWrite;
cn.Open(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source = " + strFileName + ";");

ADOX.Catalog catOut = new ADOX.Catalog();
catOut.ActiveConnection = cn;

catOut.Tables.Delete("TB1"); //テーブルは削除できる
catOut.Views.Delete("Q1"); //クエリが削除できない。

このとき、スローされたエラーには
要求された名前、または序数に対応する項目がコレクションで見つかりません。
というエラーが出ています。
Q1というクエリは確かに存在しているのですが。

Windows7 64bit Vs2010 C# プロジェクトはx86をターゲットに設定

どちら様かご教示のほど、よろしくお願いします。

                          なるる♪


引用返信 編集キー/
■67459 / inTopicNo.2)  Re[1]: アクセスのクエリを削除するには
□投稿者/ なるる♪ (6回)-(2013/08/04(Sun) 19:52:40)
追加情報です。
削除できないのはunionで連結したクエリであることがわかりました。

select * from Q_TB1 UNION select * from Q_TB3;

Q_TB1,Q_TB3はクエリです。


この場合、何か特別な方法とかがあるのでしょうか?

よろしくお願いします。

                    なるる♪
引用返信 編集キー/
■67460 / inTopicNo.3)  Re[2]: アクセスのクエリを削除するには
□投稿者/ しま (17回)-(2013/08/04(Sun) 22:29:12)
No67459 (なるる♪ さん) に返信
> 削除できないのはunionで連結したクエリであることがわかりました。
>
> select * from Q_TB1 UNION select * from Q_TB3;
>
> Q_TB1,Q_TB3はクエリです。

スレッド(話題の流れ)の始めには開発環境を示しましょう
例え、関連する質問が最近あったとしても忘れずに示して欲しいものです。
さて、*.mdb のクエリーが削除できないのは特定の場合らしいので削除するコードの書き方の問題ではなさそうです。
1. Q_TB1, Q_TB2, Q1 それぞれの削除順は現在どうなっていますか?
2. 削除順をかえるとどうなりますか?
引用返信 編集キー/
■67462 / inTopicNo.4)  Re[3]: アクセスのクエリを削除するには
□投稿者/ なるる♪ (7回)-(2013/08/05(Mon) 09:39:53)
2013/08/05(Mon) 09:45:20 編集(投稿者)
2013/08/05(Mon) 09:41:08 編集(投稿者)

しま様

削除しようとしているのはUNIONで連結したクエリのみです。
Q_TB1、Q_TB2は削除しておりません。

依存関係の影響はないと思いますが。

試しにQ_TB1、Q_TB2を先に削除してもUNIONクエリの削除でエラーは出ます。
※Q_TB1とQ_TB2間には参照の関連性はなし。

引用返信 編集キー/
■67473 / inTopicNo.5)  Re[1]: アクセスのクエリを削除するには
□投稿者/ 魔界の仮面弁士 (284回)-(2013/08/05(Mon) 21:11:55)
2013/08/05(Mon) 21:16:27 編集(投稿者)

No67457 (なるる♪ さん) に返信
> ADOXでアクセス2007で作成したmdbファイル(Test.mdb)に含まれるテーブル、
> クエリの削除を行いたいですが、クエリだけ失敗します。

未検証ですが、
 sql = "DROP VIEW Q1";
の SQL を実行するのはどうでしょうか。


> catOut.Views.Delete("Q1"); //クエリが削除できない。
ADOX ではなく、DAO の Delete メソッドではどうでしょうか?


> 要求された名前、または序数に対応する項目がコレクションで見つかりません。
選択クエリーの場合、パラメーターの無い物は Views コレクション、
パラメーター付きは Procedures コレクションに含まれていたと
記憶しています。(アクションクエリーも Procedures 扱い)

Union クエリーがどうだったかは覚えていませんが、さしあたり、
Views コレクションを列挙した時に、"Q1" という名前のオブジェクトが
存在しているかどうかを確かめてみては如何でしょう。

もし無ければ、他のコレクション(Procedures 等)に含まれてはいませんか?
引用返信 編集キー/
■67526 / inTopicNo.6)  Re[2]: アクセスのクエリを削除するには
□投稿者/ パル (13回)-(2013/08/07(Wed) 19:53:45)
2013/08/07(Wed) 22:43:19 編集(投稿者)

削除
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -