テーブルを削除するには?

解決


たっち  2005-08-30 13:53:47  No: 124616  IP: [192.*.*.*]

今、データベースからアクセスにデータを取り込むというプログラムをつくって
います。
テーブル作成クエリを作り、実行してテーブルが作成されるまではよかったのですが、2回目以降「テーブルが存在するため実行できません」となってしまいます。
その度にアクセスを起動して一回一回テーブルを削除しているのですが、VB6で
テーブル自体を削除するプログラムというのはあるのでしょうか?

過去ログを検索したのですがちょっとわからなかったので
どなたかご教授お願いします。

編集 削除
id_rsa+  2005-08-30 14:02:10  No: 124617  IP: [192.*.*.*]

VBぢゃないけど、「DROP TABLE テーブル名」のSQLで。

編集 削除
medaka  2005-08-30 14:14:25  No: 124618  IP: [192.*.*.*]

T-SQLかPL-SQLか不明だけど
create の前に if で存在判定してなければcreateでいいんじゃないかな?
無条件にdropだと存在すればエラーでるかも?

編集 削除
たっち  2005-08-30 15:42:25  No: 124619  IP: [192.*.*.*]

ご返信ありがとうございます。

createを使ってどのように記述したらいいのでしょうか?
VB始めて間もないものでご迷惑をおかけしますが、
ご教授お願いします。

編集 削除
medaka  2005-08-30 16:05:43  No: 124620  IP: [192.*.*.*]

VB DB等環境によって変わってくるんじゃ?

編集 削除
たっち  2005-08-30 16:33:52  No: 124621  IP: [192.*.*.*]

これが環境でいいのかわかりませんが、VBはVB6で、DBはオラクルです。
プログラムは、下のように書いています。

strQry = "SELECT〜
strQry2 = "SELECT〜
strQry3 = "SELECT〜

Set cn = DataEnvironment1.Connection1
cn.Open

mRs.Open strQry, cn
D1_Qry = strQry
cn.Close

If D1_Qry = strQry Then
    cn.Open

    mRs.Open strQry2, cn   
    D2_Qry = strQry2
    cn.Close
        
End If

If D2_Qry = strQry2 Then
    cn.Open
    mRs.Open strQry3, cn
    cn.Close
End If

ここでstrQry,strQry2,strQry3を実行する前に、strQry,strQry2,strQry3で作成された前のテーブルを削除したいのですが。

編集 削除
id_rsa+  2005-08-30 16:52:14  No: 124622  IP: [192.*.*.*]

Accessにテーブルを作ってるんですよね??削除するのも・・

だったら、クエリで「DROP TABLE テーブル名;」で作って、
VBからテーブルを作る時と同じようにクエリを実行すれば良いんじゃない?
もちろん、テーブルが無い時に実行したらエラーになるけど。

編集 削除
もげ  2005-08-31 15:06:48  No: 124623  IP: [192.*.*.*]

Oracle→Access(MDB)へのテーブルコピーで、
テーブル作成クエリを利用したコピーの際に、
事前にAccess(MDB)側のテーブルを消したいということでいいですかね?

Accessがお判りなら、データ定義クエリを作成する方法もあります。
クエリの種類でメニューから「SQL」→「データ定義」を選んで、
窓に、
DROP TABLE テーブル名
と打ち込んで、適宜名前をつけて保存すれば、
あとはテーブル作成クエリと同じように、名前を指定して呼べばよいです。
エラーはOn Error Resume Nextで無視するか、
事前にテーブルの存在チェックを行うかです。
(MSysObjectsを読むか、DAO.TableDefsかADOX.Catalogを検索)
どこまでの前提知識があるのかわからないけど、
上記キーワードをもとに検索、調査してみてから、
不明点をポイント絞って再質問すれば解決が早いかも。

ちなみに、
テーブル作成クエリやデータ定義クエリなら
RecordsetとRecordsetのOpenは不要で、
cn.Execute "SQL文"  とか  cn.Execute "アクションクエリ名"
だけでいいですけど。
(前後の処理がわからないけどDataEnvironmentも無駄な気がする)

編集 削除
たっち  2005-08-31 17:33:01  No: 124624  IP: [192.*.*.*]

ご返信ありがとうございます。

おかげさまでようやく解決することができました。

id_rsa+さん、medakaさん、もげさん
どうもありがとうございました。
自分がいたらないせいで多大なご迷惑をおかけしました。

また何かわからないことがあった場合にはよろしくお願いします。

編集 削除